Zookeeper面试题

题目

zookeeper 是如何保证事务的顺序一致性的?

答案

zookeeper 采用了全局递增的事务 id 来标识。假设有一个 zookeeper 集群,客户端有一个写请求操作请求到一个 flower 节点的时候,flower 不会处理这个操作,而是交给 leader 来处理。leader 会为每个请求生成一个 zxid。(高 32 位是 epoch,用来标识 leader 选举周期,每次一个 leader 选举出来,都会有一个新的 epoch ,标识当前属于哪个 leader 同志时期,低 32 位用于递增计数。)当新产生 proposal 的时候,会依据数据的两阶段过程,首先会向其他的 flower server 发送事务执行请求,有一半的机器都能执行并且能够成功,那么就开始执行。