distributed-computing - 在 2PC 中如果提交失败会发生什么?

标签 distributed-computing consensus

在 2PC 中,如果协调员要求 3 个参与者提交,而第二个参与者失败且没有对协调员做出任何响应,会发生什么情况。

客户端到达向第二个节点询问值,第二个节点刚刚出现但未能提交,因此它返回一个旧值...这是 2PC 的错误吗?

最佳答案

2PC缺失部分 - 2PR(2 Phases Read)

如果任何提交消息由于某种原因在某些参与者处丢失或未生效,则资源将保持在准备状态(这是不确定),即使在重新启动后也是如此,因为准备状态在协调器发送提交消息之前,必须将其持久保存在非 volatile 存储中。

任何人尝试读取任何不确定资源,都必须引用协调器来确定该资源的确切状态。一旦确定,您就可以选择正确的值版本。

对于您的情况,第二个节点返回新值(在协调器的帮助下找出新值确实已提交,而旧值已过时)。

----------编辑--------------

一些实现在准备阶段使用独占锁,这意味着一旦准备好,其他人就无法读取或写入准备好的资源。因此,在参与者提交之前,任何尝试读取的人都必须等待

关于distributed-computing - 在 2PC 中如果提交失败会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50042776/

相关文章:

tcp - 为什么 Windows7 上的 TCP/IP 需要 500 次发送才能预热? (w10,w8 证明没有受到影响)

java - MPI 应用程序在使用大量库的集群配置中卡住

RPC 和共享持久数据空间

hyperledger-fabric - super 账本结构 : Add Orderer in running raft network

distributed-computing - 为分布式系统硕士学位做准备

distributed-computing - 在 Paxos 中提交失败

apache-kafka - kafka如何处理网络分区?

blockchain - Hyperledger v0.6 中的 block 大小是多少?

ubuntu - 分布式系统(RPC + Paxos)

distributed-computing - 如何计算分布式数据的均值?