各种情况下,重新选主成功后,落后的 follower 需要赶上 leader 的状态:
follower 已经落地的 log ,需要校对。与 leader 不一致的,直接丢弃 follower 从头,或从最近的本地镜像中恢复,并追赶应用 log 到状态机
我们分析几种异常情况下,集群是如何自动恢复正常的:
1 个 follower 重启了,该 follower 如何最终使自己的状态机赶上 leader leader 重启了,且变为 follower,如何最终使自己的状态机赶上 leader leader 重启了,且重新选为 leader ,如何正确恢复自己的状态机 情景分析1 - follower 重启
follower 重启实际上又有 2 种情况:
无镜像 从镜像恢复
不管哪种情况,均能得到自己的 applyIndex applyTerm
然后,follower 会通过追加日志协议,把 applyIndex applyTerm,发给 leader:
leader 会下发自己的 applyIndex 和 commitIndex ,以及根据 follower 的 applyIndex applyTerm ,下发后续 log(或者是镜像+后续 log)
follower 根据 applyIndex 字段,知道自己落后 leader 多少个 log follower 根据 commi