天天看点

分布式系统特点和常见问题

分布式系统的特点

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

-分布性

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

-对等性

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

-并发性

同一分布式系统中的多个节点,可能会并发地操作一些共享资源,诸如数据库或分布式存储等,如何高效地协调分布式并发操作也成为了分布式系统架构与设计中最大的挑战之一。

-缺乏全局时钟

典型的分布式系统由一系列在空间上随意分布的多个进程组成,具有明显的分布性,这些进程之间通过交换消息来进行互相通信,因此,在分布式系统中,很难定义两个时间究竟谁先谁后,原因就是因为分布式系统缺乏一个全局的时钟序列控制。

-故障总是会发生

组成分布式系统的所有计算机,都有可能发生任何形式的故障,任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生。

分布式环境的问题

-通信异常

从集中式到分布式,必然引入了网络因素,而由于网络本身的不可靠性,因此就引入了额外的问题。分布式系统各节点之间的网络通信能够正常进行,其延时也会远大于单机操作,在消息的收发过程中,消息丢失和消息延迟变得十分普遍。

-网络分区

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

-三态

由于网络可能会出现各种各样的问题,因此分布式系统的每一次请求与响应,存在特有的三态概念:成功、失败、超时。当网络在异常情况下,可能会出现超时现象,通常由以下两种情况:1. 由于网络原因,该请求并没有被成功地发送到接收方,而是在发送过程就发生了消息丢失现象。2. 该请求成功的被接收方接受后,并进行了处理,但是在将响应反馈给发送方时,发生了消息丢失现象。

-节点故障

节点故障是指组成分布式系统的服务器节点出现宕机或僵死现象,每个节点都有可能出现故障,并且煤炭都在发生。

继续阅读