构建分布式系统是一项复杂的工作。架构,设计,编码和测试对分布式系统的成功都至关重要。任何一点的失败都可能导致性能下降,故障频发,费用超标以及最终导致客户流失。在20世纪90年代Sun Microsystems的Peter Deutsch,James Gosling和其他人总结出了分布式计算的八个谬论。随着时间的推移,IT人员对这些谬论的认识可能已经消退,所以想要提醒下大家。

八大谬论是:

  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.

网络可靠

在局域内,网络可能看起来坚如磐石。毕竟,现在网络组件多久失败一次?即使单个组件发生故障,也确实存在大量冗余?那么,随着网络变得越来越复杂,网络管理就越容易出错,大多数都是配置错误。在某些情况下,多达三分之一的网络更改会导致影响网络可靠性的错误。软件和硬件都可能出现故障,尤其是路由器,它们占所有故障的四分之一左右。“不间断”电源也可能会中断,人们可能会发生不明智的设备配置更改,并且可能存在网络拥塞,拒绝服务(DoS)攻击以及软件和固件升级或修补程序失败。网络遭受自然灾害和非自然灾害,设计一个对这类东西具有弹性的网络需要技巧。广域链接超出您的控制范围,很容易出错。

最近几个月,Azure上的事件令人痛苦,而且这种失败率是主要云服务提供商的典型特征。对于移动应用程序,各种各样的事情都可能会出错:网络请求将以不可预测的间隔失败,目标将不可用,数据将到达目的地但无法发回确认,数据将在传输中损坏或到达不完整。移动应用程序必须在网络可靠性范围的可怕范围内具有弹性,但所有分布式应用程序必须能够应对所有这些可能性,并且网络节点必须能够应对服务器故障。

延迟为零

延迟与带宽不同。延迟是等待响应所花费的时间。除了明显的处理延迟外,还有网络延迟,包括传播延迟,节点延迟和拥塞延迟。传播延迟随距离增加:约为30 ms。欧洲和美国之间。路径中的节点数决定了节点延迟。

通常,开发人员在内部网中构建分布式系统,这些系统具有无关紧要的延迟,因此进行频繁的细粒度网络调用几乎不会受到惩罚。这种设计错误只有在投入实时系统时才会变得明显。

高延迟的一个令人不安的影响是它不是恒定的。在糟糕的网络上,偶尔可以在几秒钟内计算出来。就其性质而言,无法保证网络服务单个数据包的顺序,甚至不能保证请求进程仍然存在。延迟会让事情变得更糟。此外,在应用程序通过发送多个同时请求进行补偿的情况下,可以通过对其的响应来加剧暂时高延迟。

带宽是无限的

虽然大多数现代电缆可以处理几乎无限的带宽,但我们还没有找到如何构建足够快的互连设备(集线器,交换机,路由器等)以保证所有连接用户的高带宽。典型的企业内部网仍将具有限制带宽的区域。

随着公共网络带宽的增加,网络对使用视频和音频的服务的使用也一样快,而视频和音频曾经使用过广播技术。诸如社交媒体之类的新用途往往会吸收不断增加的带宽。此外,主要城市以外的许多地方都存在“最后一英里”的限制,并且丢包的可能性也在增加。

一般而言,我们需要谨慎地假设高带宽是一种普遍的体验。无论网络带宽如何令人印象深刻,它都无法接近共同托管进程可以通信的速度。

网络是安全的

令人遗憾的是仍然遇到具有基本安全漏洞的基于网络的系统。网络攻击逐年增加,并且在好奇心,恶意和犯罪方面已经超越了它们的原始根源,成为国际冲突和政治“行动”的一部分。网络攻击是IT生活的一部分:对开发人员来说很无聊,但却是必不可少的。部分问题是网络入侵检测往往是低优先级,因此我们并不总是意识到成功的网络攻击。

传统上,漏洞通常是配置不当的防火墙的结果。大多数防火墙都会经常被检测出来,因为你会立即发现你是否愚蠢地禁用它们。然而,这只是破坏网络和防火墙的一种方式中的一种,只是防御的一部分。Wi-Fi通常是一个弱点,使用自己的设备(BYOD)可以允许通过受损设备进行入侵,虚拟化和软件定义网络(SDN)也是如此。越来越多的DevOps对快速变化的基础设施的需求使得更难以保持必要的控制措施。企业网络中的僵尸网络是一个持续存在的问题,以及通过业务合作伙伴的入侵。

您需要假设网络是敌对的,并且安全性必须深入。这意味着将安全性构建到分布式应用程序及其主机的基本设计中。

通过纵深防御,分布式系统的任何部分都需要具有访问其他网络资源的安全方式。

安全带来了自身的复杂性。这将来自维护不同用户帐户,权限,证书,帐户等的管理开销。一个主要的云网络中断是由于权限在更新之前到期而导致的。

拓扑不会改变

网络拓扑不断变化,速度非常快。由于“网络敏捷性”的压力越来越大,这是不可避免的,以便与快速变化的业务需求保持同步。

无论您在何处部署应用程序,都必须假设大部分网络拓扑都可能无法控制。网络管理员将一次进行更改,原因可能不符合您的利益。他们将移动服务器并更改网络拓扑以获得性能或安全性,并在服务器和网络故障的情况下进行路由更改。

因此,依赖特定端点或路由的持久性是错误的。必须始终从任何分布式设计中抽象出网络的物理结构。

只有一个管理员

除非系统完全存在于小型LAN中,否则将有不同的管理员与网络的各种组件相关联。他们将拥有不同程度的专业知识,不同的职责和优先事项。

如果出现导致服务失败的问题,这将很重要。您的服务级别协议将要求在一定时间内做出响应。第一阶段将是确定问题。除非有问题的网络部分的管理员是您的开发团队的一部分,否则这可能并不容易。不幸的是,这不太可能。在许多网络中,问题可能完全是另一个组织的责任。如果云组件是应用程序的重要组成部分,并且云中断,则无法确定优先级。你所能做的就是等待。

如果网络中有许多管理员,那么协调升级到网络或应用程序就更加困难,特别是当涉及到几个忙碌的人时。升级和部署必须协调完成,涉及的人数越多,这就变得越困难!

运输成本为零

运输成本是指通过网络传输数据的总体成本。我们可以参考时间和计算机资源,或者我们可以参考财务成本。

将数据从应用程序层传输到传输层需要CPU和其他资源。需要对结构化信息进行序列化(编组)或解析以将数据传输到线路上。这种性能影响可能大于带宽和延迟时间,因为XML的冗长和复杂性使得XML占用JSON的两倍。

金融运输成本不仅包括创建网络的硬件和安装成本,还包括监控和维护网络服务器,服务和基础设施的成本,以及如果发现带宽不足,或者您的服务器实际上无法处理足够的并发请求。我们还需要考虑租用线路和云服务的成本,这些成本由所使用的带宽支付

网络是同质的

今天的同质网络是罕见的,甚至比首次发现谬论时更为罕见!网络可能连接计算机和其他设备,每个设备具有不同的操作系统,不同的数据传输协议,并且所有设备都与来自各种供应商的网络组件相连。

但是,异构网络没有什么特别的错误,除非它涉及需要专门支持,设备或驱动程序的专有数据传输协议。从应用程序的角度来看,如果数据以开放标准格式(如CSV,XML或JSON)传输,并且使用行业标准的查询数据(如ODBC)的方法,则会有很大帮助。

如果所有组件都来自一个供应商,则可靠性更高,因为测试覆盖范围可能更大,但实际情况是组件的丰富组合。这意味着互操作性应该从任何分布式系统的设计开始就内置。

结论

虽然这个指导是在二十年前制定的,但我们今天仍在犯这些错误。这些错误显示为不安全的端点,由于大型对象的序列化导致的超时,丢失的事务,性能降低等等。避免这些错误意味着在每次设计和代码审查中需要考虑这些谬论。

分布式计算中的八大谬论相关推荐

  1. 分布式计算的八大谬论

    在20世纪90年代Sun Microsystems的Peter Deutsch,James Gosling和其他人总结出了分布式计算的八个谬论.虽然已经过去了四十多年,但是这八个谬论仍有极大的参考意义 ...

  2. 网站建设中你不知道的八大SEO技巧

    随着网络时代发展的越来越迅速,你的网站也要经得起考验才行.如今网站优化已经是每个网站的必备服务,那么在新的网站建设中SEO的技巧你又知道多少? 1.使用Javascript来隐藏网页内容:如果需要隐藏 ...

  3. 2020年软件测试的八大谬论

    原创:缪斯 出现软件测试谬论的主要原因是: 缺乏权威的事实: 不断发展的行业性质: 人为逻辑的一般缺陷. 八大谬论及事实: 谬论:质量控制=测试. 事实:测试只是软件质量控制的一个组成部分.质量控制包 ...

  4. 五十七、Vue中的八大生命周期函数

    @Author:Runsen @Date:2020/10/15 什么是vue生命周期 Vue 实例从创建到销毁的过程,就是生命周期.也就是从开始创建.初始化数据.编译模板.挂载DOM-渲染.更新-渲染 ...

  5. 深刻揭露当今楼市中的七大谬论

    http://www.tianya.cn/publicforum/content/house/1/234983.shtml 谬论1:房价下跌会导致拥有房产者的资产缩水! 说这话的人根本不懂什么是虚拟经 ...

  6. 软件测试标准GB/T 25000.51-2016中的八大软件质量特性

    GB/T25000标准由下图所示的21个部分组成,其中GB/T 25000.10和GB/T 25000.51是建立软件测试技术体系可以参考的部分,GB/T 25000.51尤为重要. GB/T 250 ...

  7. 如何在股市中赚钱 八大炒股秘诀助你巧制胜

    股市有句警示语:股市有风险,入市需谨慎.也就是说,人们把钱投资于股市,想通过购买股票赚钱,就要担当相对的风险.但想在股市赚钱,也不是没有技巧的.无论牛市还是熊市,投资人一定要在戒贪的基础上,提高自己的 ...

  8. Java中的八大包装类(Wrapper)

    目录 一.八大包装类 1.八大包装类的体系图: 二.装箱和拆箱 三.intValue()和valueOf()方法 1.intValue() 2.valueOf() 四.包装类型和String类型的相互 ...

  9. 人脸识别中的八大难题(zz)

    http://blog.sciencenet.cn/blog-730995-578502.html 最近在看人脸识别相关文献,根据文献总结归纳以下八大难点,我从难到易进行罗列. 其实,人脸识别算法研究 ...

最新文章

  1. Xshell+技巧+快捷键
  2. 《当程序员的那些狗日日子》(十五)首次接单
  3. Java 8中stream相关用法
  4. unix时间戳(unix timestamp)与北京时间的互转方法
  5. muduo网络库学习(二)对套接字和监听事件的封装Channel
  6. LeetCode——排序
  7. CCCC-GPLT L3-015. 球队“食物链” 团体程序设计天梯赛
  8. nodejs 从gitlab拉下来后运行爆错解决
  9. 谷歌浏览器开启深色模式
  10. 图像处理基础:特征金字塔
  11. 薅羊毛php源码,基于AutoJs实现的薅羊毛App专业版源码大分享---更新啦
  12. 小程序服务器获取appid,微信小程序小程序appid如何获取
  13. [rust学习笔记]错误处理
  14. 吴恩达机器学习入门笔记12/13-聚类与降维
  15. 2021-11-16派森编程学习笔记“上帝视角下的游戏操盘手” 通过类的继承学会了复用代码,减少代码冗余,提高编程效率。
  16. word表格怎么缩小上下间距_word,20XX,怎么调整表格上下距离
  17. 【input 身份证号】星号 代替,input 切割成 多个 小格格(类似)
  18. Javascript——尺寸和定位(操作指南)
  19. u-boot v2018.01 启动流程分析
  20. 一篇文章告诉你,事件知识图谱核心关键技术有哪些?

热门文章

  1. unicloud aggregate的group保留查询数据,提取每个分组第一条数据某个字段值
  2. 实用新型专利和发明专利有什么区别?
  3. 艾默生流量计旗下其他产品的特点以及应用概况
  4. 导出excel,前后台代码示例
  5. 网络语音对讲有什么优势
  6. 光纤熔接之盘纤技巧(首先你得有一把好切割刀)
  7. pythonbarcode碱基错配_科学家揭示双链DNA中错配碱基自发翻转的规律
  8. UEditor国际化配置,支持中英文切换
  9. vue2 + vue-video-player 视频播放器
  10. 202313读书笔记|《山居七年》——我只想在广袤璀璨的星河里享受生的鲜活,独自飞,游走