1) znode
可以将ZooKeeper看作一个具有高可用性的文件系统,这个文件系统没有文件和目录,只有节点,称为znode。znode可以保存数据(如同文件),还可以保存其它zode(如同目录)。
两种类型znode: 短暂和持久。创建znode的客户端断开连接时,无论客户端是明确断开还是因为任何原因而终止,短暂znode都会被ZooKeeper服务删除。对于持久znode,客户端断开连接,znode不会被删除。短暂znode不可以有子节点
2)访问
ZooKeeper的数据访问具有原子性。
3)实现
两种运行模式:独立模式和复制模式
ZooKeeper保证的是znode树的每一个修改都会被复制到集合体中超过半数的机器上
使用Zab协议,协议包括两个阶段:
a. 领导者选举
所有机器选举出一个leader,其他的机器被称为follower,一旦半数以上follower已经将其状态与领导者同步,这个阶段完成;
b. 原子广播
所有写请求都转发给领导者,再由领导者转播给follower。只有半数以上的follower更新成功了,leader才会提交更新,告知客户端;
若leader出现故障,其余机器会重新选出另外一个领导者;