【维基】分布式计算的谬误 (Fallacies of distributed computing)

中文翻译

分布式计算的谬误是由L Peter DeutschSun Microsystems的其他人做出的一组断言,这些断言描述了程序员分布式应用程序总是做出的错误假设

谬误

最初列出的谬误[1]

  1. 网络可靠;
  2. 延迟为零;
  3. 带宽是无限的;
  4. 网络是安全的
  5. 拓扑没有改变;
  6. 只有一个管理员
  7. 运输成本为零;
  8. 网络是同质的;

谬误的影响

  1. 在编写软件应用程序时,很少对网络错误进行错误处理。在网络中断期间,此类应用程序可能会停止或无限等待应答包,从而永久消耗内存或其他资源。当故障网络可用时,这些应用程序也可能无法重试任何停止的操作或需要(手动)重新启动。
  2. 对网络延迟和它可能导致的数据包丢失的无知会导致应用程序和传输层开发人员允许无限流量,从而大大增加丢弃的数据包并浪费带宽。
  3. 流量发送方对带宽限制的无知可能会导致瓶颈。
  4. 对网络安全的自满导致恶意用户和不断适应安全措施的程序措手不及。
  5. 网络拓扑中的更改会对带宽和延迟问题产生影响,因此可能会出现类似的问题。
  6. 多个管理员,就像竞争对手公司的子网一样,可能会制定相互冲突的策略,流量发送者必须知道哪些策略才能完成他们想要的路径。
  7. 构建和维护网络或子网的“隐藏”成本是不可忽视的,因此必须在预算中注明以避免巨大的缺口。
  8. 如果一个系统假设一个同质网络,那么它可能会导致与前三个谬误相同的问题。

历史

《太阳报》最初的研究员之一彼得·多伊奇(L. Peter Deutsch)于1994年首次列出了七个谬误;纳入了比尔·乔伊(Bill Joy)和戴夫·里昂在《网络计算的谬误》中已经确定的四个谬误。大约在1997年,《太阳报》的另一位研究员和《Java/b6》的发明者詹姆斯·高斯林增加了第八个谬误。

在《软件工程电台》[3]的一集里,彼得·多伊奇补充了第九个谬论:“这实际上是第四个的扩展。它超越了物理网络的边界。…与你交流的一方是值得信赖的。”

另请参见

参考文献

  1. ^Wilson, Gareth(2015-02-06)。《分布式计算的八个谬误-技术讲座》。存档于2017-11-07的原始。检索2017-06-18。这八个谬误是我很久以前在一个Java会议上听说的,一个叫詹姆斯·高斯林的人。他把它们归因于一个叫彼得·多伊奇的人,基本上是太阳公司的一群人列出了这些谬误。
  2. 一个 b范登·胡根,英格丽德(2004-01-08).从2007-08-11存档。
  3. ^彼得·多伊奇论分布式计算的谬误。2021-07-27。事件发生在57:10。


英文原文

The fallacies of distributed computing are a set of assertions made by L Peter Deutsch and others at Sun Microsystems describing false assumptions that programmers new to distributed applications invariably make.

The fallacies

[edit]

The originally listed fallacies are[1]

  1. The network is reliable;
  2. Latency is zero;
  3. Bandwidth is infinite;
  4. The network is secure;
  5. Topology doesn't change;
  6. There is one administrator;
  7. Transport cost is zero;
  8. The network is homogeneous;

The effects of the fallacies

[edit]

  1. Software applications are written with little error-handling on networking errors. During a network outage, such applications may stall or infinitely wait for an answer packet, permanently consuming memory or other resources. When the failed network becomes available, those applications may also fail to retry any stalled operations or require a (manual) restart.
  2. Ignorance of network latency, and of the packet loss it can cause, induces application- and transport-layer developers to allow unbounded traffic, greatly increasing dropped packets and wasting bandwidth.
  3. Ignorance of bandwidth limits on the part of traffic senders can result in bottlenecks.
  4. Complacency regarding network security results in being blindsided by malicious users and programs that continually adapt to security measures.
  5. Changes in network topology can have effects on both bandwidth and latency issues, and therefore can have similar problems.
  6. Multiple administrators, as with subnets for rival companies, may institute conflicting policies of which senders of network traffic must be aware in order to complete their desired paths.
  7. The "hidden" costs of building and maintaining a network or subnet are non-negligible and must consequently be noted in budgets to avoid vast shortfalls.
  8. If a system assumes a homogeneous network, then it can lead to the same problems that result from the first three fallacies.

History

[edit]

The list of fallacies originated at Sun MicrosystemsL. Peter Deutsch, one of the original Sun "Fellows", first created a list of seven fallacies in 1994; incorporating four fallacies Bill Joy and Dave Lyon had already identified in "The Fallacies of Networked Computing".[2] Around 1997, James Gosling, another Sun Fellow and the inventor of Java, added the eighth fallacy.[2]

In an episode of "Software Engineering Radio" [3] Peter Deutsch added a ninth fallacy: "It's really an expansion of number 4. It extends beyond the boundaries of the physical network. ... The party you are communicating with is trustworthy."

See also

[edit]

References

[edit]

  1. ^ Wilson, Gareth (2015-02-06). "The Eight Fallacies of Distributed Computing - Tech Talk". Archived from the original on 2017-11-07. Retrieved 2017-06-18. The Eight Fallacies are something that I heard about at a Java One conference a long time ago by a guy named James Gosling. He attributed them to someone named Peter Deutsch and basically a bunch of guys at Sun had come up with a list of these fallacies.
  2. Jump up to:a b Van Den Hoogen, Ingrid (2004-01-08). "Deutsch's Fallacies, 10 Years After". Archived from the original on 2007-08-11. Retrieved 2005-12-03.
  3. ^ L. Peter Deutsch on the Fallacies of Distributed Computing. 2021-07-27. Event occurs at 57:10.

[edit]


问答

问题1:Transport cost is zero 是什么含义

回答1

在这篇文章中,“Transport cost is zero;”的含义是指新手程序员可能会错误地假设在分布式计算中数据的传输成本为零。也就是说,他们可能没有意识到在网络中传输数据会消耗资源,如带宽、能量等,并且可能会导致延迟和其他性能问题。

这种谬论可能导致程序员在设计分布式应用时忽略了对数据传输成本的考虑,从而影响应用的性能和效率。实际上,在分布式系统中,需要合理地优化数据传输,以减少成本并提高系统的整体性能。

问题2:关于网络拓扑的讨论,能给我举一些实际的例子吗

回答2

文章中提到的网络拓扑不变的谬论是指认为网络的拓扑结构不会改变。但在实际情况中,网络拓扑可能会因为各种原因而发生变化,例如:

  1. 设备故障:网络中的某个路由器或交换机可能会出现故障,导致网络拓扑发生改变。
  2. 链路故障:连接网络设备的链路可能会出现问题,例如断开或拥塞,这也会影响网络拓扑。
  3. 新增或移除设备:当网络中新增或移除设备时,网络拓扑会相应地发生变化。
  4. 移动设备:在无线网络中,移动设备的位置变化可能会导致它们与不同的接入点连接,从而改变网络拓扑。
  5. 网络扩展:随着业务的发展,网络可能会进行扩展,添加新的分支机构或数据中心,这也会改变网络拓扑。

例如,一家公司的网络原本由几台交换机和路由器组成,连接着各个部门的计算机。但某天,其中一台路由器出现故障,导致部分计算机无法正常通信,网络拓扑就发生了变化。为了恢复网络正常运行,可能需要重新配置网络设备或调整链路连接。

再比如,一个无线网络覆盖的区域,用户在移动过程中,手机会自动切换到信号更强的接入点,这也导致了网络拓扑的动态变化。

为了合理应对网络拓扑的改变,可以采取以下措施:

  1. 网络监测与预警:使用网络监测工具实时监控网络状态,及时发现拓扑结构的变化、设备故障或链路问题,并发出预警通知管理员。
  2. 冗余设计:在网络中构建冗余链路和设备,以提高网络的可靠性和容错能力。当某个链路或设备出现故障时,冗余部分可以自动接管,减少对网络的影响。
  3. 自动配置与调整:采用智能网络管理系统,能够自动感知网络拓扑的变化,并根据预设策略进行配置和调整,以确保网络的正常运行。
  4. 备份与恢复:定期备份网络配置和重要数据,以便在网络拓扑发生重大变化时能够快速恢复到之前的稳定状态。
  5. 规划与设计:在网络规划和设计阶段,充分考虑未来可能的扩展和变化,采用灵活的拓扑结构和可扩展的设备,以便更容易适应网络拓扑的改变。
  6. 培训与应急演练:对网络管理员进行培训,使其熟悉网络拓扑结构和应对变化的方法。定期进行应急演练,提高应对网络拓扑改变的能力和效率。
  7. 软件定义网络(SDN):利用 SDN 技术,可以更灵活地控制和管理网络拓扑,实现自动化的配置和调整,提高网络的适应性。
  8. 与供应商合作:与网络设备供应商保持良好的合作关系,及时获取设备的更新和支持,以应对可能出现的拓扑变化问题。

通过以上措施,可以更好地应对网络拓扑的改变,提高网络的稳定性和可靠性。

问题3:文章中关于网络同质化,能给我举一些实际的例子吗

回答3

文章中提到的网络同质化的谬论是指认为网络中的所有部分都是相同的,具有相同的性能和可靠性。但实际上,网络中存在着各种不同类型的设备、链路和节点,它们的性能和可靠性可能会有很大的差异。

以下是一些实际的例子:

  1. 不同类型的网络设备:网络中可能存在不同品牌、型号和配置的路由器、交换机等设备,它们的处理能力、带宽、稳定性等可能会有所不同。
  2. 不同的链路类型:网络中的链路可能包括有线链路(如以太网)和无线链路(如 Wi-Fi),它们的传输速度、延迟、可靠性等也会有所不同。
  3. 地理位置的影响:不同地理位置的网络节点可能会受到不同的环境因素影响,如信号干扰、天气条件等,从而导致性能的差异。

例如,在一个企业网络中,可能同时存在高端的核心交换机和低端的接入交换机,核心交换机的性能更强,但成本也更高;而接入交换机则主要用于连接终端设备,性能要求相对较低。此外,无线网络在某些区域可能会受到信号干扰,导致传输速度变慢或连接不稳定。

为了应对网络同质化的谬论,可以采取以下策略:

  1. 网络评估与规划:对网络进行全面的评估,了解不同设备和链路的性能特点,根据实际需求进行合理的规划和布局。
  2. 差异化管理:根据设备和链路的性能差异,采取差异化的管理策略,例如对关键设备和链路进行重点监控和维护,确保其稳定性和可靠性。
  3. 冗余与备份:通过构建冗余链路和设备,提高网络的容错能力,当某个部分出现故障时,能够快速切换到备用链路或设备,减少对网络的影响。
  4. 优化与升级:根据网络的实际运行情况,对性能不足的设备和链路进行优化和升级,以提高网络的整体性能。
  5. 培训与意识提高:对网络管理员和用户进行培训,提高他们对网络同质化谬论的认识,使其能够更好地理解和应对网络中的差异。

通过以上措施,可以更好地应对网络同质化的问题,提高网络的性能和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值