从集中式到分布式

前言

         著名学者胡适说过这么一句话:“发表是最好的记忆”,而阿里巴巴中间件负责人毕玄在《分布式java应用 基础和实战》一书中提到实践是最好的成长,发表是最好的记忆,接下一来我们来了解一下集中式系统如何向分布式系统演进。集中式系统,就是将所有的业务功能集成在同一个系统,只要部署好一台应用,就能够满足业务保证完整的业务链路。但是集中式系统存在非常明显的单点问题,对扩展不够灵活,对部署不够友好,在线上高速运转的业务务必要停下来。

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

从集中式到分布式

       在20世纪60年代大型主机被发明出来之后,凭借其超强的计算和io处理能力以及在稳定型和安全性方面的卓越表现,在很长的一段时间内,大型主机引领了计算机行业以及商业计算领域的发展,在大型主机的研发上最知名的当属IBM,其主导研发的革命性产品System/360系列大型主机,是计算机发展史上的一个里程碑,当时,IT界进入了大型的主机时代。

       伴随着大型主机时代的到来,集中式的计算机系统架构也成为了主流,在那个时候,由于大型主机卓越性能和良好的稳定性,其在处理能力方面的优势非常的明显,使得IT系统快速进入集中式处理阶段,其对应的计算机系统成为集中式系统。但是,从20世纪80年代以来,计算机系统向网络化和微型化的发展日趋明显,传统的集中式处理模式越来越不能适应人们的需求,主要表现在以下几个方面:

1.大型主机的人才培养成本非常的高,通常一台大型主机汇集了大量精密的计算机组件,操作非常的复杂,这对于一个运维人员需要掌握的技术和细节提出了非常高的要求。

2.大型主机也是非常的昂贵。通常配置一台比较好的IBM大型主机,售价很高,因此也只有像政府,金融和电信企业才有能力去采购。

3.集中式系统存在严重的单点问题。一旦一台机器出现了故障,将会导致系统处于不可用的状态。

4.大型主机在市场的份额越来越少。而是采用微型计算机。

集中式的概念

         那什么是集中式系统呢?集中式系统指的是一台或者多台服务器组成中心节点,数据集中存储在这个中心结点,同时,系统的所有业务都在这个中心结点来集中的处理。集中式系统存在部署简单,但是不友好,无须考虑考虑对对个服务如何多节点的协作,也不需要考虑多节点之间的分布式事务问题。

分布式的概念

         在分布式系统的概念和设计一书中是这么定义的:分布式系统是一个硬件和软件组件分布在一个或者多个的容器上,彼此之间通过消息传递进行通信和协调的系统。 这些软件组件相互协助构成了业务的链路回路。这些组件的分布,可以是同一台服务器上的不同容器,也可以在同一个机房,同一个城市等等。

分布式的特点

         分布式系统主要有以下几个特点:分布性,对等性,并发性,缺乏全局时钟,故障总是在发生。

1.分布性

分布式系统的多台服务器会在空间上随意的分布,机器的分布情况也会随着变动。

2.对等性:

分布式系统中的组件和组件之间没有主从之分,所有的组件节点都是平等的。

3.并发性:

同一个分布式系统中的多个节点,可能会并发的对一些资源访问,数据库和缓存存储等等,如何高效的协调分布式节点成为了分布式系统成为最大的挑战。

4.缺乏时钟性

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

5.故障总是在发生

组成分布式系统的所有的计算机,都有可能发生任何形式的故障,一个被大量工程事件所检验过的黄金定理:在任何设计阶段考虑到的异常情况,一定会在系统实际运行中发生。并且还会出现系统未知的错误。

分布式环境的问题

1.通信异常

在集中式系统向分布式系统的演变过程中,因为各个节点之间的交互是通过网络,因此网络异常成为了分布式环境的问题。网络光纤,路由器,dns硬件都会导致分布式系统不能顺利的完成网络通信。同时,节点之间的交互会存在延时,在单机内存中的方位延时在纳秒数量级,10ns左右,而在分布式系统交互的延时在0.1-1ms左右,相当于内存访问延时的105-106倍,因此会影响消息的收发的过程。因此消息的丢失和消息延迟变得非常的普遍。

网络分区

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

三态

在分布式系统中的每一次响应和应答,存在特有的三态的概念,即成功,失败,超时。在传统的单机系统中,应用程序在调用一个函数之后,给到的结果要么成功,要么失败。而在分布式系统中,由于网络的不可靠的因素,或出现超时的情况。而超时又有两种情况。

系统A向系统B发送消息,请求的消息并没有成功的被送到接收方B,而是在发送的过程中,就发生了消息丢失的现象。

系统A向系统B发送消息,请求的消息成功的被送到接受方B,接收方B进行了处理,但是将处理的结果反馈在系统A时,发生了网络异常,就发生了消息丢失的现象。

节点故障

节点的故障是分布式环境的另外一个常见的问题,指的是组成分布式系统的服务器结点出现的宕机或者僵死的现象。

原文地址:https://www.cnblogs.com/sunshine798798/p/9714971.html