对分布式系统的错误认识

20 多年前,Peter Deutsch 和 James Gosling 定义了分布式计算的 8 个谬误。这些是许多开发人员对分布式系统做出的错误假设。从长远来看,这些通常被证明是错误的。

让我们来看看每个谬误,讨论问题和潜在的解决方案。

分布式系统的谬误

1. 网络可靠

分布式系统本质上是由多个通过网络连接和通信的节点、系统或服务组成。网络中的任何变化或故障都可能中断通信影响系统的功能。

这些故障可能是由海底电缆切断、交换机故障或断电等因素造成的。此外,大多数负责网络可靠性的硬件都运行某种形式的软件。这些软件中的任何细微bug也可能导致网络问题。这让我们得出结论:网络并不可靠 .

例如你在和朋友视频通话时,突然网络中断了,这就是网络不可靠的一个例子。可能是因为路由器故障、网络维护或其他外部因素。

所以对于一些API调用,需要进行容错设计,重试&幂等 自动重连接等机制 。

2. 零延迟

在分布式系统中,数据中心或服务器可能位于世界不同的地方。尽管这种地理复制增强了服务的弹性,但也增加了机器之间通信或数据传输的时间。此外,网络固有的不可靠性可能导致数据包延迟,进一步延长完成客户端指令所需的时间。延迟为零的概念是不正确的。

例如你在中国访问一个位于美国的网站,这中间的数据传输需要经过很多路由器和服务器,因此会有延迟,这就是延迟不是零的表现。

3. 带宽是无限的

带宽是指单位时间内可以通过网络传输的数据量。虽然现代大规模应用程序可能会给人带来无限带宽的印象,但在数据需求超过可用容量的情况下(如在线视频流或游戏),可能会导致限速。

此外,在多个服务之间共享基础设施资源(如消息代理)时,为了防止高吞吐量的生产者影响其他服务,每个生产者的带宽会受到限制。

如果你有过晚上刷视频的经历,你会发现看视频偶尔会卡顿,这是因为晚上很多人都在使用网络,带宽被占满了。

这一切都说明带宽是有限的

4. 网络是安全的

在学习设计接受用户输入的 Web 表单时,第一课是:永远不要信任用户输入。

同样,连接到开放Wi-Fi网络的建议是:永远不要连接开放 Wi-Fi 网络。此外,在设计不同服务之间通过网络进行通信时,必须验证请求的来源。这是因为互联网充满了恶意用户,他们会嗅探网络流量以解码通信,或尝试攻击防火墙以访问私有网络、服务或数据库。

例如你在咖啡店连接公共Wi-Fi,黑客可能会嗅探你的网络流量,获取你的私人信息,这就是网络不安全的例子。

这一切表明网络本质上并不安全 。因此您在设计系统时要牢记安全性,您需要在网络,基础架构和应用程序级别进行不同的安全检查。

5. 拓扑结构不变

网络拓扑始终在变化。有时它会因意外原因而发生变化 - 当您的应用服务器出现故障并需要更换时。很多时候它是故意的 - 在服务器集群上增加和删除实例。如今,随着云和容器的增加,这一点更加明显。

因此在设计系统时,需要考虑到系统的弹性扩展能力 - 根据工作负载添加或删除服务器的能力, 使系统具有一定程度的网络灵活性。

6. 只有一名管理员

小的系统可能只有一个运维。

但是在现代计算中,由于云计算工具的易用性和在线软件应用程序的复杂性不断增加,一个人几乎不可能管理从设计到开发再到部署的所有事情。大多数互联网应用程序都由微服务组成,每个微服务由不同的团队负责各司其职,他们拥有自己的开发、部署工具和周期。因此,让一个人负责所有事情是不切实际的

例如一家大型互联网公司,其各个服务由不同的团队负责开发和维护,如邮件服务、社交平台、视频服务等,每个团队都有自己的管理人员。

7. 传输成本为零

为了实现分布式系统中不同实体之间的通信,必须通过网络传输数据。与现实世界中移动货物类似,在线传输数据也需要物理硬件、网络带宽、软件和电力等资源。虽然这些非零传输成本最初可能看起来很小,但最终它们构成了运营在线大规模应用程序的总体费用的很大一部分。

当你使用云存储服务上传大量数据时,会发现需要支付带宽费用,这就是数据传输成本的体现。

8. 网络是同质的

部署在互联网上的不同服务或节点通常在硬件规格或操作参数方面存在不同配置。例如,每个连接到互联网的设备都有不同的硬件规格,你的手机和公司的服务器性能和配置完全不同,

在设计系统时假设所有设备都具有同构配置将导致性能或兼容性问题 ,如果开发一个应用假设所有设备都是高性能的服务器,那么在手机上运行时可能会非常慢。这一原则也适用于跨多个地理位置数据中心部署的大规模分布式系统,其中物理机器具有异质配置。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值