如何向负责人通知RAFT中群集配置的更改?

时间:2018-10-25 13:33:03

标签: distributed consensus raft

在木筏论文中提到,集群配置是使用复制日志中的特殊条目来存储和通信的。

[1]特殊条目在这里是什么意思?每个服务器的条目中是否都包含有关集群中其他服务器总数的信息?如果不是,那么候选人如何确定它获得了多数选票?

[2]还有谁通知领导者有关配置的更改?群集中添加的新服务器是否通过这些特殊条目进行通信?如果新服务器这样做,我的理解是正确的:“当新服务器加为无表决权成员时,它将了解当前配置并增加其日志条目中的服务器数量,并向领导发送请求以更改其配置配置?”

1 个答案:

答案 0 :(得分:0)

  1. 特殊条目意味着日志条目在应用时不会更改状态机,而是一种特殊结构,可承载有关集群配置的信息。 如果您的状态机是一个简单的键值存储,则此新条目看起来不会像其他条目(set x = 5),而是包含集群配置(通常是地址和端口),例如[1 = {1.2.3.4, 10000}, 2 = {1.2.3.5, 10001}, ...]。 是的,每个服务器的日志中都有完整的群集配置,并且它们始终使用最新的。

  2. PhD thesis的第4.4章中,

  

例如,图4.1中的AddServer和RemoveServer RPC可以   可以直接由管理员调用,也可以由使用一系列单服务器步骤以任意方式更改配置的脚本调用。

将说管理员需要一种方法来向Raft集群发出RPC调用。这意味着您需要一种将RPC发送到所有服务器的方法,并且这样做还可以通知当前的领导者。

如何将RPC发送到所有服务器是实现的详细信息,您可以将其作为单独的“客户端”来完成,或者仅通过某些命令行标志来通知新服务器,它也需要发送{ {1}}在启动时RPC到所有服务器。

您的理解对我来说很好,除了将新配置发送给领导者的部分。它应该广播AddServer RPC。然后,当前领导者将使用包含新服务器的配置创建一个新的日志条目,并开始复制它。