美文网首页
《zk:分布式过程协同技术详解》读书笔记2-内部原理篇

《zk:分布式过程协同技术详解》读书笔记2-内部原理篇

作者: 垃圾简书_吃枣药丸 | 来源:发表于2021-08-23 11:30 被阅读0次

9.1 请求、事务和标识符zxid

  • zk服务器会在本地处理只读请求(如,getData,getChildren,exists).
  • 那些会改变zk状态的客户端请求(create, delete和setData)将会被转发给Leader,由Leader执行响应的请求并形成状态的更新,且每次更新都会形成一个事务。以setData为例,变更节点的数据但是不变更节点的版本号将导致错误发生,因此,zk集群以事务的方式运行,确保所有的变更操作以事务的方式被执行,同时不会被其他事务所干扰。
  • 当Leader产生了一个事务,就会为这个事务分配一个标识符,称之为zk的会话id(zxid),通过zxid对事务进行标识,这样就可以实现按照Leader所指定的顺序在各个服务器中顺序执行。
  • 服务器之间在进行Leader选举的时候也会交换zxid,从而判断哪个无故障的服务器接收了更多的事务,并可以同步服务器之间的状态信息。
  • zxid为一个long(64位)的整数,分为两部分,时间戳epoch和计数器counter部分,每个部分为32位。

9.2 群首Leader选举

  • 先比较zxid(事物ID)再比较sid(myid)

9.3 Zab:状态更新的⼴播协议

  • Zab协议: Zookeeper原子广播协议 Zookeeper Atomic Broadcase protocol
  • 该协议提交一个事务的过程类似于两阶段提交
    1. 群首在接收到写请求后,会向所有的Follower发送一个PROPOSAL(提议)消息P
    2. FOLLOWER接收到消息p后,会响应群首一个ACK消息,通知群首已接收该提案PROPOSAL
    3. 当收到仲裁数量(超过集群数量的一半)的服务器的ACK(包括群首自己)后,群首就会发送消息通知FOLLOWER进行提交COMMIT操作。
image.png

相关文章

网友评论

      本文标题:《zk:分布式过程协同技术详解》读书笔记2-内部原理篇

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