分布式系统概述与云计算
软件专业09-1班 李天 (20) 指导教师:胡晓宏
摘 要
随着社会的信息化和互联网的发展,分布式系统的重要性日益提高。本文将从分布式系统的产生、发展、演变谈起,并展望分布式系统的未来,并着重谈分布式系统的主要应用:云计算。
关键词:分布式系统 云计算
引 言
分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
云计算是分布式计算、并行计算和网格计算的发展,或者说是这些计算机科学概念的商业实现。其基本原理是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中。(网格计算是分布式计算的一种。通过利用大量异构计算机(通常为桌面)的闲置资源(CPU、磁盘空间等),将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,以解决大规模的计算问题。网格计算的焦点在于支持跨管理域计算的能力,这使它与传统的计算机集群或传统的分布式计算相区别。)
概 述
分布式 :
分布式数据库的研究始于20世纪70年代中期。世界上第一个分布式数据库系统SDD-1 是由美国计算机公司(CCA)于1979年在DEC计算机上实现。20世纪90年代以来,分布式数据库系统进入商品化应用阶段,传统的关系数据库产品均发展成以计算机网络及多任务操作系统为核心的分布式数据库产品,同时分布式数据库逐步向客户机/服务器模式发展。
分布式系统,顾名思义,为操作系统的一种类型,是传统操作系统思想的变革。分布式操作系统安装在整个分布系统里面,其中任何一台也可以安装有自己的本地操作系统。
分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。
分布式系统主要分为以下几类:分布式软件系统,分布式文件系统,分布式数据库系统。
分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。 分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。
分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。分布式数据库在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。当然,分布在各个结点上的子数据库在逻辑上是相关的。
分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性。
分布式数据库系统是由若干个站集合而成。这些站又称为节点,它们在通讯网络中联接在一起,每个节点都是一个的数据库系统,它们都拥有各自的数据库、 处理机、终端,以及各自的局部数据库管理系统。因此分布式数据库系统可以看作是一系列集中式数据库系统的联合。它们在逻辑上属于同一系统,但在物理结构上 是分布式的。
1.分布式数据库系统发展其原因
(1)它可以解决组织机构分散而数据需要相互联系的问题。比如银行系统,总行与各分行处于不同的城市或城市中的各个地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式的系统。
(2)如果一个组织机构需要增加新的相对自主的组织单位来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。
(3)均衡负载的需要。数据的分解采用使局部应用达到最大,这使得各处理机之间的相互干扰降到最低。负载在各处理机之间分担,可以避免临界瓶颈。
(4)当现有机构中已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。
(5)相等规模的分布式数据库系统在出现故障的几率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此就整个系统来讲它的可靠性是比较高的。 2.特点
(1)在分布式数据库系统里不强调集中控制概念,它具有一个以全局数据库管理员为基础的分层控制结构,但是每个局部数据库管理员都具有高度的自主权。
(2)在分布式数据库系统中数据性概念也同样重要,然而增加了一个新的概念,就是分布式透明性。所谓分布式透明性就是在编写程序时好象数据没有被分布一样,因此把数据进行转移不会影响程序的正确性。但程序的执行速度会有所降低。
(3) 集中式数据库系统不同,数据冗余在分布式系统中被看作是所需要的特性,其原因在于:首先,如果在需要的节点复制数据,则可以提高局部的应用性。其次,当某 节点发生故障时,可以操作其它节点上的复制数据,因此这可以增加系统的有效性。当然,在分布式系统中对最佳冗余度的评价是很复杂的。 分布式系统的类型,大致可以归为三类:
1、分布式数据,但只有一个总据库,没有局部数据库。 2、分层式处理,每一层都有自己的数据库。
3、充分分散的分布式网络,没有控制部分,各节点之间的联接方式又可以有多种,如松散的联接,紧密的联接,动态的联接,广播通知式联接等。 3.分布式系统的优点
(1)更适合管理与控制。分布式系统的结构更适合具有地理分布特性的组织或机构使用,允许分布在不同区域、不同级别的各个部门对其自身的数据实行局部控制。例 如:实现全局数据在本地录入、查询、维护,这时由于计算机资源靠近用户,可以降低通信代价,提高响应速度,而涉及其他场地数据库中的数据只是少量的,从而 可以大大减少网络上的信息传输量;同时,局部数据的安全性也可以做得更好。
(2)具有灵活的体系结构。集中式系统强调的是集中式控制,物理数据库是存放在一个场地上的,由一个DBMS (Database Management System,数据库管理系统)集中管理。多个用户只可以通过近程或远程终端在多用户操作系统支持下运行该DBMS来共享集中是数据库中的数据。而分布式系统的场地局部DBMS的自治性,使得大部分的局部事务管理和控制都能就地解决,只有在涉及其他场地的数据时才需要通过网络作为全局事务来管理。分布式DBMS可以设计成具有不同程度的自治性,从具有充分的场地自治到几乎是完全集中式的控制。
(3)系统经济,可靠性高,可用性好。与一个大型计算机支持一个大型的集中数据库加一些进程和远程终端相比,由超级微型计算机或超级小型计算机支持的分布式数据 库系统往往具有更高的性价比和实施灵活性。分布式系统比集中式系统具有更高的可靠性和更好的可用性。如由于数据分布在多个场地并有许多复制数据,在个别场 地或个别通信链路发生故障时,不致于导致整个系统的崩溃,而且系统的局部故障不会引起全局失控。
(4)在一定条件下响应速度加快。如果存取的数据在本地数据库中,那末就可以由用户所在的计算机来执行,速度就快。
(5) 可扩展性好,易于集成现有系统,也易于扩充。对于一个企业或组织,可以采用分布式数据库技术在以建立的若干数据库的基础上开发全局应用,对原有的局部数据 库系统作某些改动,形成一个分布式系统。这比重建一个大型数据库系统要简单,既省时间,又省财力、物力。也可以通过增加场地数的办法,迅速扩充已有的分布 式数据库系统。 4.分布式系统的缺点
(1)通信开销较大,故障率高。例如,在网络通信传输速度不高时,系统的响应速度慢,与通信县官的因素往往导致系统故障,同时系统本身的复杂性也容易导致较高的故障率。当故障发生后系统恢复也比较复杂,可靠性有待提高。
(2)数据的存取结构复杂。一般来说,在分布时数据库中存取数据,比在集中时数据库中存取数据更复杂,开销更大。
(3) 数据的安全性和保密性较难控制。在具有高度场地自治的分布时数据库中,不同场地的局部数据库管理员可以采用不同的安全措施,但是无法保证全局数据都是安全 的。安全性问题式分布式系统固有的问题。因为分布式系统式通过通信网络来实现分布控制的,而通信网络本身却在保护数据的安全性和保密性方面存在弱点,数据 很容易被窃取
(4)分布式数据库的设计、场地划分及数据在不同场地的分配比较复杂。数据的划分及分配对系统的性能、响应速度及可用性等具有极大的影响。不同场地的通信速度与局部数据 库系统的存取部件的存取速度相比,是非常慢的。通信系统有较高的延迟,在CPU上处理通信信息的代价很高。分布式数据库系统中要注意解决分布式数据库的设计、查询处理和优化、事务管理及并发控制和目录管理等问题。
分布式系统的重要应用——云计算
云计算属于分布式系统,众所周知,并行程序的设计、编码和调试非常挑战,在云计算分布式系统中,由于网络延时(毫秒级)远远大于单机系统内延时(微秒 级)、部件的不可靠性以及节点之间较松的耦合度(低于通常的并行大型计算机)和异构性,高效并行程序的设计和实现难度更大,极大地阻碍普通程序员使用云计算系统。为了解决这个问题,Google创造性地把Map/Reduce模型成功地应用到了云计算系统中,极大地降低
了云计算系统应用程序的开发难度且提高了云计算系统的并行度和运行效率,这就是云计算的分布式计算系统
“云计算”(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。
云计算这个名词可能是借用了量子物理中的“电子云”(Electron Cloud),强调说明计算的弥漫性、无所不在的分布性和社会性特征。量子物理上有“电子云(electron cloud)”,在原子核周围运动的电子不是一个经验世界的轨道例如像天体一样的运行轨道,而是弥漫空间的、 云状的存在,描述电子的运动不是牛顿经典力学而是一个概率分布的密度函数,用薛定谔波动方程来描述,特定的时间内粒子位于某个位置的概率有多大,这跟经典 力学的提法完全不同。电子云有弥漫性、同时性等等,云计算可能的确是来自电子云的概念,云计算的确会改变信息产业的格局,现在许多远程软件应用如Office字处理而不是在本地机器上安装应用软件,这种计算和产业动向是符合开源精神的,符合SaaS(Software as a Service)趋势。
IBM把自己的计划称作“Blue Cloud”(蓝色的云)并宣称这是它互联网规模的“改变游戏规则”的模式,向用户提供恰当规模的计算能力,同时这些计算能力将是“绿色的”以及基于开放标准和Linux的“自我修复和自我管理的”。
从云计算的描述和IBM对“蓝云”计划的描述可知,所谓的云计算可以被看成是网格计算和虚拟化技术的融合:即利用网格分布式计算处理的能力,将IT资源构筑成一个资源池,再加上成熟的服务器虚拟化、存储虚拟化技术,以便用户可以实时地监控和调配资源。不过,这样的说法不尽正确,云计算的概念涵盖了网格计算,并且加上了更多企业级安全的因素。
虽然云计算环境也可通过快速 提供可以运行网格应用的物理和虚拟服务器来支持网格计算,但是二者还是有很多区别。网格计算需要将一个大型的任务分解为多个小任务,以并行方式运行在不同 的服务器上,并且通常使用很多计算机,一般是数千台。而云计算也支持非网格环境,比如标准的三层Web架构或Web 2.0应用。
最重要的是,云不仅仅是计算机资源的简单汇集,更是提供了一种管理机制。云系列产品的核心竞争力,首先是对开源的支持,其次是在高层次的虚拟化实现,其三是自动配置能力,最后则是提供企业级安全的互联网计算能力。 1.云计算的分布式计算系统的主要优点
(1)应用程序开发者不需要设计、编写和调试并行程序
开发者只需要设计、编写和调试普通的串行程序,即map函数和reduce函数,调试通过后提交到云计算系统,由云计算分布式系统框架把它们分发到成百上 千台计算机(云计算的worker)上运行,并汇总和返回运行后的结果。开发者甚至不需要有分布式或者并行程序方面的经验或背景; (2)高效率
云计算分布式计算系统的master根据用户设置自动把作业切分为许多map任务和reduce任务,然后以按需的方式分配map和reduce任务到所 有的worker上,每个worker完成一个任务后就报告给master,master就给该worker再分配一个map或reduce任务,该 worker执行新分配的任务„..,如此直到所有任务执行完; (3)适于异构机群
上述按需分配任务的方式使得每个worker的计算能力都能得到最大限度的发挥:快的worker执行更多的任务,慢的worker执行较少的任务; (4)容错
由于整个作业被切分成许多map任务和reduce任务,worker故障后,只要再次执行对应的map和reduce任务即可;master则定期记录 检查点(checkpoint),一旦master异常,新的master读入最后一次检查点,则整个作业可以最后一次检查点的基础上继续执行。
云计算的分布式计算系统也自身的局限性。云计算分布式系统的易用和高效建立Map/Reduce模型的基础上,Map/Reduce模型要求切分出来的 map和reduce可以多次以任意顺序执行而没有副作用,等等。幸运的是,绝大部分应用能够适用于该模型,不适合的应用也常常能够找到可用的近似算法, 这使得云计算系统在实际工作中发挥了巨大的作用。
总结
有以下五个主要原因使得分布式计算必然会越来越普遍,逐渐发展成主流的计算模式而取代集中式的大型计算机: 1. 比集中式系统更好的性能价格比。
2. 多数应用本身就是分布式的。如工业企业应用,管理部门和现场不在同一个地方。 3. 高可靠性。现代分布式系统具有高度容错机制,控制核反应堆主要采用分布式来实现高可靠性。
4. 可扩展性。买一台性能更高的大型机,或者再买一台性能相同的大型机的费用都比添加几台PC的费用高得多。
5. 高度灵活性。能够兼容不同硬件厂商的产品,兼容低配置机器和外设而获得高性能计算。
云计算这一新兴趋势的重要性毋庸置疑,不过,它还仅仅是一系列变革的起步阶段而已。云计算 不但抹平了企业规模所导致的优劣差距,而且极有可能让优劣之势易主。简单地说,当今世上最强大最具革新意义的技术已不再为大型企业所独有。云计算让每个普 通人都能以极低的成本接触到顶尖的IT技术。
参考文献
[1] 陆嘉恒 《分布式系统及云计算概论》
附录:祝老师 中秋节全家人快乐