分布式服务协调框架分布式服务协调框架ZooKeeper
ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务框架,它可以实现同步服务,配置维护、命名
服务、分布式锁等分布式基础服务。
ZooKeeper数据模型
Zookeeper提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主
要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
数据模型
Zookeeper会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如图:
与Linux文件系统不同的是,Zookeeper的数据节点称为znode,znode是Zookeeper中数据的最小单元,每个znode都可以保
存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。
znode结构
每个znode节点既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每
个znode由3部分组成:
stat:状态信息, 描述该Znode的版本, 权限等信息
data:与该znode关联的数据
children:该znode下的子节点
节点类型
Zookeeper中znode的节点创建时候是可以指定类型的,主要有下面几种类型:
PERSISTENT: 持久化znode节点,一旦创建这个znode点存储的数据不会主动消失,除非是客户端主动的delete。
EPHEMERAL: 临时znode节点,Client连接到Zookeeper Service的时候会建立一个Session,之后用这个Zookeeper连接实
例创建该类型的znode,一旦Client关闭了Zookeeper的连接,服务器就会清除Session,然后这个Session建立的ZNode节点
都会从命名空间消失。临时节点不允许拥有子节点。
PERSISTENT_SEQUENTIAL: 顺序自动编号的znode节点,这种znode节点会根据当前已近存在的znode节点编号自动加
1。
EPEMERAL_SEQUENTIAL: 临时自动编号节点,znode节点编号会自动增加。
Watcher数据变更通知