Raft实现报告(14)
支持动态更新配置
集群配置会使用复制日志中的特殊条目进行存储和通信
网络异常,图片无法展示
|
动态更新配置
上图说明了备至更改的过程。当leader收到配置将从旧版本升级到新版本的时候,它会讲联合共识的配置存储为日志条目,并使用之前描述的机制复制该条目。一旦给定的服务器将新的配置提哦阿木天见到了其日志中,它会将该配置用于未来所有的决策(服务器始终是勇气日志中的最新配置,无论条目是否已经提交)。这意味着leader会根据集群的新旧联合配置的规则来确定该配置何时提交。如果leader崩溃,可能会在新的集群配置下,或者旧的集群配置下重新选举,具体取决于获胜的candidate是否收到了联合集群配置。在任何情况下,新的集群配置都不能再次期间作出单方面的决定。
一旦联合配置被提交。旧的集群和新的集群都不能在没有对方批准的情况下作出决定,并且Leader Completeness特性确保只有拥有联合配置的日志条目的服务器才能被选为leader。leader仙酒可以安全的创建描述新集群配置条目并将其复制到集群中。同样,此配置将在每一台服务器上生效。当新配置生效后,旧的配置就无关紧要了,可以关闭不在新配置中的服务器。如图所示的,新集群和旧集群都没有时间可以单方面作出决定,这是为了确保安全。