Mysql容灾示意图
如上图所示,zookeeper上的master节点存储当前主节点名称;servers下面保存在线的节点,命名规则一般为ip:port_序列号;nodeid为当前的序列号,每当节点获取一个序列号时,该节点值自就增,以便于分配给下一个节点。 过程如下:
? 初始化阶段,创建servers,master,nodeid节点
? 每个client创建servers子节点,zoo_create(\? zoo_get_child(/servers,NULL)
? 若当前client的序列号id是当前最小的节点,则当前节点是master,设置
master节点退出
? 否则,zoo_exsists(lastid before id,watcher)//当前节点watch比当前
节点id次小的那个节点的状态
? 如果id不存在,那么退出否则等待watch触发,重新选举master
三、 总结:
Zookeeper是针对大型分布式系统的高可靠的协调系统。Zookeeper不是让分布式系统避免“部分失败”问题,而是让分布式系统当碰到部分失败时候,可以正确的处理此类的问题,让分布式系统能正常的运行。
Zookeeper 能够很容易的实现数据库集群管理的功能,如有多台 MysqlServer 组成一个服务集群,那么必须要一个“总管”知道当前集群中每台数据库的服务状态,一旦有某台数据库不能提供服务,集群中其它集群必须知道,从而做出调整重新分配服务策略。
相关推荐: