algorithm - 什么时候使用 Paxos(真正的实际用例)?

标签 algorithm distributed paxos consensus

谁能给我一份 Paxos 的实际用例列表。这是真正的问题,需要作为更大问题的一部分达成共识。

下面是Paxos的用例吗?

假设有两个客户端在扑克服务器上互相玩扑克。扑克服务器被复制。我对 Paxos 的理解是,它可以用来保持代表当前扑克手牌的内存数据结构的一致性。也就是说,确保所有副本都具有完全相同的手的内存状态。

但为什么需要 Paxos?假设需要发一张新牌。如果一切正常,每个运行相同代码的副本将生成相同的卡片。为什么客户端不能只从所有复制的服务器请求最新状态并选择出现次数最多的卡片。因此,如果一个服务器出现错误,客户端仍然会通过选择多数来获得正确的状态。

最佳答案

您假设所有服务器彼此同步(即具有相同状态),因此当服务器需要选择下一张卡片时,每个服务器都会选择完全相同的卡片(假设您的代码是确定性的).

但是,您的服务器状态还取决于用户的操作。例如,如果用户决定筹集 50 美元 - 您的服务器需要将该信息存储在某个地方。现在,假设您的服务器向 Web 客户端回复“确定”(我假设是基于 Web 的扑克游戏),然后服务器崩溃了。您的其他服务器可能没有关于加薪 50 美元的信息,并且您的系统将不一致(从某种意义上说,客户认为已经加薪 50 美元,而幸存的服务器却没有注意到)。

请注意 majority 在这里无济于事,因为数据丢失了。此外,假设不是主服务器崩溃,而是主服务器加上另一个服务器获得了 50 美元的加薪数据。在这种情况下,使用 majority 可能会更糟:如果您从两台服务器得到数据的响应,您会认为已经执行了 50 美元的加薪。但是,如果其中一个失败,那么您将不会获得多数票,并且您会认为加薪没有执行。

一般而言,Paxos 可用于以容错方式复制状态机。 “状态机”可以被认为是一种具有某些初始状态的算法,它根据从外部(即网络客户端)收到的消息确定性地推进状态。

更准确地说,Paxos 应该被视为分布式日志,您可以在这里阅读更多相关信息:Understanding Paxos – Part 1

关于algorithm - 什么时候使用 Paxos(真正的实际用例)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223370/

相关文章:

php - 随机但均匀地将 N 人分组? (姓名和性别)

distributed-computing - paxos 是否提供真正的线性化一致性?

java - 选择用于实现分布式消息传递算法的编程语言

distributed - Raft 如何处理 AppendEntries RPC 中的延迟回复?

message-queue - 在分布式消息队列中实现容错

implementation - 关于 Paxos 和论文 Paxos Made Simple 的说明

algorithm - 交集算法 O(n) 更好的方法?

algorithm - 将 61 拆分为整数分区

algorithm - 查找预排序数组中的两个元素总和是否等于某个值

java - 崩溃后从中间状态恢复系统的设计模式