一、Zookeeper 读写机制
非事务请求为读,事务请求为写。
每个 server 保存一份数据副本,就是每个 server 都会有自己的一份数据副本,每个数据副本的内容都是统一的,在更改数据副本时,超过一半的 server 成功更改后,就认为是更改成功了。
二、Zookeeper 保证机制
更新请求顺序进行,来自同一个 client 的更新请求按其发送顺序依次执行。因为 Leader 会为每个 server 提供一个队列,请求会进入队列,实行先进先出的策略,然后排队依次进行处理。
因为每个 server 都保存一份数据副本,而且每个 server 的数据副本内容是一致的,所以 client 无论连接到哪个 server,数据视图都是一致的。
实时性,在一定范围内,client 能读到最新数据。为什么是一定范围内呢?因为这里涉及到过半提交的策略,超过一半的 server 更新成功 Leader 就认为更新成功。(Paxos 算法)
三、Watcher------ 数据变更的通知
比如,创建一个根节点 root,在 root 下创建 10 个 ZNode 子节点,如果在根节点 root 上创建一个子节点变更的 Watcher 监听的话,如果我删除了某个子节点的话,比如删除 Znode1,那么就说明子节点发生了变化,那么客户端就会在下一次心跳的时候,获得这个感知来执行客户端的操作,比如分布式锁、分布式队列等,都可以通过监听机制来实现。