美文网首页
ZooKeeper处理写请求时序和Observer

ZooKeeper处理写请求时序和Observer

作者: 金果儿 | 来源:发表于2020-03-03 15:38 被阅读0次

如下图,节点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

相关文章

网友评论

      本文标题:ZooKeeper处理写请求时序和Observer

      本文链接:https://www.haomeiwen.com/subject/wcfhlhtx.html