use*_*220 3 distributed fault-tolerance message-queue distributed-system
假设在下图中中间消息队列失败.发件人仍然可以使用其他邮件队列发送邮件.
但是如果消息队列在收到消息后死亡会发生什么.发件人如何知道邮件是否已发送给接收者,以决定是否重新发送不同的邮件队列?
类似的情况如果接收器在消息队列向其发送消息后死亡会发生什么?发件人如何知道接收方是否已满足其预期请求?

作为起点,您需要阅读http://en.wikipedia.org/wiki/Two_Generals%27_Problem.
这是计算机科学中一个非常着名且非常普遍的问题.从技术上讲,它被认为是"已解决",因为我们知道答案; 然而,短篇小说是:你要求的是(严格地说)不可能的.如果置信度<1.0,您可以设计一些协议,这些协议将允许您实现消息已经(或尚未)传递的任何置信水平.
实际上,使用两相和三相分布式事务协议的变体,以及各种重传和重新同步回退.具体取决于实施.
通常选择是允许重复的可能性并要求接收者作出适当的回应.这是TCP做出的选择,如果你想到它就试图找到同一个问题的合理答案.
| 归档时间: |
|
| 查看次数: |
2376 次 |
| 最近记录: |