假设一个 3 成员 raft 集群 a[master],b,c
客户端将日志发送到 a,a 将其复制到 b 和 c,a 将日志应用到状态机并响应客户端。然后 a 在 b 和 c 有机会将提交的状态复制到 b 和 c 之前崩溃。
b 替换 a 作为集群领导者。当日志已经响应客户端时,未提交的日志会发生什么?
它会被 b 再次复制还是被丢弃?
然后假设一个 4 成员 raft 集群 a[master],b,c,d
客户端将日志发送到 a,a 将其复制到 b 和 c(而不是 d),a 将日志应用到状态机并响应客户端,然后 a 在将提交的状态复制到 b、c 和 d 之前崩溃。
d 替换 a 成为集群领导者。那么在日志已经响应客户端的情况下,未提交的日志会发生什么?它会被丢弃吗?