分布式系统构架DistributedSystemsArchitectures分布式系统构架是运行在多个处理器上的软件构架设计(Architecturaldesignforsoftwarethatexecutesonmorethanoneprocessor)目标(Objectives)说明不同分布式系统构架的优缺点。讨论客户机-服务器和分布式对象构架。介绍对象请求代理(broker)以及CORBA标准的基本原理介绍点对点和面向服务的构架,它们代表着新的分布式计算模型。分布式系统事实上,现在所有基于计算机的大型系统都是分布式系统信息处理不是局限在一台机器上,而是分配到若干个计算机上进行的。因此对于企业计算系统而言,分布式软件工程非常重要。系统类型(Systemtypes)个人系统,它不是分布式的,它是为个人计算机或工作站设计的。嵌入式系统,它运行在单一处理器或者在一组集成在一起的处理器上。分布式系统,系统软件运行在由一个网络连接在一起的,结合松散而又相互协作的一组处理器上。分布式系统的特点资源共享(Resourcesharing)共享硬件和软件资源。开放性(Openness)可使用有不同供应商提供的设备和软件。并发性(Concurrency)可通过并行处理来增强性能。缩放性(Scalability)可通过增加新的资源来提高生产力。容错(Faulttolerance)在出现某个失误之后仍具备继续运行的能力。分布式系统的缺点复杂性(Complexity)一般来说,分布式系统比集中式系统复杂得多。保密性(Security)更易受到外部攻击。可管理性(Manageability)需要更多的人力来管理系统。不可预见性(Unpredictability)响应结果难于预料,与系统构造和网络的负载情况有关。分布式系统构架Client-serverarchitectures服务是分布式的,由客户机调用。提供服务是服务器,它对使用服务的客户机分别进行处理。Distributedobjectarchitectures客户机和服务器没有明显的区别。在系统中,任何对象都可以提供服务和使用其它对象的服务。中间件(Middleware)它是管理和支持一个分布式系统中不同构件的软件。本质上,它处于系统的中层。中间件通常是非定制品(off-the-shelf),它不是专门编写的软件。举例(Examples)事务处理监视器(Transactionprocessingmonitors);数据转换器(Dataconverters);通信控制器(Communicationcontrollers)。多处理器(Multiprocessor)构架是最简单的分布式系统模型。系统由多个处理器组成,并可以在运行不同的处理器上(不一定必要)。是许多大型的实时系统的构架模型。处理器分配过程可以是预先排定的,也可以是由一个调度程序(despatcher)来控制的。一个多处理器的交通控制系统TrafficlightsLightcontrolprocessTrafficlightcontrolprocessorTrafficflowprocessorOperatorconsolesTrafficflowsensorsandcamerasSensorprocessorSensorcontrolprocessDisplayprocess客户机-服务器构架应用建模是按照由服务器提供一系列服务并由一组客户机使用这些服务的模式进行的。客户机知道服务器,但服务器不必知道客户机。客户机和服务器是不同的逻辑过程。处理器与过程的映射不必是一对一的,即可以是一对多或多对多的。一个客户机-服务器系统s1s2s3s4c1c2c3c4c5c6c7c8c9c10c11c12ClientprocessServerprocess在一个C/S网络中的计算机NetworkSC1SC2CC1CC2CC3CC5CC6CC4ServercomputerClientcomputers1,s2s3,s4c5,c6,c7c1c2c3,c4c8,c9c10,c11,c12分层应用构架表现层(Presentationlayer)包括向系统用户显示计算结果和收集用户的输入方面。应用处理层(Applicationprocessinglayer)提供指定的应用功能,例如在银行系统中,像开户、闭户等银行业务。数据管理层(Datamanagementlayer)涉及到对系统数据库进行管理的问题。应用分层Thinandfatclients瘦客户机模型(Thin-clientmodel)在瘦客户机模型中,所有的应用处理和数据管理都在服务器上执行。客户机只负责运行表现层软件。胖客户机模型(Fat-clientmodel)在这种模型中,服务器只负责数据管理。客户端软件实现应用逻辑和与系统用户进行交互。Thinandfatclients瘦客户机(Thinclient)模型用于把遗留系统迁移到客户机-服务器构架的情况遗留系统本身就像是一个服务器,它的图形界面由客户机来实现。一个主要的缺点是服务器和网络的处理负担都很重。胖客户机(Fatclient)模型把尽可能多的处理委托给(bedelegatedto)客户机,例如把应用处理放在本地执行。最适合于新的客户机-服务器系统,此处客户机的能力是预知的。比瘦客户机模型要复杂一些,对管理来说更是如此。不得不到所有的客户机上安装新的应用版本。Aclient-serverATMsystemAccountserverCustomeraccountdatabaseTele-processingmonitorATMATMATMATM三层(Three-tier)构架在三层构架中,每个应用构架层可以运行在一个单独的处理器上。比瘦客户机方法的性能更好,并且比胖客户机方法的更容易管理。是一个缩放性更强的构架—当需求增加,可以另外加入服务器。A3-tierC/SarchitectureAninternetbankingsystemDatabaseserverCustomeraccountdatabaseWebserverClientClientAccountserviceprovisionSQLSQLqueryHTTPinteractionClientClientUseofC/SarchitecturesArchitectureApplicationsTwo-tierC/SarchitecturewiththinclientsLegacysystemapplicationswhereseparatingapplicationprocessinganddatamanagementisimpractical.Computationally-intensiveapplicationssuchascompilerswithlittleornodatamanagement.Data-intensiveapplications(browsingandquerying)withlittleornoapplicationprocessing.Two-tierC/SarchitecturewithfatclientsApplicationswhereapplicationprocessingisprovidedbyoff-the-shelfsoftware(e.g.MicrosoftExcel)ontheclient.Applicationswherecomputationally-intensiveprocessingofdata(e.g.datavisualisation)isrequired.Applicationswithrelativelystableend-userfunctionalityusedinanenvironmentwithwell-establishedsystemmanagement.Three-tierormulti-tierC/SarchitectureLargescaleapplicationswithhundredsorthousandsofclientsApplicationswhereboththedataandtheapplicationarevolatile.Applicationswheredatafrommultiplesourcesareintegrated.分布式对象构架在分布式对象构架中,客户机和服务器没有区别。每个分布实体都是一个对象,它向其它对象提供服务同时也接受其它对象的服务。对象通信通过一个中间件进行,称为一个对象的请求代理。然而,设计起来比起客户机-服务器系统要复杂的多。DistributedobjectarchitectureObjectrequestbrokero1o2o3o4o5o6S(o1)S(o2)S(o3)S(o4)S(o5)S(o6)分布式对象构架的好处允许系统设计者晚一点决定在何处和如何提供服务的问题。它是非常开放的构架,在需要的时候它允许加入新的资源。系统是灵活的(flexible)和可缩放的(scaleable)。当需要的时候,它可以通过在整个网络中进行动态的对象迁移来重新配置(reconfigure)系统。分布式对象构架的用途是一种允许你构造和组织系统的逻辑模型。在这种情况下,你只要依靠服务及其组合就可以构思如何提供应用功能。是一种灵活的实现客户机-服务器系统的方法。虽然系统的逻辑属于客户机-服务器模型,但是客户机和服务器两者都可以用分布式对象实现,它们在一种公共的通信框架下进行通信。一个数据挖掘系统Database1Database2Database3Integrator1Integrator2VisualiserDisplayReportgen.数据挖掘(mining)系统该系统的逻辑模型不再是一个数据管理服务的供应者。它允许在不破坏系统的情况下增加对一些数据库的访问。通过加入新的集成器(integrator)对象,它允许把新的关系类型挖掘出来。CORBA—通用对象请求代理构架CORBA是一个对象请求代理的一种国际标准,它是管理分布式对象通信的中间件。对分布计算中间件的需求处在两个级别上:在逻辑通信级别上,中间件允许对象在不同的计算机上交换数据和控制信息;在构件级别上,中间件为开发兼容构件提供一个基础。CORBA构件标准已经定义好。CORBAapplicationstructureCORBAservicesDomainfacilitiesHorizontalCORBAfacilitiesApplicationobjectsObjectrequestbrokerCORBA应用结构应用对象(Applicationobjects)。标准对象(Standardobjects),由OMG定义,针对特定领域,例如保险业。基础CORBA服务(FundamentalCORBAservices),例如目录和安全管理。横向工具(Horizontalfacilities),它可以横跨许多不同的应用。例如用户界面工具,系统管理工具等。CORBAapplicationstructureCORBAservicesObjectrequestbrokerDomainfacilitiesHorizontalCORBAfacilitiesApplicationobjectsCORBA标准一个针对应用对象的对象模型一个CORBA对象是对状态的一个封装,它具有定义好的接口(用接口定义语言IDL),并且这种接口与语言类型无关。由一个对象请求代理来管理对象服务请求。有一套常规对象服务供许多分布式应用使用。还有建立在这些服务之上的一套公共构件。CORBA对象原则上,CORBA对象可以与C++和Java对象进行比较。它们