leader 挂了之后,多久能恢复?选举里节点之间到底发了什么?这篇重复杀 leader 5 次,量新 leader 出现和写入恢复的时间,再把一次选举里的选票交换从日志里摘出来。
次 被杀 新 leader 出现(ms) 写成功(ms) 选举耗时(日志,ms) 1 z34-2 z34-1 341 416 211 2 z34-1 z34-3 344 373 214 3 z34-3 z34-2 783 811 641 4 z34-2 z34-3 377 410 225 5 z34-3 z34-2 345 373 214 中位数:新 leader 出现 345 ms,第一次写成功 410 ms;最小 / 最大(写成功):373 / 811 ms
5 次里有一次明显更慢(选举耗时 641 ms 对其它的 211–225 ms),说明选举的耗时有波动,不要把中位数当作上限。
09:48:05.769 我是 LOOKING 收到 sid=1 的通知:它的状态 LOOKING 它投给 1 round=0x6 peerEpoch=0x5 zxid=0x500000004 09:48:05.772 我是 LOOKING 收到 sid=2 的通知:它的状态 FOLLOWING 它投给 3 round=0x5 peerEpoch=0x5 zxid=0x400000004 09:48:05.773 我是 LOOKING 收到 sid=2 的通知:它的状态 LOOKING 它投给 2 round=0x6 peerEpoch=0x5 zxid=0x500000004 09:48:05.774 我是 LOOKING 收到 sid=1 的通知:它的状态 LOOKING 它投给 2 round=0x6 peerEpoch=0x5 zxid=0x500000004 09:48:06.617 我是 FOLLOWING 收到 sid=3 的通知:它的状态 LOOKING 它投给 3 round=0x1 peerEpoch=0x5 zxid=0x500000004 09:48:06.618 我是 FOLLOWING 收到 sid=3 的通知:它的状态 LOOKING 它投给 3 round=0x6 peerEpoch=0x5 zxid=0x500000004
选票比较的规则(先 epoch、再 zxid、最后 sid)在第 35 篇单独验证。