在学习分布式系统时遇到的五个常见误解

学习,分布式系统,遇到,五个,常见,误解 · 浏览次数 : 338

小编点评

**误解 1:** * 网络是可靠的在分布式系统中,任何特定的网络通信都是不可靠的,都可能失败。 **误解 2:** * 延迟为零在分布式系统中,服务与服务之间有可能不仅仅是逻辑上的分布,还有可能是地理位置上的分布。 **误解 3:** * 网络是安全的没有绝对安全的网络在分布式系统中,网络不安全性可能导致以下问题: * 数据泄露 * 数据篡改 * 身份伪造 * 恶意访问 * 权限提升 **误解 4:** * 架构是一成不变的分布式系统的架构通常是动态的,不是固定的在分布式系统中,节点可以随时加入或退出,并且节点之间的连接关系可以发生变化。 **误解 5:** * 传输成本为0虽然分布式系统提供了节点之间的通信和数据交换能力,但实际上,这种信息传输是需要消耗资源和产生成本的带宽消耗节点之间的信息传输需要利用网络带宽进行数据传输,带宽是有限的资源,因此在分布式系统中进行大量的数据传输会占用网络带宽,从而导致其他数据传输速度的下降或延迟网络延迟。

正文

哈喽大家好,我是咸鱼

我们知道,随着企业规模或者说业务规模的不断扩大,为了应对不断增长的业务需求和提高系统的可伸缩性、可靠性和性能,计算机系统由一开始的单体系统逐渐发展成分布式系统

那么今天咸鱼给大家介绍一些关于小白在学习分布式系统遇到的一些常见误解

误解1.网络是可靠的

在分布式系统中,任何特定的网络通信都是不可靠的,都可能会失败

比如说服务 A 与服务 B 进行通信,由于网络不稳定,导致它们之间的数据交换有丢失

这时候,我们就需要为系统提供一些解决方法来尽可能地保证服务 A 与服务 B 之间交换的数据不丢失

  • 重传机制

其中就包括重传机制,当网络通信出现问题时,可以通过重试机制来重新发送数据,直到数据被成功接收。重试机制可以提高数据传输的可靠性,但也会增加网络通信的负担

  • 消息队列

还有一种比较常见的解决方案就是存储和转发模式——数据并没有直接发送给下游服务器,而是将其存储在处在上下游之间的中间服务器上,下游服务器再去中间服务器上面取

看到这里,是不是觉得这个方案很熟悉

没错,它就是消息队列

在分布式系统中,可以采用消息队列来解决网络通信不可靠导致数据丢失的问题。消息队列可以将数据存储在队列中,等待接收方处理,以保证数据的可靠性

误解2.延迟为零

在分布式系统中,服务与服务之间有可能不仅仅是逻辑上的分布,还有可能是地理位置上的分布

那么就会出现服务与服务之间的通信有延迟,而且这种延迟是无法避免的,延迟可以说是任何网络请求的必须开销

通信延迟的主要原因包括数据传输的物理距离、网络拥塞、传输介质的带宽和传输协议等。由于光传播速度的限制,跨越较长距离的数据传输会导致一定的传输延迟

举个例子,假设一个电子商务平台的分布式架构包括前端应用服务器、商品服务和用户服务,它们分别部署在美国和中国两个地区的数据中心

当用户在中国访问该电商平台时,其请求需要经过国际互联网进行跨洲传输,可能会导致通信延迟增加。这种延迟会对用户体验产生影响,例如网页加载速度变慢或交互响应时间延长

现在比较常见的解决方案就是——内容分发网络(Content delivery networks, CDN)

误解3.网络是安全的

没有绝对安全的网络

在分布式系统中,网络存在不安全的情况是一个重要的问题。由于分布式系统的核心特点是通过网络进行通信和数据传输,网络的不安全性可能导致以下问题:

  1. 数据泄露:网络传输过程中,如果未加密或传输通道存在漏洞,敏感数据可能被截获或窃取,导致数据泄露的风险
  2. 数据篡改:网络中的攻击者可能截取、篡改或伪造数据包,对数据进行恶意篡改或操纵,从而影响系统的完整性和可靠性
  3. DOS 和 DDOS 攻击:网络中的攻击者可以通过拒绝服务(Denial of Service,DoS)攻击或分布式拒绝服务(Distributed Denial of Service,DDoS)攻击,使系统无法正常响应合法用户的请求,导致服务不可用
  4. 身份验证和授权问题:分布式系统中的各个节点需要相互进行身份验证和授权,以确保只有合法的用户或服务可以访问系统资源。网络不安全可能导致身份伪造、恶意访问和权限提升等问题

为了应对分布式系统中网络不安全的情况,可以采取以下安全措施:

  1. 加密通信:使用加密协议和算法对数据进行加密,确保在网络传输过程中数据的机密性和完整性。
  2. 身份验证和授权:采用安全的身份验证机制,例如使用证书、令牌或双因素认证等,验证用户或服务的身份,并为其分配适当的访问权限。
  3. 安全传输层协议(TLS):使用TLS协议保护网络通信,确保数据在传输过程中的安全性和完整性。
  4. 防火墙和入侵检测系统:在网络边界部署防火墙和入侵检测系统,监测和阻止恶意流量和攻击,保护系统免受未经授权的访问和攻击。
  5. 安全审计和日志监控:记录和监控系统的安全事件和活动,及时检测异常行为,并进行安全审计和调查。
  6. 安全更新和漏洞修复:及时更新和修补系统中存在的安全漏洞,确保系统的安全性和稳定性。

误解4.架构是一成不变的

分布式系统的架构通常是动态的,不是固定的

在分布式系统中,节点可以随时加入或退出,并且节点之间的连接关系可以发生变化

这样的好处是什么呢?

  • 弹性扩展

分布式系统的一个主要优势是能够根据需求进行弹性扩展。当系统负载增加时,可以通过添加更多的节点来分担负载

这种扩展可以是垂直的(增加节点的资源容量)或水平的(增加节点的数量),并且可以根据需要进行动态调整。这种灵活性使得系统能够适应变化的负载需求

  • 提高容错性

在分布式系统中,即使某个节点发生故障或断开连接,系统仍然能够继续运行(避免了单点故障)

其他节点可以接管故障节点的工作,并保持系统的可用性和稳定性。这种容错性使得分布式系统更加健壮和可靠

  • 数据冗余

为了提高系统的性能和可靠性,分布式系统通常会在不同的节点之间复制和存储数据的副本

副本(Replica)是分布式系统最常见的概念之一。当某一个节点上存储的数据丢失时,可以从副本上读取该数据以此来解决数据丢失的问题

误解5.传输成本为0

虽然分布式系统提供了节点之间的通信和数据交换能力,但实际上,这种信息传输是需要消耗资源和产生成本的

  • 带宽消耗

节点之间的信息传输需要利用网络带宽进行数据传输

带宽是有限的资源,因此在分布式系统中进行大量的数据传输会占用网络带宽,从而导致其他数据传输速度的下降或延迟

  • 网络延迟

信息在分布式系统中传输需要经过网络,而网络延迟是不可避免的

这包括了传输时间、传播时间以及在路由器和网络设备上的处理时间等

分布式系统中,节点之间的信息传输可能会受到网络延迟的影响,特别是当节点之间的地理位置较远时,通信延迟可能更高

  • 数据传输安全

在分布式系统中,确保信息传输的安全性是至关重要的

为了保护数据的隐私和完整性,可能需要采取加密、认证和访问控制等安全措施,这也会增加信息传输的成本和复杂性

与在学习分布式系统时遇到的五个常见误解相似的内容:

在学习分布式系统时遇到的五个常见误解

哈喽大家好,我是咸鱼 我们知道,随着企业规模或者说业务规模的不断扩大,为了应对不断增长的业务需求和提高系统的可伸缩性、可靠性和性能,计算机系统由一开始的单体系统逐渐发展成分布式系统 那么今天咸鱼给大家介绍一些关于小白在学习分布式系统遇到的一些常见误解 ## 误解1.网络是可靠的 **在分布式系统中,

[转帖]看了阿里云云解析DNS,涨见识了

https://www.jianshu.com/p/8354e647cf71 在学习这篇文章前,只知道DNS就是做域名解析的,查到域名对应的ip就结束了。没成想惊呆了,DNS还有这么大的规模这么低的时延要求。 阿里云DNS是一个复杂的巨型分布式系统。依托云计算丰富的计算和存储资源和技术,阿里云在全球

分布式机器学习:异步SGD和Hogwild!算法(Pytorch)

同步算法的共性是所有的节点会以一定的频率进行全局同步。然而,当工作节点的计算性能存在差异,或者某些工作节点无法正常工作(比如死机)的时候,分布式系统的整体运行效率不好,甚至无法完成训练任务。为了解决此问题,人们提出了异步的并行算法。在异步的通信模式下,各个工作节点不需要互相等待,而是以一个或多个全局服务器做为中介,实现对全局模型的更新和读取。这样可以显著减少通信时间,从而获得更好的多机扩展性。

[转帖]【Redis学习06】分布式锁及其优化

文章目录 前言1. 什么是分布式锁2. 分布式锁的实现2.1 基于Redis的分布式锁实现方法2.2 基于redis实现分布式锁的初级版本2.3 改进分布式锁2.4 基于Lua脚本改善分布式锁 前言 上一篇博客我们讲到秒杀问题的一人一单在单机模式下使用synchronized添加悲观锁能解决并发问题

[转帖]【Redis学习06】分布式锁及其优化

文章目录 前言1. 什么是分布式锁2. 分布式锁的实现2.1 基于Redis的分布式锁实现方法2.2 基于redis实现分布式锁的初级版本2.3 改进分布式锁2.4 基于Lua脚本改善分布式锁 前言 上一篇博客我们讲到秒杀问题的一人一单在单机模式下使用synchronized添加悲观锁能解决并发问题

[转帖]【Redis学习06】分布式锁及其优化

文章目录 前言1. 什么是分布式锁2. 分布式锁的实现2.1 基于Redis的分布式锁实现方法2.2 基于redis实现分布式锁的初级版本2.3 改进分布式锁2.4 基于Lua脚本改善分布式锁 前言 上一篇博客我们讲到秒杀问题的一人一单在单机模式下使用synchronized添加悲观锁能解决并发问题

文章学习:TPRE-分布式门限代理重加密

学习文章:TPRE:分布式门限代理重加密 前言 成方金科新技术实验室与隐语团队合作,构建了“基于国密的分布式门限代理重加密算法TPRE”,为用户提供了一种安全、高效、自主可控的数据共享和授权管理方案。在数据隐私保护和数据安全共享方面具有广泛的应用前景。 ⚠️:该算法由成方金科密码学研究员张曙光(知乎

理论+实践,带你了解分布式训练

详细介绍分布式机器学习系统的基础概念、分布式训练集群架构、分布式训练并行策略,并以DeepSpeed 为例介绍如何在集群上训练大语言模型。

联邦学习:联邦场景下的域泛化

然而,目前大多数域泛化方法需要将不同领域的数据进行集中收集。然而在现实场景下,由于隐私性的考虑,数据常常是分布式收集的。因此我们需要考虑联邦域泛化(federated domain generalization, FedDG)方法。这里需要注意的是,传统的域泛化方法常常要求直接对齐表征或操作数据,这在联邦场景下是违反数据隐私性的。此外对于跨域的联邦学习,由于客户端异构的数据分布/领域漂移(如不同的

DeepSpeed框架:1-大纲和资料梳理

DeepSpeed是一个深度学习优化软件套件,使分布式训练和推理变得简单、高效和有效。它可以做些什么呢?训练/推理具有数十亿或数万亿参数的密集或稀疏模型;实现出色的系统吞吐量并有效扩展到数千个GPU;在资源受限的GPU系统上进行训练/推理;实现前所未有的低延迟和高吞吐量的推理;以低成本实现极限压缩,