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