日志压缩
快照技术
服务器独立创建快照
AppendEntries 一致性检查
删除last included index之前条目
leader发送快照给一些落后的follower
对于运行缓慢的follower
对于新加入的follower
follower
快照包含接收者日志中没有的信息
follower 丢弃所有日志
接收到的快照是自己日志的前面部分
快照包含的条目全部删除
保留缺失的条目
替代方案
LSM树(日志清理或日志结构合并树)
选择一个积累了大量已经被删除或者被覆盖的对象的数据区域
重写该区域还活着的对象
释放该区域
日志复制
客户端请求包含指令,发送给leader
leader
指令追加到日志
并行发起 AppendEntries RPC 给其他的服务器
a:follower崩溃,丢包
leader不断重发,直到所有follower存储了所有日志条目
状态机处理该条目
a:日志条目被复制到过半服务器上
执行结果返回客户端
一致性
找到两者达成一致的索引最大日志条目,不一样的日志条目就删除
初始化follower的nextindex
AppendEntries RPC 中的一致性检查
follower拒绝
leader减小nextIndex值
重试RPC检查
优化一致性检查
快照
the last included index
the last included term