Zookeeper

Zookeeper

1 Zookeeper角色

1547461927794

1547461946806

2 Zookeeper特点

最终一致性 : 为客户端展示同一个视图,这是zookeeper里面一个非常重要的功能.

可靠性 : 如果消息被到一台服务器接受,那么它将被所有的服务器接受.

实时性 : Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。

独立性 : 各个Client之间互不干预

原子性 : 更新只能成功或者失败,没有中间状态。

顺序性 : 所有Server,同一消息发布顺序一致。

3 zookeeper的节点及工作原理

1.每个Server在内存中存储了一份数据;

2.Zookeeper启动时,将从实例中选举一个leader(Paxos协议)

3.Leader负责处理数据更新等操作

4.一个更新操作成功,当且仅当大多数Server在内存中成功修改数据。

Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议

Zab协议有两种模式,它们分别是恢复模式广播模式

当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大部分的followers支持.

广播模式需要保证proposal被按顺序处理,因此zk采用了**递增的事务id号(zxid)**来保证。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。

当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确的状态。

4 Znode节点

​ Znode有两种类型,短暂的(ephemeral)和持久的(persistent)

​ Znode的类型在创建时确定并且之后不能再修改

​ 短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点

​ 持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除

​ Znode有四种形式的目录节点

​ PERSISTENT、持久的

​ EPHEMERAL、短暂的

​ PERSISTENT_SEQUENTIAL、持久且有序的

​ EPHEMERAL_SEQUENTIAL 短暂且有序的

5 Zookeeper的方法(API)

1547462712710

5 Zookeeper总结

​ Zookeeper 作为 Hadoop 项目中的一个子项目,是Hadoop 集群管理的一个必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的NameNode,还有 Hbase 中 Master、 Server 之间状态同步等。

​ Zoopkeeper 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型。

你可能感兴趣的:(Zookeeper)