当人们描述Paxos时,他们总是假设集群中已经有一些提出者。但是,提出者来自哪里,或者是什么决定了哪些过程是提出者?
发布于 2019-03-16 07:40:45
集群的初始配置方式和更改方式取决于试图优化系统的管理员。
您可以在不同的主机上运行不同的角色,并拥有不同数量的角色。我们可以运行三个提出者,五个接受者和七个学习者,无论你选择什么。需要写一个值的客户只需要连接到proposers。使用multi-Paxos for state replication,客户端只需要连接到proposers,因为这就足够了,并且客户端不需要与任何其他角色类型交换消息。然而,没有什么可以阻止客户通过看到来自接受者的消息来成为学习者。
只要您遵循Paxos算法,就可以将网络跳数(延迟和带宽)、硬件成本和特定工作负载的软件复杂性降至最低。
从实践的角度来看,你的客户需要能够在失败的情况下找到提出者。群集管理员将配置要推荐的节点,并确保客户端可以发现这些节点。
从抽象算法的描述中很难想象事情是如何工作的,因为许多消息拓扑都是可能的。当将算法应用于实际应用时,更明显的是设置最小化了延迟、带宽、硬件和复杂性。三节点MySQL cluster running Paxos可能就是一个例子。您希望所有三台服务器都拥有所有数据,因此它们都是学习者。所有节点都必须是接受者,因为您至少需要三个节点才能使一个节点出现故障并保持进度。它们可能都是提供软件和配置的最佳可用性和简单性的提出者。请注意,其中一个将成为distinguished leader。数据库管理员没有考虑Paxos角色,因为他们只是设置了一个三节点数据库集群。
群集中的角色可能需要更改。例如,您可能想要扩展数据库集群的容量。或者,服务器可能会死掉,因此您需要更改集群成员资格,将死掉的服务器替换为新的服务器。为了让Paxos算法工作,每个进程必须对哪些进程在哪些角色中有一个高度一致的视图。你是如何获得共识的?您可以使用Paxos来确定集群成员的新值。
https://stackoverflow.com/questions/55179895
复制相似问题