zk事务提交
在zk中,客户端会随机连接到zk集群的一个节点,如果是读请求,则直接读取数据;如果是写请求,那么请求会转发给leader去提交事务,随后leader会广播事务,如果超过半数节点写入成功,那么写请求就会被提交
过程:
- 客户端发起一个写请求。
- 如果是 follower 节点接收到该请求,那么它会将该请求转发给 leader 节点处理。
- leader 会把这个请求转化成一个事务 Proposal(提议),并把这个 Proposal 分发给集群中的所有 Follower 节点(Observer不会被转发)。
- Leader 节点需要等待所有 Follower 节点的反馈,一旦超过半数的 Follower 节点进行了正确的反馈(执行事务成功),那么 Leader 就会再次向所有的 Follower 节点发送 commit 消息,要求各个 follower 节点对前面的一个 Proposal 进行提交。
- leader 节点将最新数据同步给 observer 节点。
- follower 节点将结果返回给客户端。