简单的API
create
在树中的某个位置创建一个节点
delete
删除一个节点
exists
测试某个位置是否存在节点
get data
从节点读取数据
set data
将数据写入节点
get children
检索节点的子节点列表
sync
等待数据传播
实现
复制数据库是包含整个数据树的内存数据库。更新会记录到磁盘以实现可恢复性,并且写入会在应用到内存数据库之前序列化到磁盘。
每个 ZooKeeper 服务器都为客户端提供服务。客户端仅连接到一台服务器来提交请求。读取请求由每个服务器数据库的本地副本提供服务。更改服务状态的请求(写入请求)由协议协议处理。
作为协议的一部分,来自客户端的所有写入请求都被转发到称为领导者的单个服务器。其余的 ZooKeeper 服务器(称为追随者)接收来自领导者的消息建议并就消息传递达成一致。消息传递层负责在失败时更换领导者并将追随者与领导者同步。
ZooKeeper 使用自定义原子消息传递协议。由于消息传递层是原子的,ZooKeeper 可以保证本地副本永远不会分歧。当领导者收到写入请求时,它会计算要应用写入时系统的状态,并将其转换为捕获此新状态的事务。
评论区