用Zookeeper实现数据库去中心化以及读写分离设计

来源:互联网 发布:日本和韩国知乎 编辑:程序博客网 时间:2024/05/01 06:32

 

 

 




A为master数据库,B1、B2为A的slave,C1、C2为B1的slave(B1自然也为C1、C2的master),D1、D2为B2的slave(B2自然也为D1、D2的master),ZK1-ZK5构成去中心化的服务器状态管理集群。

正常情况下A负责数据的写请求(增,删,改),数据的读请求轮询分发到B,C,D服务器上。
当A宕机时就选择B组中的一台(比如B1)做为Master来负责数据的写请求(增,删,改),也就是将数据库的写请求发到B1,数据的读请求轮询分发到C1,C2服务机器上。硬件故障以后就要及时维修服务器,并且要以B1作为Master按照上面的结构来布局。

代码可参考Nut(lucene + hadoop 分布式搜索运行框架)中Zookeeper服务器状态管理的实现。