复制日志

通过使用复制到所有集群节点的预写日志来保持多个节点的状态同步。

问题

当多个节点共享状态时,需要同步该状态。所有集群节点都需要就相同状态达成一致,即使某些节点崩溃或断开连接。这需要为每个状态更改请求达成共识。

但仅就单个请求达成共识是不够的。每个副本还需要按相同的顺序执行请求,否则不同的副本可能会进入不同的最终状态,即使它们就单个请求达成共识。

解决方案

集群节点维护一个预写日志。每个日志条目存储达成共识所需的状态以及用户请求。它们协调以在日志条目上达成共识,以便所有集群节点都具有完全相同的预写日志。然后,根据日志顺序执行请求。由于所有集群节点都同意每个日志条目,因此它们按相同的顺序执行相同的请求。这确保所有集群节点共享相同的状态。

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

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

2023 年 11 月 23 日