Zookeeper 通过ZAB保持分布式事务的最终一致性
https://img.jacian.com/note/img20201228214732.png
所有事务必须由一个 全局唯一的服务器来协调处理 ,这样的服务器被称为Leader服务器,余下的服务器则称为Follower服务器
Leader服务器负责将一个客户端事务请求转化为一个事务Proposal(提案),并将该Proposal分发给集群中所有的Follower服务器
Leader服务器等待所有Follower服务器的反馈,一旦超过半数的Follower服务器进行了正确的反馈后,Leader就会向所有的Follower服务器发送Commit消息,要求将前一个Proposal进行提交。
https://www.cnblogs.com/Jacian/p/14212401.html
数据处理流程:
1)请求-》2)日志zxid自增 3)持久化 4 )更新dataTree
1)Leader ,领导者选举机制
1、投给自己
2、Pk
谁上面的数据越新
zxid
3、投票
4、投票箱
5、统计
2)ACK ,过半机制
3)2PC,两阶段提交机制
读请求 :follower 直接返回
写请求 :转发给leader ,进行两阶段同步逻辑
解决写请求慢:
添加observer角色 :不参与领导者选举
4)同步机制
问题:
1)脑裂问题
不会存在,