-
状态机
- Leader(客户端请求处理者,数据同步到其他节点)
- Follower(请求的被动更新者)
- Candidate(超时时间没收到Leader心跳,判断Leader故障,变为此状态,参与竞选)
-
Log(保存数据的修改)
-
一致性模块(XA二阶段提交)
- Follower一定时间内接收不到Leader心跳变为Candidate状态
- 先投给自己一票,然后向其他节点请求投票
- 当得票超过半数,选举为Leader
- etcd实现raft协议
- zookeeper实现了ZAB协议,类似Raft协议