当人们描述Paxos时,他们总是认为集群中已经有一些提议者。但是提案人来自哪里,或者由什么决定要成为提案人的程序?
答案 0 :(得分:0)
群集的初始配置方式和更改方式取决于尝试优化系统的管理员。
您可以在不同的主机上运行不同的角色,并具有不同数量的角色。无论您选择什么,我们都可以运行三个提议者,五个接受者和七个学习者。需要写值的客户只需要连接到提议者即可。使用multi-Paxos for state replication,客户只需连接到提议者就足够了,并且客户不需要与任何其他角色类型交换消息。但是,没有什么可以阻止客户通过查看接受者的消息而成为学习者的。
只要您遵循Paxos算法,所有这些都可以归结为最大程度地减少网络跳数(延迟和带宽),硬件成本以及针对特定工作负载的软件复杂性。
从实际的角度来看,您的客户需要能够面对失败而找到提议者。集群管理员将配置要提议的节点,并确保它们被客户端发现。
很难从抽象算法的描述中形象地看到事情可能如何工作,因为可能有许多消息传递拓扑。当将该算法应用于实际应用时,显而易见的是,哪种设置可以最大程度地减少延迟,带宽,硬件和复杂性。一个示例可能是三个节点MySQL cluster running Paxos。您希望所有三个服务器都具有所有数据,因此它们都是学习者。所有节点都必须是接受者,因为您至少需要三个接受者,以使一个节点失效并仍保持进度。他们也可能都是提议者,以提供软件和配置的最佳可用性和简便性。请注意,其中一个将成为distinguished leader。数据库管理员不需要考虑Paxos角色,因为他们只是建立了一个三节点数据库集群。
集群中的角色可能需要更改。例如,您可能要扩展数据库集群的容量。否则服务器可能会死机,因此您需要更改群集成员身份,以将失效的成员交换为新成员。为了使Paxos算法正常工作,每个进程必须对哪个进程在哪个角色中具有非常一致的看法。您如何达成共识?您可以使用Paxos修复集群成员的新值。