21 年和盘点“分布式计算的八个谬误”(2025 年)

2026-06-15 1 阅读 teleforce
跳至文章 图片由 Gerd Altmann 在 Pixabay 上提供。你可能会认为,到目前为止,人们对网络已经有了足够的了解,人们将不再做出我们几乎从网络诞生以来就知道的不真实的假设。然而,作为用户、开发人员和网络管理员,我们似乎仍然无法放弃长期持有的信念。也许关于网络的最著名的错误观念就是分布式计算的八个谬误。八个谬论 网络是可靠的 延迟为零 带宽是无限的 网络是安全的 拓扑不会改变 只有一名管理员 传输成本为零 网络是同质的 这个列表从何而来?该列表以四个原始谬误开始(列表中的前四个),由 Sun Microsystems 最初八位创始人和员工中的两位 Bill Joy 和 Tom Lyon 收集。 Sun 集成了高速图形、UNIX 操作系统和有效的互联网协议栈,这导致了桌面计算的爆炸式增长、迅速崛起,并最终被 Oracle 计算公司收购。当您使用 Berkeley Software Distribution (BSD) 变体、Linux 发行版甚至 Android 时,您使用的技术继承了 Sun Microsystems 的血统。例如,ZFS 文件系统、用于网络文件存储的网络文件系统 (NFS) 协议以及 Java。后来,L. Peter Deutsch 扩展了这个列表,他在 Sun 公司期间又添加了三个谬论。最后一个谬论是由詹姆斯·高斯林(James Gosling)创造的,他也恰好在 Sun 工作过,为我们带来了我们现在所知道和喜爱的八个谬论。随着时间的推移,这些想法已经解决并激发了其他一系列谬误——例如,有关日期和时间的谬误,或者人们对名字的误解。如果没有更多的话我会感到惊讶。无论是填写表格还是与网络或应用程序中的资产进行交互,我们都会经常遇到这些日期和名称错误。分布式计算的八个基本谬误被埋藏在我们使用网络的过程中的“常数”中。他们作为网络运营商值得思考,无论是在协议和软件设计方面,还是在日常生活中如何影响用户。通过牢记它们,我们可以更好地解决当我们在网上遇到这些谬论时所产生的行为。该列表针对编写网络软件的人员:调用网络的应用程序、从网络调用的服务以及网络协议。它提供了关于如何考虑通过网络发送数据以及您应该提出的问题的实用指导(即使是抽象地呈现)。诸如此类的问题:它真的发送了吗?收到了吗?你怎么知道?可以再发一下吗,还是数据没了?还需要再寄一次吗?您有时间处理这些数据吗?它将如何影响您计划的其余部分?尽管网络很复杂,但其行为方式是否符合您真正理解的方式?下面是我个人对分布式计算的八个谬误的含义的理解,因为它们与网络对我和我的服务的行为方式有关。其他人有不同的看法,我可能有一些错误的地方。图 1 — 分布式计算的八个谬误。 1. 网络可靠 从整体上衡量,对于某些用户来说,互联网在任何时候都可能在某个地方出现故障。我们个人体验到它是可靠可用的,这是希望对经验的胜利。 “五个九”的可靠性常常让我们表现得好像“这不会发生在我身上”。更具体地说,人们倾向于假设一旦发送数据包,就会收到它。大多数时候,确实如此。但我们仍然必须设计协议来处理并非如此的情况。考虑网络行为的三个经典度量中的第一个:丢失、延迟和抖动。 “损失”只是“不可靠”的另一种说法。如果您的协议没有考虑到数据可能丢失的事实,就会遇到问题。许多传输控制协议 (TCP) 和 QUIC 层都是专门为识别数据包丢失并处理它而设计的。互联网协议(IP)——无论是第四版还是第六版——并不保证交付。如果高层有能力的话,这一责任就会落到他们身上。 2. 延迟为零 延迟包含了上面提到的另外两个网络问题:延迟和抖动。考虑到光速,延迟有时只是距离的函数,但即使这样也可能被误解,因为光在光纤中的速度比在真空中慢。将信号从铜线转换为光纤并沿光纤链路发送时,会出现额外的延迟。因此,通过微波、无线电甚至激光在卫星之间发送数据有时比通过光纤发送数据更快。抖动(延迟的可变性)是游戏和流媒体协议的主要挑战。延迟和丢失是原因