首页 > 代码库 > zookeeper介绍

zookeeper介绍

Zookeeper是一个典型的分布式数据一致性解决方案,分布式程序可以基于它实现比如发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能!zk可以保证一下分布式一致性特性

1.顺序一致性:从同一个客户端发起的事物请求,最终将会严格按照其发起顺序被应到zk中去。

2.原子性:所有事物请求处理的结果在整个集群中是一致的。

3.单一视图:无论客户端连接到哪个服务器,请求回来的结果数据都是一致的。

4.可靠性:一旦服务端成功的应用了一个事物,并完成对客户端的响应,那么该事物所引起的服务端状态变更将一直保留下来,除非有另一个事物对其进行变更

5.实时性:zk仅仅保证一定时间内,客户端最终一定能够从服务断上读取到最新数据

 

ZK中的角色

Leader:为客户端提供读和写服务

Follower(跟随者):为客户端提供读服务,参与选举leader

Observer(观察者):为客户端提供读服务,不参与leader选举,也不参与写操作的“过半写成功”策略,因此可以在不影响写性能的情况下提升集群的读性能

 

session

在zk中,一个客户端连接指客户端和服务端之间的一个TCP长连接。客户端启动时首先会与服务端建立一个TCP连接,通过这个连接客户端能够通过心跳检测与服务器保持有效的会话,也能够向zk服务器发送请求并接受响应,同时还能通过该连接接受来自服务器的Watch事件通知。

 

Watch

事件监听器,是ZK中的一个重要的特性。ZK允许用户在指定节点注册一些Watcher,并且在一些特定事件触发的时候,zk服务端会将事件通知到感兴趣的客户端上去,该机制是账zk实现分布式协调服务的重要特性

 

ACL

zk采用ACL策略来进行权限分配。zk定义了5种权限

create:创建子节点权限

read:获取节点数据和子节点列表的权限

write:更新节点数据的权限

delete:删除子节点的权限

admin:设置节点acl的权限

 

ZAB协议

原子消息广播协议作为zk数据一致性的核心算法。

ZAB协议的核心是定义了对于那些会改变ZK服务数据状态的事物请求的处理方式,即:

所有事物请求必须由一个全局唯一的服务器来协调处理,这样的服务器被称为leader服务器,而余下的服务器为follower服务器,leader服务器负债将一个客户端事物请求转换成一个事务提议,并将该提议分发给集群中的所有follower服务器。之后leader服务等待follower服务器的反馈,一旦超出半数的follower服务器进行了正确的反馈后,那么leader就会再次向有所follower服务器分发commit指令,要求其将前一个提议进行提交!

 

zookeeper介绍