从 paxos 到 zookeeper(一):分布式架构之从集中式到分布式

1.1 序言

随着计算机系统规模变得越来越大,将所有的业务单元集中部署在一个或者若干个大型机上的体系结构,已经越来越不能满足当今计算机系统,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。同时,随着微型计算机的出现,越来越多的廉价的PC机成为了各大企业IT架构的首选,分布式的处理方式越来越受到业界的青睐-----计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。

1.2 从集中式到分布式

从20世纪80年代以来,计算机系统向网络化和微型化的发展日趋明显,传统集中式处理模式越来越不能适应人们的需求
首先,大型主机的人才培养成本非常之高。通常一台大型主机汇集了大量精密的计算机组件,操作非常复杂,这对一个运维人员掌握其技术细节提出了非常高的要求。
其次,大型主机也是非常昂贵的。通常一台配置较好的IBM大型主机要上百万美元甚至更高。

1.3集中式的特点

所谓的集中式系统就是指由一台或多台计算机组成中心节点,数据集中存储于这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统的所有功能均能由其集中处理。也就是说,在集中式系统中,每个终端或客户端机器仅仅负责数据的录入和输出,而且数据的存储和控制处理完全交由主机来完成。
集中式系统最大的特点就是部署结构简单。由于集中式系统往往基于底层性能卓越的大型主机,因此无需考虑如何对服务进行多个节点的部署,也就不用考虑多个节点之间的分布式协作问题

1.4分布式的特点

在<<分布式系统概念与设计>> 一书中,对于分布式系统做了如下的定义:
分布式系统是一个硬件或者软件组件分布在不同的网格计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
严格的来说,同一个分布式系统中计算机在空间部署上是可以随意分布的,这些计算机可能被放在不同的机柜上面,也可能在不同的机房当中,甚至分布在不同的城市。无论如何,一个标准的分布式系统在没有任何特定业务逻辑的约束下都会有如下几个特性:
1.4.1 分布性
分布式系统中的多台计算机都会在空间上随意分布的,同时,机器的分布情况也会随时变动。
1.4.2 对等性
分布式系统中的计算机是没有主从之分的既没有控制整个系统的主机,也没有被控制的从机。组成分布式系统的所有的计算机都是对等的。副本是分布式系统最常见的概念之一指的是分布式系统对数据和服务提供的一种冗余方式。再常见的分布式系统中,为了对外提供高可用服务,我们往往会对数据进行副本处理。数据副本是指在不同的节点上持久化同一份数据,档某一个节点上的存储数据丢失的时候,可以从副本读取到该数据,这个是解决分布式系统数据丢失最有效的手段。另一类就是服务副本,指多个节点提供同样的服务,每个节点都有能力接受来自外部的请求并进行相应的处理。
1.4.3. 并发性
在一个计算机网格中,程序运行过程中的并发性操作是非常常见的行为,例如在同一个分布式系统的多个节点,可能会并发的操作一些共享的资源,诸如数据库的分布式存储等,如何准确并高效的协调分布式并发操作也成为分布式系统架构与设计的最大挑战之一。
1.4.4 缺乏全局时钟
一个典型的分布式系统是由一系列在空间上随意分布的多个进程组成的,具有很明显的分布性,这些进程之间通过交换消息来进行相互通信,因此在分布式系统中,很难定义两个事件究竟谁先谁后,原因就是因为分布式系统缺乏一个全局的时钟序列控制。
1.4.5 故障总会发生
组成分布式系统的所有计算机,都有可能发生任何形式的故障。一个被大量工程检验的过的黄金定律:任何在设计阶段考虑的异常情况,一定会在实际系统中发生,并且,在系统实际运行中还会遇到许多在实际时未能考虑到的异常故障。所以,除非需求指标允许,在系统设计时不能放过任何异常情况。

1.5分布式环境的各种问题

分布式系统体系结构从其出现之初九伴随着许多的难题和挑战,下面介绍一些可能遇到的一些典型问题。
1.5.1 通信异常
从集中式到分布式演变的过程中,必然引入了网络因素,而且网络本身的不可靠性,因此也引入了额外的问题。分布式系统需要在各个节点进行网络通信,因此每次网络通信都会都会伴随着网络不可用的风险。另外即使分布式系统之间的网络通信是正常的,其延时也是远远大于单机操作。通常单机访问延时大概在10 ns 左右正常一次网络通信延迟在0.1~1ms 左右。差距105倍因此消息丢失和消息延迟变得非常普遍。
1.5.2网络分区
当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延迟不断增大,最终导致组成部分分布式系统的所有节点中,只有部分节点之间能够进行正常的通信,而另一些节点则不能--------我们将这个现象称为网络分区,就是俗称的脑裂。当网络分区出现时,分布式系统出现局部小集群,在极端情况下,这些局部小集群会独立完成原本要整个分布式系统才能完成的功能,包括对数据的事务处理,这就对分布式一致性提出了非常大的挑战。
1.5.3 三态
从上面的介绍中,我们已经了解在分布式环境下,网络可能会出现各种各样的问题,因此分布式系统的每一个请求与相应,存在特有的三态概念,即成功,失败与超时。在与传统的单机系统中,应用程序在调用一个函数之后,能够得到一个非常明确的响应成功或者失败。而在分布式系统中,由于网络的不可靠性,虽然在大部分情况下能得到一个明确的响应。但是由于网络出现异常的情况下,就可能出现超时现象,通常有如下两种情况。
1.由于网络出现原因该请求并没有成功的发送到接收方,而是在发送过程中发生了数据丢失的情况。
2.该请求成功的被接收方接收,并进行了处理,但是在响应反馈发送方的时候发生了消息丢失的情况。
当出现这样的超时现象时,网络通信的发起方时无法确定当前请求是否被处理成功的
1.5.4节点故障
节点故障则是分布式环境下另一个常见的问题,指的是组成分布式系统的机器的节点出现了宕机或者僵死的现象,一般来说每个节点都有可能出现故障,并在每天都有可能发生

欢迎关注,更多福利

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012957549/article/details/83301429