Zookeeper原理介绍

本文深入探讨了Zookeeper作为分布式应用的协作服务,详细解释了其运行模式、ZAB协议、虚拟文件系统及关键特性。阐述了Zookeeper如何通过复制模式确保高可用性和一致性,以及如何利用znode进行数据管理和协调。

Zookeeper可以运行在两种模式下,一种是机模式,机模式就是只有一个zookeeper service 这对测试非常方便,但不能保的高性能和高可靠性;另一种就是复制模式(集群模式),在种模式下,只要集群中的大多数正常工作,就可以提供定的高性能服,如五个点的ensemble,任意两个点失,服器仍然可以正常工作,实现原理很简单:确保znode的每一次修改都被复制到ensemble的大多数机器中。

Zookeeper使用zab协议,运行在两个段(状[phase]

Phase1leader elction

选举一个杰出的组员(一个zookeeper service),称之leader,其他的机器称之followers.

Phase2:Atomic broadcast

所有的写传递leaderleader广播更新followers。当大多数更改后,leader提交更新,同client得到响:更新成功。

如果leader,剩下的机器行另一个leader选举,如果以前的leader恢复,它将成一个followerleader elction非常快,大200ms,因此,在选举过程中不会是行你呢个著降低。

除了request processor, zookeeper的每个server都会在本地份其它件的拷. replicated database是一个包含整个数据的内存数据.更新被logged到磁以提供可恢复性,写操作先持久化到磁,然后再内存数据.

      每个zookeeper serverclient提供服.client接到具体的某一个server以提交.操作依与每个server的本地数据.,写操作,由一致性协议.

一致性协议的一部分,所有的client求被提交到专门的一个leader server. 其余的server,被称followers,leader接收消息,消息的传递达成一致.

      消息层负责失效leader并同步followers.zookeeper使用自定的原子消息传递协议.消息传递层是原子性的,zookeeper确保本地份不会出分歧.When the leader receives a write request, it calculates what the state of the system is when the write is to be applied and transforms this into a transaction that captures this new state.

        在使用上,zookeeper程接口特意做的非常简单.在此之上,你可以实现更高次的操作, 如同步原, 管理, 所有等等.

 

++++++++++++++++++++++++++

 

2.1 Katta和zookeeper的关系

2.4.1 什么是zookeeper?

zookeeper是针对分布式应用的分布式协作服务,它的目的就是为了减轻分布式应用从头开发协作服务的负担。

它的基本功能是命名服务(naming),配置管理(configuration management),同步(synchronization)和组服务 (group services)。在此基础上可以实现分布式系统的一致性,组管理,Leader选举等功能。

一个zookeeper机群包含多个zookeeper服务器,这些Server彼此都知道对方的存在。 Zookeeper系统结构图如图2所示:

 

 

                图2    zookeeper系统结构图

 

l.所有的Server都保存有一份目前zookeeper系统状态的备份;

2.在zookeeper启动的时候,会自动选取一个Server作为Leader,其余的Server都是Follower;

3.作为Follower的Server服务于Client,接受Client的请求,并把Client的请求转交给Leader,由Leader提交请求。

4.Client只与单个的zookeeper服务器连接。Client维护一个持久TCP连接,通过其发送请求, 获取响应和事件,并发送心跳信息。如果Client到Server的TCP连接中断, Client将会连接到另外一个Server。

5.zookeeper机群的鲁棒性是我们使用它的原因,只要不超过半数的服务器当机(如果正常服务的服务器数目不足一半,那么原有的机群将可能被划分成两个信息无法一致的zookeeper服务),该服务就能正常运行。

2.4.2 zookeeper的虚拟文件系统

Zookeeper允许多个分布在不同服务器上的进程基于一个共享的、类似标准文件系统的树状虚拟文件系统来进行协作。虚拟文件系统中的每个数据节点都称作一个znode。每个znode都可以把数据关联到它本身或者它的子节点.如图3所示:

 

 

 

         3 zookeeper的虚拟文件系统目录结构

1.每个znode的名称都是绝对路径名来组成的,如“/katta/index/index_name”等。

2.读取或写入znode中的数据都是原子操作,read会获取znode中的所有字节, write会整个替换znode中的信息.每个znode都包含一个访问控制列表(ACL)以约束该节点的访问者和权限.

3.有些znode是临时节点.临时节点在创建它的session的生命周期内存活, 当其session终止时,此类节点将会被删除.

4.zookeeper提供znode监听器的概念. Client可以在某个znode上设置监听器以监听该znode的变更. znode有变更时, 这些Client将会收到通知,并执行预先敲定好的函数。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值