当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-Zookeeper集群中节点之间数据是如何同步的

金三银四精选java面试题-Zookeeper集群中节点之间数据是如何同步的

来源:图灵教育
时间:2023-12-21 13:07:55
 

Zookeeper集群中节点之间数据是如何同步的

  1. 首先集群启动时,会先进行领导者选举,确定哪个节点是Leader,哪些节点是Follower和Observer
  2. 然后Leader会和其他节点进行数据同步,采用发送快照和发送Diff日志的方式
  3. 集群在工作过程中,所有的写请求都会交给Leader节点来进行处理,从节点只能处理读请求
  4. Leader节点收到一个写请求时,会通过两阶段机制来处理
  5. Leader节点会将该写请求对应的日志发送给其他Follower节点,并等待Follower节点持久化日志成功
  6. Follower节点收到日志后会进行持久化,如果持久化成功则发送一个Ack给Leader节点
  7. 当Leader节点收到半数以上的Ack后,就会开始提交,先更新Leader节点本地的内存数据
  8. 然后发送commit命令给Follower节点,Follower节点收到commit命令后就会更新各自本地内存数据
  9. 同时Leader节点还是将当前写请求直接发送给Observer节点,Observer节点收到Leader发过来的写请求后直接执行更新本地内存数据
  10. 最后Leader节点返回客户端写请求响应成功
  11. 通过同步机制和两阶段提交机制来达到集群中节点数据一致