深入了解Zookeeper系列

1.Zookeepr是什么

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

2.zookeeper可以保证的分布式一致性

a.顺序一致性

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

b.原子性

       所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的。

c.单一视图

       任意客户端看到的服务器数据模型都是一致的

d.可靠性

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

e.实时性

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

 3.zookeeper的设计目标

目标一:简单的数据模型

Zookeeper使的分布式程序能通过哟个共享的、树型结构的名字空间来进行相互协调(和windows系统的文件结构相同,是有一系列的ZNode节点之间的层级关系构成)

目标二:可构建集群

       3到5台机器就可以组成一个可用的zookeeper集群

目标三:顺序访问

对于来自客户端的每一个更新请求,zookeeper都会分配一个全局唯一的递增编号,这个编号反应了所有事务操作的先后顺序。

目标四:高性能

 Zookeeper把所有的节点数据都存储在内存中(提高了服务器吞吐、减少了延迟),并直接服务于客户端所有非事务请求,因此尤其适用于以读操作为主的应用场景。

 4.zookeeper的基本概念

 集群角色

在 zookeeper 集群中,各个节点总共有三种角色,分别是:leaderfollowerobserver

而不是Master/slave(主备机模式)

       会话(session

Session是指客户端的会话,Zookeeper对外的端口默认2181可以通过sessionTimeout设置会话超时时间,由于服务器压力、网络原因或客户端主动断开等原因使客户端链接断开,只要在sessionTimeout规定时间内就能够重新链接上集群的任意一台服务器,之前的会话仍然有效。

数据节点(ZNode

       ZNode保存在zookeeper内存中,数据模型是一个树(ZNode Tree)由(/)进行分割路径

 版本

每个节点都会存储数据,zookeeper会为其维护一个Stat的数据结构,其中包括三个版本信息

cversion= 0  子节点的版本号

aclVersion= 0   表示acl的版本号,修改节点权限

dataVersion= 1  表示的是当前节点数据的版本号

 

Watcher

Watcher(事件监听器),非常重要的特性。Zookeeper允许用户在指点节点上注册一些Watcher,并在一些特定的事件触发的时候,通知客户端(可实现分布式协调服务)

ACL

权限控制

CREATE:创建子节点的权限

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

WRITE:更新节点数据的权限

DELETE:删除节点数据的权限

ADMIN:设置节点ACL的权限


参考《从Paxos到Zookeeper 分布式一致性原理与实践》

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐