zookeeper 初识

简介
Zookeeper是一个开源的 分布式应用程序协调服务,是Google的chubby的一个开源的实现,是hadoop和hbase的重要组件,它是一个为分布式应用提供一致服务的软件,提供的功能包括:配置维护,名字服务,分布式同步,组服务等。

Zookeeper代码版本中提供了分布式独享锁,选举,队列的接口,代码在zookeeper的src/recipes目录下,其中分布锁和队列有Java和C两个版本,选举只有Java版本。

原理:
Zookeeper的核心是 原子广播,这个机制保证了各个Server之间的同步,实现这个机制的协议叫做 Zab协议。Zab协议有两种模式,它们分别是 回复模式(选主)广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步后,回复模式就结束了,状态同步保证了leader和Server具有相同的系统状态。

为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。

每个Server在工作工程中有三种状态:
Looking:当Server不知道leader是谁,正在搜寻
Leading:当前server即为选举出来的leader
Following:leader已经选举出来,当前Server与之同步

常用的概念:
角色:Leader、Follower、Observer。 
数据单元:Znode(Path) 
监听器:Watcher

下载地址:
http://zookeeper.apache.org/releases.html#download
zookeeper 初识_第1张图片

你可能感兴趣的:(zookeeper 初识)