前言

        因为之前做开发也接触到ZooKeeper,是以服务注册中心的方式来使用ZooKeeper,因为现在要探索分布式事务的问题,所以系统性的学习一下ZooKeeper。ZooKeeper是什么呢?Zookeeper是一个开放源代码的分布式协调服务。它的设计目标是将那些复杂而且容易出错的分布式一致性服务封装起来。构成一个高效可靠的API提供给用户使用。

ZooKeeper是什么

        Zookeeper是一个典型的分布式数据一致性的解决方案。ZooKeeper可以保证分布式一致性的特性。

①顺序一致性:同一个客户端发起的请求,最终会严格地按照发起的顺序被应用到ZooKeeper中去。

②原子性:所有的事务请求结果在整个集群的所有机器的应用情况是一致的,要么全部应用,要么全部不应用。

③单一视图:无论客户端链接的是哪个ZooKeeper服务器,在服务端数据模型都是一致的。

④可靠性:一旦服务端应用了一个事务,并完成了对客户端的响应,改事务所引起的服务端状态变更会一直保存下来。

⑤实时性:Zookeeper保证在一定的时间段内,客户端最终能够从服务器上读取到最新的数据状态。

 

ZooKeeper致力于提供一个高性能高可用具有严格的顺序访问控制能力的分布式协调服务

 

Zookeeper的基本概念

1.集群角色

在ZooKeeper集群环境中,存在Leader、Follower、Observer。这三种角色。集群中所有的机器通过选举的方式产生一个Leader,除了Leader之外,其他的机器都是Follower和Watcher。这两者的区别以后会解释。

2.会话

会话,也就是session是指一个客户端通过TCP长连接的方式和服务器之间建立的通信。客户端能够通过心跳检测与服务器保持有效的会话和接收服务器端的Watch时间通知。如果服务器出现不可用,那么会在sessionTimeOut的时间范围内,客户端能重新连接上其中任意一台集群中的机器,则会话仍然有效。

3.数据节点

在ZooKeeper中,节点分为两类 。一类是集群中的机器,我们称为机器节点。第二类是数据模型中的数据单元。

4.版本

暂不做解释

5.WATCHER

ZooKeeper允许用户再指定的节点上注册Watcher。在某些动作的触发下,服务端会把事件通知到客户端。在Dubbo分布式项目中,就广泛地使用到这个特性。

6.ACL

采用ACL的策略来进行权限控制。create创建子节点权限,read-获取节点数据和子节点的列表数据,write-更新节点数据的权限,delete-删除子节点的权限,admin设置节点acl的权限。

转载于:https://www.cnblogs.com/sunshine798798/p/9739857.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐