1. 存储模型
zk 的存储模型与 Linux 的文件系统非常相似,是一颗以 “/” 为根节点的树。树的每个节点被称为 ZNode,需要注意的是,zk是放在内存中的,每个节点的最大负载(Payload为1M)。zk 的持久化操作与 Redis 有异曲同工之处,都是通过日志存与快照存结合的方式。
2. 一致性
原子广播(Zab)协议:等过半数量的服务器回复ACK后,才进行 COMMIT 命令,另外有全局唯一 ID。
3. 选举模式
主节点挂掉之后,启动选举模式选取新的主节点,选举需要参考三个参数(选举轮数、事务ID、服务器编号),而且必须获得超过半数的赞成票才能上任(防止脑裂发生)。
4. Watcher 机制
zk 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听器,当 Znode 发生变化后会通知客户端,但是需要注意这个是一次性的。