Amoeba 版本 0.12 (当时搜这篇文章主要是看Amoeba 的时间函数是什么。嘿。)
一、Master/Slave 结构读写分离:
Master: server1 (可读写)
slaves:server2、server3、server4(3个平等的数据库。只读/负载均衡)
amoeba提供读写分离pool相关配置。并且提供负载均衡配置。
可配置server2、server3、server4形成一个虚拟的 virtualSlave,该配置提供负载均衡、failOver、故障恢复功能
-
<dbServer name="virtualSlave" virtual="true">
-
<poolConfig>
-
<className>com.meidusa.amoeba.server.MultipleServerPool</className>
-
-
<property name="loadbalance">1</property>
-
-
-
<property name="poolNames">server2,server3,server4</property>
-
</poolConfig>
- </dbServer>
<dbServer name="virtualSlave" virtual="true">
<poolConfig>
<className>com.meidusa.amoeba.server.MultipleServerPool</className>
<!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED -->
<property name="loadbalance">1</property>
<!-- 参与该pool负载均衡的poolName列表以逗号分割 -->
<property name="poolNames">server2,server3,server4</property>
</poolConfig>
</dbServer>
如果不启用数据切分,那么只需要配置QueryRouter属性
wirtePool=server1
readPool=virtualSlave
-
<queryRouter>
-
<className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>
-
<property name="LRUMapSize">1500</property>
-
<property name="defaultPool">server1</property>
-
-
<property name="writePool">server1</property>
-
<property name="readPool">virtualSlave</property>
-
-
<property name="needParse">true</property>
- </queryRouter>
<queryRouter>
<className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>
<property name="LRUMapSize">1500</property>
<property name="defaultPool">server1</property>
<property name="writePool">server1</property>
<property name="readPool">virtualSlave</property>
<property name="needParse">true</property>
</queryRouter>
那么遇到update/insert/delete将 query语句发送到 wirtePool,将 select发送到 readPool机器中执行。
二、数据切分:
这方面amoeba显然更加容易了。
举个数据切分例子:
select * from user_event where user_id='test' and gmt_create between Sysdate() -1 and Sysdate()
如果根据gmt_create 时间进行数据切分,比如 6个月进行切分一次
amoeba提供利用类似sql表达式进行数据切分:
规则1:GMT_CREATE > to_date('2008-01-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-05-31','yyyy-mm-dd')
规则1对应服务器1
规则2:GMT_CREATE > to_date('2008-06-01','yyyy-mm-dd') and GMT_CREATE < to_date('2008-12-31','yyyy-mm-dd')
规则2对应服务器2
上面的sql的条件 gmt_create 与规则里面的的gmt_create 进行 交集判断,如果存在交集则表示符合规则。
则会将sql转移到 规则1 的相应的服务器上面执行。
利用amoeba写出这种类似规则很容易,但是要想做到数据切分以后可线性扩容,那么这样的规则需要自己根据业务实际情况进行设置。
amoeba可同时将sql 并发分发到多台服务器、然后将结果合并再反馈给客户端,而且amoeba内部现成采用无阻塞模式,工作线程是不会等待的,并发请求多台 database server情况下,客户端等待的时间基本上面是性能最差的那台 database server+amoeba内部解析协议的时间
分享到:
相关推荐
这是针对amoeba for mysql的一个具体案例,实现水平切分和读写分离
通过配置数据库链接池、虚拟服务器,实现读取的负载均衡; 需安装java SE 1.6并配置环境变量(Amoeba框架是基于Java SE1.5开发的,建议使用Java SE 1.5...目前Amoeba经验证在JavaTM SE 1.5和Java SE 1.6能正常运行。
MySQL搭建Amoeba_读写分离.docx
淘宝的amoeba和mysql-proxy配置事例 linux下mysql读写分离配置,实现多台mysql服务器之间数据自动同步
这个软件基于Java致力于MySQL的分布式数据库前端代理层,处于在应用和数据库之间,对客户端透明,它主要... 通过Amoeba能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多企业的生产线上面使用。
Amoeba搞定mysql主从读写分离
mysql读写分离 中间件amoeba配置文件配置号的改几个参数就可以直接用https://blog.csdn.net/z13615480737/article/details/79951505 参考这个改2个文件就可直接用
windows平台用amoeba+mysql-5.7.17.msi实现读写分离。
amoeba和mycat方式实现 数据库读写分离的详细步骤
Amoeba主要解决以下问题: a). 数据切分后复杂数据源整合 b). 提供数据切分规则并降低数据切分规则给数据库带来的影响 c). 降低数据库与客户端连接 d). 读写分离路由 通过Amoeba实现读写分离
amoeba作为阿里使用的一个读写分离中间件,文档是基于mysql读写分离部署说明,非常详细地介绍了配置过程和测试方法
Amoeba+mysql 读写分离 Keepalived+mysql 配置 无软件包
Amoeba搞定mysql主从读写分离.pdf
amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk; 前期准备工作: 1.两个数据库,一主一从,主从同步; master: 172.22.10.237:3306 ...
mysql读写分离方法; mysql基于amoeba的读写分离。。。。
数据库读写分离中间件amoeba-n.tar.gz
配置amoeba.xml文件 ......................................... 13 启动 Amoeba ...............................................14 ..............................Windows安装部分............... 设备需求 ...
内容概要:废话不多说哦,本资源以实战为主,在本次实战中,应用程序client基于c3p0...通过本次案例实战,掌握mysql读写分离的基本原理和实战操作手法,结合案例的代码和配置,能快速轻松上手的解决读写分离的问题。
MySQL主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力 这样的方案来进行部署与实施的