【发布时间】:2018-05-17 04:03:04
【问题描述】:
假设您有 n 个进程,n > 2。您希望它们之间达成一致,即其中一个是活动的。所以他们需要互相投票来决定哪一个是活跃的。
所有进程都可能随时失败,如果可能,我们希望有一个进程处于活动状态,但是...
我们必须永远不要同时有两个活动,所以如果他们不能确定最好没有一个活动。 (即我们要避免脑裂)
它们之间唯一可用的通信机制是发布-订阅消息传递(不是点对点)。
一个或多个数据库可用,但没有一个数据库应该是单点故障。 IE。如果所有进程都可以工作,并且由于丢失单个数据库而无法这样做,那将是非常不可取的。
设计?需要发布哪些消息?
【问题讨论】:
-
“事实和引文”似乎在公认的答案中得到了很好的证实。这个问题的意见是基于什么意义的?答案有很强的理论基础。权衡的选择可能是基于意见的,但存在不同的方法,无论是理论还是实践都是非常有用的。最先进的技术会改变,但经常会遇到这种设计问题。我声称这是一个可以产生更多有用答案的问题。
标签: messaging