Zookeeper

Zookeeper

Zookeeper的核心是一个精简的文件系统,利用临时节点与Watch机制实现集群的状态管理与配置管理。主要解决集群单点故障、集群列表的自动化更新和集群自动化配置问题。

1 状态管理
如图1,在根节点 /configcenter/ 下创建一个Master子目录用来管理集群上的Master节点。每当集群中一个Master启动后,会在Zookeeper服务器上/configcenter/Master/ 目录下创建一个EPHEMERAL类型的临时节点,例如/configcenter/Master/Master-1, /configcenter/Master/Master-2,每一个临时节点中记录了服务的名字和IP地址等信息。Master集群的客户端可以通过相应接口获取 /configcenter/Master/ 路径下所有的节点,也就是集群上所有Master列表的信息。当集群中Master Server宕机或者网络中断后,相应的节点会动态的从Zookeeper的文件目录中删除,或当有新的Master Server启动后会在/configcenter/Master/路径下创建新的节点。当客户端在/configcenter/Master节点下添加观察机制后,/configcenter/Master路径下所有数据的变更,例如子节点的增加或者减少,子节点存储数据的变更,都会第一时间通知客户端。

这里写图片描述
图1 Zookeeper目录结构

图2是Zookeeper管理集群的架构图,集群中的Consumer在调用Master Server服务之前,会首先到Zookeeper服务器中获取Master Server服务列表,每一个Client会在内部维护Master Server服务列表,采用合适的负载均衡策略,选取一台Master Server调用。每一个Client会Watch Zookeeper服务器的/configcenter/Master节点,当集群中的Master Server宕机或者网络中断,/configcenter/Master下所对应的子节点消失,当集群增加一个Master服务器,只需到Zookeeper相应目录注册,/configcenter/Master路径下会添加新节点的信息,无论删除还是添加子节点,Zookeeper都会立即通知所有Watch该Master节点的Client,获取新的集群存活的Master Server服务器列表,也就是/configcenter/Master路径下存在的节点。这样,我们无需在每个Client里维护Master Server集群的状态,因为Zookeeper可以让你永远在第一时间得到集群上存活的Server列表。
Zookeeper有自己的主从关系,有一个leader和多个follower,leader负责处理客户端的写操作和Zookeeper集群的数据同步,follower负责处理客户端的读操作。Zookeeper采用Zab协议进行leader的选举,选举的过程中涉及投票,因此一个集群上的Zookeeper的数量一般会选择奇数个。

这里写图片描述
图2 分布式架构

Zookeeper的核心其实就是Tire树、临时节点和Watch机制,客户端可以实时获得想要的集群列表,这里的“实时”是意思就是集群上的服务器增加或者宕机网络中断,客户端都会第一时间得到通知。

2 配置管理
当集群中的服务器比较多时,人工进行服务器的配置,难度大易出错。可以使用自动化配置管理工具Chef处理集群配置问题,类似的工具还有Puppet。Zookeeper也可以实现自动化的配置管理。原理与状态管理类似,Zookeeper的节点上存放的是配置文件。

3 Zookeeper参考资料:
 《Paxos到Zookeeper:分布式一致性原理与实践》http://item.jd.com/11622772.html
 《大型分布式网站架构设计与实践》:http://item.jd.com/11529266.html
 Zookeeper的同步机制:http://cailin.iteye.com/blog/2014486/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值