您的位置:首页 > 其它

ZooKeeper_2_初识ZooKeeper

2017-09-02 22:16 190 查看
ZooKeeper是什么

Zookeeper是一个典型的分布式数据一致性的解决方案。

分布式应用程序可以基于它实现诸如 数据发布/订阅负载均衡命名服务分布式协调/通知集群管理等等

ZooKeeper有如下特性:

a. 顺序一致性

从同一个客户端发起的事务请求,最终将会严格的按照其发起顺序被应用到ZooKeeper中。

b. 原子性

所有事务请求的处理结果在整个集群所有机器上的应用情况是一致的。也就是说,整个集群要么都成功应用了某一事务,要么都没有应用。

一定不会出现集群中部分机器应用了该事物,而另一部分没有应用的情况。

c. 单一视图

无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。

d. 可靠性

一旦服务端成功应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更会一直保留下来;除非有另一个事务又对其进行了变更。

e. 实时性

通常人们看到事实性的第一反应是:一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的的最新数据。

这里需要注意:ZooKeeper仅仅保证在一定的时间段内,客户端最终一定能从服务端上读取到最新的数据状态

ZooKeeper的设计目标

目标一:简单的数据模型

目标二:可以构建集群

目标三:顺序访问

目标四:高性能

ZooKeeper的基本概念

1. 集群角色

ZooKeeper中有三种角色:Leader、Follower和Observer

Leader服务器为客户端提供读写服务

Follower和Observer角色服务器都能提供读服务。

2. 会话(Session)

客户端与服务器第一次链接之后,因为网络压力造成客户端与服务端主动断开,只要在sessionTimeout规定的时间内能够重连集群中任意一台服务器,

那么之前创建的会话仍然有效.

3. 数据节点(Znode)

在ZooKeeper中,节点有两层概念。

a. 集群中的某一台服务器,称为一机器个节点

b. 数据模型中的数据单元,称为数据节点--Znode;(结构像是Linux系统中的文件目录)

4. 版本

在ZooKeeper的每个ZNode节点上都会存储数据,对应每个ZNode;

ZooKeeper都会为其维护一个叫做Stat的数据结构,Stat中记录了三个数据版本:

version:当前ZNode版本

cversion:当前ZNode子节点的版本

aversion:当前ZNode的ACL版本

5. Watcher

Watcher事件监听器,是ZooKeeper中的一个很重要的特性。

ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发时,ZooKeeper服务端会将事件通知到客户端上

6. ACL

ZooKeeper采用ACL策略进行权限控制。

create:创建子节点的权限

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

write:更新节点数据的权限

delete:删除子节点的权限

admin:设置节点ACL的权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: