在木筏论文中提到,集群配置是使用复制日志中的特殊条目来存储和通信的。
[1]特殊条目在这里是什么意思?每个服务器的条目中是否都包含有关集群中其他服务器总数的信息?如果不是,那么候选人如何确定它获得了多数选票?
[2]还有谁通知领导者有关配置的更改?群集中添加的新服务器是否通过这些特殊条目进行通信?如果新服务器这样做,我的理解是正确的:“当新服务器加为无表决权成员时,它将了解当前配置并增加其日志条目中的服务器数量,并向领导发送请求以更改其配置配置?”
答案 0 :(得分:0)
特殊条目意味着日志条目在应用时不会更改状态机,而是一种特殊结构,可承载有关集群配置的信息。
如果您的状态机是一个简单的键值存储,则此新条目看起来不会像其他条目(set x = 5
),而是包含集群配置(通常是地址和端口),例如[1 = {1.2.3.4, 10000}, 2 = {1.2.3.5, 10001}, ...]
。
是的,每个服务器的日志中都有完整的群集配置,并且它们始终使用最新的。
在PhD thesis的第4.4章中,
例如,图4.1中的AddServer和RemoveServer RPC可以 可以直接由管理员调用,也可以由使用一系列单服务器步骤以任意方式更改配置的脚本调用。
将说管理员需要一种方法来向Raft集群发出RPC调用。这意味着您需要一种将RPC发送到所有服务器的方法,并且这样做还可以通知当前的领导者。
如何将RPC发送到所有服务器是实现的详细信息,您可以将其作为单独的“客户端”来完成,或者仅通过某些命令行标志来通知新服务器,它也需要发送{ {1}}在启动时RPC到所有服务器。
您的理解对我来说很好,除了将新配置发送给领导者的部分。它应该广播AddServer
RPC。然后,当前领导者将使用包含新服务器的配置创建一个新的日志条目,并开始复制它。