zookeeper系列(一)背景(分布式)

来源:互联网 发布:sap mm03附加数据 编辑:程序博客网 时间:2024/06/01 14:04
  • 分布式的出现
  • 集中式和分布式的比较
  • 分布式的问题

          随着计算机系统规变得越来越大,将所有的业务单元集中部署到一个或者若干个大型机上的体系结构,已经越来越不能满足当今计算机系统了,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。

    1. 分布式的出现

          从20世纪80年代以来,计算机系统已经向网络化和微型化发展的趋势越来越明显,传统的集中式处理模式已经越来越来不能满足人们的需求。首先,大型主机的人才培养成本是非常高的,其次一台大型主机也是非常昂贵的,只有像政府、金融、电信这样的企业才能有能力采购大型主机。另外,集中式系统具有明显的单点问题,大型主机虽然在性能和稳定性上有明显的优势,但是也不可能保证永远不会出现问题。一旦一台大型主机出现故障,那么整个系统 将处于不可用状态,其后果相当严重。最后,随着业务的不断发展,用户访问量不断的增加,计算机系统的规模也越来越大,在单一主机上进行系统的扩容往往比较困难。另一方面 ,随着PC机性能的提升和网络技术的快速普及,大型主机的市场份额已经 越来越小,很多企业已经放弃了原来的大型 主机,而改用小型机和普通PC服务器来搭建分布式的计算机系统,分布式的处理方式越来越受到业界的青睐---计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。

          系统倾向于分布式发展潮流的真正驱动力是经济。

          Grosch定理中指出CPU的计算能力与它的价格的平方成正比,也就是说如果你付出两倍的价钱,就能获得四倍的性能。这一论断与当时的大型机技术非常吻合,因而使得许多机构都尽其所能购买最大的单个大型机。随着微处理机技术的发展,Grosch定理不再适用了。到了二十一世纪初期,人们只需花几百美元就能买到一个CPU芯片,这个芯片每秒钟执行的指令比80年代最大的大型机的处理机每秒钟所执行的指令还多。如果你愿意付出两倍的价钱,将得到同样的CPU,但它却以更高的时钟速率运行。因此,最节约成本的办法通常是在一个系统中使用集中在一起的大量的廉价CPU。所以,倾向于分布式系统的主要原因是它可以潜在地得到比单个的大型集中式系统好得多的性价比。实际上,分布式系统是通过较低廉的价格来实现相似的性能的。

           微处理机的集合不仅能产生比单个大型主机更好的性能价格比,而且还能产生单个大型主机无论如何都不能达到的绝对性能。我们能够用10,000个现代CPU芯片组成一个系统,每个CPU芯片以50 MIPS(每秒百万指令)的速率运行,那么整个系统的性能就是500,000 MIPS。而如果单个处理机(即CPU)要达到这一性能,就必需在2×10-12 秒(2 微微秒,0.002纳秒)的时间内执行一条指令,然而没有一个现存的计算机能接近这个速度,所以,无论是要以低价格获得普通的性能还是要以较高的价格获得极高的性能,分布式系统都能够满足。

           同集中式系统相比较,分布式系统的另一个潜在的优势在于它的高可靠性。通过把工作负载分散到众多的机器上,单个芯片故障最多只会使一台机器停机,而其它机器不会受任何影响。理想条件下,某一时刻如果有5%的计算机出现故障,系统将仍能继续工作,只不过损失5%的性能。对于关键性的应用,如核反应堆或飞机的控制系统,采用分布式系统来实现主要是考虑到它可以获得高可靠性。

           最后,渐增式的增长方式也是分布式系统优于集中式系统的一个潜在的重要的原因。通常,一个公司会买一台大型主机来完成所有的工作。而当公司繁荣扩充、工作量就会增大,当其增大到某一程度时,这个主机就不能再胜任了。仅有的解决办法是要么用更大型的机器(如果有的话)代替现有的大型主机,要么再增加一台大型主机。这两种作法都会引起公司运转混乱。相比较之下,如果采用分布式系统,仅给系统增加一些处理机就可能解决这个问题,而且这也允许系统在需求增长的时候逐渐进行扩充。

           从长远的角度来看,主要的驱动力将是大量个人计算机的存在和人们共同工作与信息共享的需要,这种信息共享必需是以一种方便的形式进行的,而不受地理或人员、数据,机器的物理分布的影响。正是因为这些客观条件的满足和主观市场的需求促使了分布式系统的出现。

     2. 集中式和分布式的特点

           集中式的特点

           所谓的集中式系统就是由一台或者多台计算机组成的中心节点,数据集中存储在这个中心中,并且整个系统中的所有业务单元都集中在这个中心节点上,系统的所有功能都由其集中处理,集中式系统的最大的特点就是部署结构简单。

           分布式的特点

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

           严格的讲,同一个分布式系统中的计算机在空间分布上可以是随意的,可以在不同的机柜上,不同的机房中,甚至在不同的城市中。总结起来分布式系统主要有一下几个特点。

  • 分布性

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

  • 对等性

           分布式系统中的计算机没有主从之分 ,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的。副本是分布式系统最常见的概念之一,指的是分布式系统对数据和服务提供一种冗余方式。在常见的分布式系统中,为了对外提供高可用的服务,我们往往对数据和服务进行副本处理,既进行备份。数据副本就是在不同的节点上持久化同一份数据,比如我们会对数据库进行备份;服务副本就是指多个节点提供相同的服务,每一个节点都能单独的接收来自外部的请求并进行处理,比如我们经常将自己项目部署在两个tomcat上。

  • 并发性

           在一个计算机网络中,程序运行过程中的并发性操作是非常常见的行为,同一个分布系统中的多个节点可能会并发的操作一些共享的资源。

  • 缺乏全局时钟

           由于分布式系统有明显的分布性,它们在空间上随意的分布,这些进程之间通过相互交换消息来相互通信,所以,在分布式系统中很难确定两个事件谁先谁后。

  • 故障总是会发生

            关于这一点没什么多说的。

    3. 分布式的问题

           在介绍分布式出现的时候我就说了分布式的优点,但是分布式系统体系结构从出现的之初就伴随着诸多的问题和挑战。

  • 通信异常

           从集中式向分布式演变的过程中必然少不了网络的因素,但也是因为网络固有的不稳定因素使得分布式系统出现了新的问题。分布式系统需要各个节点之间进行网路通信,而每次通信都有可能由于网络光纤、路由器和 DNS 等原因使得网络有不可用的风险,从而使分布式系统没办法完成一次网络通信。另外,即使分布式系统各节点之间能进行正常的通信,但是由于网络的延迟也会出现问题。

  • 网络分区

           当由于各种异常导致网络延迟不断加大的时候,最终就会导致组成分布式系统的所有节点中,只有部分节点之间可以进行正常的通信,而另外一些节点之间则没办法进行通信,我们称这种现象为网络分区,也就是一般人们说的 “脑裂” ,当这种情况出现后,分布式系统会出现局部的小集群,在极端情况下,这些局部的小集群就会单独的处理系统中需要整个系统才能完成的任务,这就对分布式系统的数据一致性提出了挑战。

  • 三态

            从上面的介绍中,我们已经知道由于网络原因,可能会导致各种各样的问题了,因此分布式系统的每一次请求和响应都存在三种状态,即成功、失败和超时,在传统的单机系统中,应用程序调用一个函数之后,能够得到明确的响应,但是在分布式系统中,由于网络是不稳定的,在网络异常的时候就会出现超时的现象。

  • 节点故障          

           节点故障是指组成分布式系统中的节点直接宕机或者僵死了。

  • 补充

           从上面可以看出主要的原意是因为网络的问题,由于它会损失信息,所以就需要专门的软件进行恢复。同时,网络还会产生过载。当网络负载趋于饱和时,必须对它进行改造替换或加入另外一个网络扩容。在这两种情况下,一个或多个建筑中的某些部分必须花费很高的费用进行重新布线,或者更换网络接口板(例如用光纤)。一旦系统依赖于网络,那么网络的信息丢失或饱和将会抵消我们通过建立分布式系统所获得的大部分优势。

          最后,上面我们作为优点来描述的数据易于共享性也是具有两面性的。如果人们能够很方便地存取整个系统中的数据,那么他们同样也能很方便地存取与他们无关的数据。换句话说,我们经常要考虑系统的安全性问题。通常,对必须绝对保密的数据,使用一个专用的、不与其它任何机器相连的孤立的个人计算机进行存储的方法更可取。而且这个计算机被保存在一个上锁的十分安全的房间中,与这台计算相配套的所有软盘都存放在这个房间中的一个保险箱中。

0 0