分布式系统定义
在《分布式系统概念与设计》一书中,对分布式系统做了 如下定义:
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
也就是说一个分布式系统中的计算机在空间部署上可以是随意分布的,这些计算机可能被放在不同的机柜上,也可能在不同的机房中,甚至分布在不同的城市。这些计算机之间通过网络来通信。
分布式的特点
分布式系统有如下体征:
分布性
分布式系统中的多台计算机在空间上随意分步。当然,机器的分布情况也会随时变动。
对等性
分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的。
并发性
一个分布式系统中的多个节点,可能会并发地操作一些共享的资源,比如数据库或分布式存储等。如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最大的挑战。
缺乏全局时钟
在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是分布式系统缺乏一个全局的时钟控制序列。
故障总是会发生
组成分布式系统的所有计算机,都有可能发生任何形式的故障。实践表明,在分布式系统中,计算机发生故障是比较常见的。因此,在分布式系统设计时,必须考虑到该问题。
分布式环境的各种问题
分布式系统体系结构从其出现之初就伴随着诸多的难题和挑战,本节介绍分布式系统中的一些典型的问题。
通信异常
分布式系统中个计算机之间是通过网络进行通信的。由于网络本身的不可靠性,每次网络通信都会伴随着网络不可用的风险。即使分布式系统各节点之间的网络通信能够正常进行,其延时也会远远大于单机操作。在分布式系统中,消息延时和消息丢失非常普遍。
网络分区
当网络发生异常情况,可能导致分布式系统中某些节点之间能够正常通信,而某些节点之间无法通信——该现象就是网络分区,就是俗称的『脑裂』。当网络分区出现时,分布式系统就会出现局部小集群,小集群内计算机可以相互通信,小集群之间计算机无法通信。这就对分布式一致性提出了非常大的挑战。
三态
因为在分布式系统中,网络可能会出现各式各样的问题,因此分布式系统的每一次请求和响应,存在特有的『三态』概念,即成功、失败与超时。在传统的单机系统中,应用程序在调用一个函数之后,能够得到一个非常明确的相应:成功或失败。而在分布式系统中,由于网络是不可靠的,当网络出现异常的情况下,就可能出现超时现象,发生消息丢失现象。
节点故障
节点故障是分布式环境下一个比较常见的问题,指的是组成分布式系统的服务器节点出现宕机或『僵死』现象。通常根据经验来说,每个节点都有可能出现故障,并且每天都在发生。
网友评论