分布式系统的特点及问题

分布式系统由分布在不同位置的组件构成,强调对等性、并发性和容错性。节点间通过消息传递通信,缺乏全局时钟,常面临网络异常、分区、超时和故障等问题。解决这些问题需要处理并发操作、确保数据一致性,并实现高可用和容错性。
摘要由CSDN通过智能技术生成

分布式的特点

在《分布式系统概念与设计》注’一书中,对分布式系统做了如下定义:

  • 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

上面这个简单的定义涵盖了几乎所有有效地部署了网络化计算机的系统。严格地讲,同 一个分布式系统中的计算机在空间部署上是可以随意分布的,这些计算机可能被放在不同的机柜上,也可能在不同的机房中,甚至分布在不同的城市。无论如何,一个标准的 分布式系统在没有任何特定业务逻辑约束的情况下,都会有如下几个特征。

分布性
分布式系统中的多台计算机都会在空间上随意分布,同时,机器的分布情况也会随 时变动。

对等性
分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的。副本 (Replica) 是分布 式系统最常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。 在常见的分布式系统中,为了对外提供高可用的服务,我们往往会对数据和服务进 行副本处理。数据副本是指在不同的节点上持久化同一份数据,当某一个节点上存 储的数据丢失时,可以从副本上读取到该数据,这是解决分布式系统数据丢失问题 最为有效的手段。另一类副本是服务副本,指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。

并发性
在“问题的提出”部分,我们已经提到过与“更新的并发性”相关的内容。在一个 计算机网络中,程序运行过程中的并发性操作是非常常见的行为,例如同一个分布 式系统中的多个节点,可能会并发地操作一些共享的资源,诸如数据库或分布式存 储等,如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最 大的挑战之一。

缺乏全局时钟
在上面的讲解中,我们已经了解到,一个典型的分布式系统是由一系列在空间上随 意分布的多个进程组成的,具有明显的分布性,这些进程之间通过交换消息来进行 相互通信。因此,在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是因 为分布式系统缺乏一个全局的时钟序列控制。关于分布式系统的时钟和事件顺序, 在 Leslie Lamport ffi2 的经典论文 Time, Clocks, and theOrdering of Events in a Distributed System "'中已经做了非常深刻的讲解。

故障总是会发生
组成分布式系统的所有计算机,都有可能发生任何形式的故障。一个被大量工程实 践所检验过的黄金定理是:任何在设计阶段考虑到的异常情况,一定会在系统实际 运行中发生,并且,在系统实际运行过程中还会遇到很多在设计时未能考虑到的异 常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。

分布式环境的各种问题

分布式系统体系结构从其出现之初就伴随着诸多的难题和挑战,本节将向读者简要的介 绍分布式环境中一些典型的问题。

通信异常
从集中式向分布式演变的过程中,必然引入了网络因素,而由于网络本身的不可靠性, 因此也引入了额外的
问题。分布式系统需要在各个节点之间进行网络通信,因此每次网 络通信都会伴随着网络不可用的风险,网
络光纤、路由器或是 DNS 等硬件设备或是系 统不可用都会导致最终分布式系统无法顺利完成一次网络通信。
另外,即使分布式系统 各节点之间的网络通信能够正常进行,其延时也会远大于单机操作。通常我们认为在
现 代计算机体系结构中,单机内存访问的延时在纳秒数量级(通常是 10ns 左右),而正常 的一次网络通信
的延迟在 0.1~lms 左右(相当于内存访问延时的 105~106 倍),如此巨 大的延时差别,也会影响消息的收发
的过程,因此消息丢失和消息延迟变得非常普遍。

网络分区
当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终 导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节 点则不能——我们将这个现象称为网络分区,就是俗称的“脑裂”。当网络分区出现时, 分布式系统会出现局部小集群,在极端情况下,这些局部小集群会独立完成原本需要整 个分布式系统才能完成的功能,包括对数据的事务处理,这就对分布式一致性提出了非常大的挑战。

三态
从上面的介绍中,我们已经了解到了在分布式环境下,网络可能会出现各式各样的问题, 因此分布式系统的每一次请求与响应,存在特有的"三态”概念,即成功、失败与超时。

在传统的单机系统中,应用程序在调用一个函数之后,能够得到一个非常明确的响应: 成功或失败。而在分布式系统中,由于网络是不可靠的,虽然在绝大部分情况下,网络 通信也能够接收到成功或失败的响应,但是当网络出现异常的情况下,就可能会出现超 时现象,通常有以下两种情况:

  • 由于网络原因,该请求(消息)并没有被成功地发送到接收方,而是在发送过程 就发生了消息丢失现象。
    该请求(消息)成功的被接收方接收后,并进行了处理,但是在将响应反馈给发 送方的过程中,发生了消息丢失现象。

当出现这样的超时现象时,网络通信的发起方是无法确定当前请求是否被成功处理的。

节点故障
节点故障则是分布式环境下另一个比较常见的问题,指的是组成分布式系统的服务器节 点出现的宕机或“僵死”现象。通常根据经验来说,每个节点都有可能会出现故障,并且每天都在发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值