日期:2014-05-16  浏览次数:20743 次

Amoeba 读写分离 和 数据切分

Amoeba 版本 0.12? (当时搜这篇文章主要是看Amoeba 的时间函数是什么。嘿。)

一、Master/Slave 结构读写分离
Master: server1 (可读写)
slaves:server2、server3、server4(3个平等的数据库。只读/负载均衡)

amoeba提供读写分离pool相关配置。并且提供负载均衡配置。
可配置server2、server3、server4形成一个虚拟的 virtualSlave,该配置提供负载均衡、failOver、故障恢复功能

Xml代码
  1. <dbServer?name="virtualSlave"?virtual="true">??
  2. ????<poolConfig>??
  3. ????????<className>com.meidusa.amoeba.server.MultipleServerPool</className>??
  4. ????????<!--?负载均衡参数?1=ROUNDROBIN?,?2=WEIGHTBASED?-->??
  5. ????????<property?name="loadbalance">1</property>??
  6. ??????????????????
  7. ????????<!--?参与该pool负载均衡的poolName列表以逗号分割?-->??
  8. ????????<property?name="poolNames">server2,server3,server4</property>??
  9. ????</poolConfig>??
  10. </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

Xml代码
  1. <queryRouter>??
  2. ????<className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>??
  3. ????<property?name="LRUMapSize">1500