文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
8. 分布式系统的麻烦
邂逅相遇 网络延迟 存之为吾 无食我数 —— Kyle Kingsbury, Carly Rae Jepsen 《网络分区的危害》(2013 年)
最近几章中反复出现的主题是,系统如何处理错误的事情。例如,我们讨论了 副本故障转移 ( 处理节点中断 ), 复制延迟 ( 复制延迟问题 )和事务控制( 弱隔离级别 )。当我们了解可能在实际系统中出现的各种边缘情况时,我们会更好地处理它们。
但是,尽管我们已经谈了很多错误,但之前几章仍然过于乐观。现实更加黑暗。我们现在将悲观主义最大化,假设任何可能出错的东西 都会 出错i 。(经验丰富的系统运维会告诉你,这是一个合理的假设。如果你问得好,他们可能会一边治疗心理创伤一边告诉你一些可怕的故事)
i. 除了一个例外:我们将假定故障是非拜占庭式的(参见 拜占庭故障 )。 ↩
使用分布式系统与在一台计算机上编写软件有着根本的区别,主要的区别在于,有许多新的和令人兴奋的方法可以使事情出错【1,2】。在这一章中,我们将了解实践中出现的问题,理解我们能够依赖,和不可以依赖的东西。
最后,作为工程师,我们的任务是构建能够完成工作的系统(即满足用户期望的保证),尽管一切都出错了。 在 第 9 章 中,我们将看看一些可以在分布式系统中提供这种保证的算法的例子。 但首先,在本章中,我们必须了解我们面临的挑战。
本章对分布式系统中可能出现的问题进行彻底的悲观和沮丧的总结。 我们将研究网络的问题( 无法访问的网络 ); 时钟和时序问题( 不可靠时钟 ); 我们将讨论他们可以避免的程度。 所有这些问题的后果都是困惑的,所以我们将探索如何思考一个分布式系统的状态,以及如何推理发生的事情( 知识,真相和谎言 )。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论