ZooKeeper处理写请求时序和Observer

如下图,节点2是leader

  1. 客户端向节点1发起一个写请求,客户端和节点1建一个session
  2. 节点1将写请求转发给节点2
  3. 节点2向所有节点发起propose
  4. 其他节点收到propose后,返回给节点2一个accept消息
  5. 节点2收到大多数节点的accept消息后,向所有节点发送commit消息。
  6. 节点1收到commit消息后,响应客户端写请求成功


Observer

Observer不参加ZooKeeper的事务提交和选举。
与其他节点的唯一交互是接收来自leader的inform消息,更新自己本地存储。


Observer作用

  • 提升读性能
  • 实现跨数据中心的部署
    比如:
    我们需要部署北京和香港两地都可以使用的 ZooKeeper服务。我们要求北京和香港的客户端请求的延迟都低。因此,我们在北京换个香港都部署ZooKeeper节点。
    我们假设leader节点在北京。如果不使用observer,那么每个来自香港的写请求要涉及leader和每个香港follower节点之间的propose、ack、和commit三个跨区域消息。
    解决方案就是把香港的节点都设成observer。上面提到的propose、ack和commit消息都变成inform一个跨区消息。


配置Observer

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容