- 基于multi-paxos做了一些简化和限制,日志必须是连续的,只支持三个角色。
- replicated log => replicated state machine
- leader-based
- leader election 领导者选举
- replicated log 日志复制
- member change 成员变更
- 领导人选举
- 日志一致性复制
- etcd
- consul
- cockroachDB
- leader
- follower
- candidate
- request vote 请求投票(候选人发起)
- append entries 追加日志(领导者发起)
- 变成candidate后自动增加一次任期
- 周期性向follower发起心跳检测
- 选举无效,等待的时间间隔是随机的。
- 只有leader能写入,先本地写入,未提交,然后同步到follower,follower响应写完成后,leader再提交,leader再让follower提交。
- 随机超时时间,等待领导者心跳信息超时。
- 节点之间沟通采用的rpc
- 在一次选举中,每一个服务器节点最多会对一个任期编号投出一张选票,并且是先到先投。
- 主节点的读写
- 集群扩展主节点