生成时钟

一个单调递增的数字,表示服务器的生成。

又称:术语、纪元和生成

问题

领导者和跟随者 设置中,领导者可能暂时与跟随者断开连接。领导者进程中可能存在垃圾回收暂停,或者网络中断导致领导者与跟随者断开连接。在这种情况下,领导者进程仍在运行,暂停或网络中断结束后,它将尝试向跟随者发送复制请求。这是危险的,因为与此同时,集群的其余部分可能已经选择了一个新的领导者并接受了来自客户端的请求。集群的其余部分必须检测到来自旧领导者的任何请求。旧领导者本身也应该能够检测到它暂时与集群断开连接,并采取必要的纠正措施从领导者位置退下。

解决方案

维护一个单调递增的数字,表示服务器的生成。每次发生新的领导者选举时,都应该通过递增生成来标记。生成需要在服务器重启后可用,因此它与 预写日志 中的每个条目一起存储。如 高水位线 中所述,跟随者使用此信息来查找其日志中的冲突条目。

如果跟随者收到来自被废黜领导者的消息,跟随者可以根据其生成是否过低来判断。然后跟随者会回复失败响应。

有关更多详细信息,请访问 oreilly.com 上的在线电子书 第 09 章

此模式是 分布式系统模式 的一部分。

2023 年 11 月 23 日