浅议分布式系统
2016-11-11贾素来
贾素来
(无锡商业职业技术学院,江苏 无锡214153)
浅议分布式系统
贾素来
(无锡商业职业技术学院,江苏 无锡214153)
文章在介绍分布式系统的基础上,讨论了分布式系统的技术基础和构建技术。软件复用、XML、分布式通信等技术是分布式系统的基础。分布式系统按其范型可分为基于对象的分布式系统、基于文件的分布式系统、基于文档的分布式系统、基于协作的分布式系统。文章介绍了每种类型的特点及典型例子。
分布式系统;技术基础;构建技术
传统的客户机/服务器体系结构,随着业务处理对系统提出更高要求,也逐渐暴露出其客户端逐渐庞大和服务器负担过重等缺点。因此计算机科学家提出了三层或多层分布式系统(Multi-storeies Distributed System)。三层由表示层、业务逻辑层和数据服务层组成,其中业务逻辑层又由多个子层组成,具体要看系统的复杂程度[1]。这样就形成了多层分布式体系结构,分布性可以体现在软件上,也可以是硬件。
1 分布式系统介绍
在多层结构当中,业务逻辑从客户端分离出来,移至中间层,系统也就成为客户端表示层、中间业务逻辑层和数据库服务器的三层或多层体系结构,如图1所示[2]。多层体系结构将表示和业务处理分开,缩减了客户端的规模,又将相关业务和资源分开,降低了服务器的负载,避免了服务器的性能缺陷对整个系统性能的影响。这种在多个服务器上分布应用程序处理的多层可变结构比二层体系结构的伸缩性和扩展性有了很大加强。
表示层是应用的用户接口部分,担负着用户与应用间的对话功能,用于用户输入和输出。业务逻辑层是具体业务功能组件的实现。根据具体情况,这些组件可详细分成多个子层,一般可分为两种:公共服务组件、特定领域组件。公共服务组件主要用于提供常见问题的高效解决算法和提供与基础设施相关的公共服务,比如文件读写、目录管理、报表制作等。这类组件支持水平复用,各种软件系统都可能使用它们提供的服务。特定领域组件与实际的应用领域密切相关,依赖于特定的问题和特定的问题解决方法,具有领域特定性。为此,在识别、获取和表示可复用信息时,应采用面向领域的策略。领域的需求具有一定的稳定性,使得获取的信息可以在较长时间内多次复用。领域工程是一组相似或相近系统的应用工程建立基本能力和必备基础的过程,覆盖了建立可复用软件的所有活动,可划分为以下三个阶段领域分析、领域设计和领域实现。数据服务层为业务逻辑层组件提供从数据源的查询、操作等数据服务。
图1 多层分布式体系结构模型
2 分布式系统的技术基础
在分布式环境中,无论是硬件平台还是软件平台都不可能做到统一。大规模的应用系统通常要求软硬件在各不相同的网络环境中运行,为了更好的开发和应用能够运行在这种异构平台上的软件,迫切需要一种基于标准的、独立于计算机软硬件的开发和运行环境。因此,目前,分布式系统多采用软件复用、XML、分布式通信等技术作为基础。
软件复用是利用现有的软件成分来构造新的软件系统的过程。近十年来软件复用被认为是解决软件危机、提高软件生产率和质量的最有效和最具潜力的手段。基于构件的软件复用是迄今为止最优秀的软件复用手段。构件是具有内部结构和功能的软件构成元素,可通过标准接口独立提供特定服务,并且可由一些连接器及相关规则与其它构件组装成符合要求的新软件或构件。这就为分布式系统的开发提供了很好的支持。开发者可以将应用系统的功能部件开发成一个个独立的构件,独立于计算机软硬件平台,且具有标准的程序接口和协议,使不同硬件和操作系统平台上分布式应用的数据共享和互操作。这样就可以帮助用户灵活、高效的开发和集成复杂的分布式应用软件。
XML的目的是希望借助它能够确保在通过网络进行交互合作时具有良好的可靠性与互操作性。XML文挡具有简单的文本格式,可以用任何文本编辑器编辑,因而是一种与平台无关的数据格式。XML具有良好的数据存储格式、可扩展性、高度结构化和便于网络传输等特点,既可以用来描述网页信息,也可以用来作为信息交换的中间数据格式。这就为分布式系统的开发提供了很好的支持。XML和HTML的一大区别是XML允许自定义标签。XML可以标注各种类型的数据,包括文档、图形、图像还是数据库中的数据等。信息交互的系统上只需要安装XML解析器,就可以解读其它系统传来的XML文件中的丰富信息。因此,XML是非常理想的网际交流语言,可以用来作为异构系统间的交流媒介。
进程间通信是一切分布式系统的核心。目前有 4种通信模型广泛被分布式系统使用:RPC、RMI、MOM和流[3]。RPC的目的在于将消息传递的大部分复杂性隐藏起来,比较适用于客户/服务器应用程序。RMI是RPC的一种改进形式,从调用消息改为调用对象,它是符合分布式对象概念的。在许多分布式系统中,通信并不遵循严格的客户/服务器交互模式。网络低层通信功能缺乏分布透明性,替代的方案是使用高层消息队列模型,这就是MOM通信方式。多数系统都缺乏对诸如音频和视频这样的连续媒体的通信支持,所以必须引入流的概念,支持在有限条件下支持消息的连续流。
3 分布式系统的构建技术
现存的分布式系统的构建技术按其范型可分为基于对象的分布式系统、基于文件的分布式系统、基于文档的分布式系统、基于协作的分布式系统[4]。
3.1 基于对象的分布式系统
在基于对象的分布式系统中,所有东西都被作为对象处理,分布的特性隐藏在对象接口后面,客户将以通过接口调用对象的方式获得服务和资源。OMG的COBRA技术规范、微软的DCOM、Sun公司的J2EE技术规范是目前三种主流的对象式分布式系统。
CORBA的目标主要是提供一个标准的中间件平台,使来自各个不同软件生产商的应用程序可以互操作。DCOM的目标是改善功能性,同时与组成早期windows系统的以前版本兼容。J2EE是一个基于JAVA的适合服务器端组件体系结构的结合了Java Enterprise API的完整的企业级应用系统开发平台或中间件体系结构,它通过提供一组应用组件和运行时环境来构造可伸缩的企业应用。J2EE技术以核心 Java平台或Java2平台的标准版J2SE为基础,提供了对EJB、Java Servlets API、JSP以及XML技术的全面支持。
另外,对象式分布式系统也有一些例子,如阿姆斯特丹Vrije Universiteit的Globe、北京大学的青鸟构件模型等。
3.2 基于文件的分布式系统
数据共享是分布式系统的基础,分布式文件系统是构成许多分布式应用程序的基础,它允许多个进程在长时期内以一种安全、可靠的方式共享数据,使得程序可以像对本地文件那样对远程文件进行存储和访问,从而允许用户访问网络中的任一计算机上的文件。Sun公司的 NFS(network file system)和卡内基.梅隆大学的coda是文件式分布式系统的例子。
NFS的基本思想是每台文件服务器提供它的本地文件系统的标准化视图,但它不关心如何实现本地文件系统,每台NFS服务器支持相同的模型。这个模型带有一个通信协议,该协议允许客户访问存储在另一台服务器上的文件。这种方法允许大量异构进程共享一个公用的文件系统,其中的进程可能运行于不同的操作系统和机器上。Coda在很多方面不同于NFS,尤其是在高可用性方面。Coda被设计为一个可扩展的、安全的、高可用的分布式文件系统。Coda的一个重要目标是实现高度的命名和位置透明性,以使系统对用户来说好像是纯本地文件系统。在高可用性方面,Coda也试图达到高度的故障透明性。Coda现已被集成到许多流行的基于UNIX的操作系统中,如Linux。
除了NFS和Coda,还有很多分布式文件系统的例子,如美国贝尔实验室的plan9、Berkeley NOW项目的xFS等。
3.3 基于文档的分布式系统
基于文档的分布式系统可以使用户把文档视为一种交换信息的简单而强大的手段,好比在现实生活中借助于备忘录、便签或报告来进行通信。这种分布式系统的实例就是万维网和Lotus Notes。
万维网实质上是一个巨大的客户-服务器系统,其数以百万的服务器分布在世界各地。每个服务器上都维护着一个文档的集合,每个文档以文件的形式存储(静态的或动态的)。服务器接受客户的请求并生成文档传给客户显示。同时,服务器也可以接受新文档并将之存储起来。定位一个文档最简单的方法就是使用URL。URL和CORBA中的IOR或Globe中的联系地址差不多。它指定了与文档相关服务器的DNS名称以及文件名,服务器可以在其本地文件系统中根据这个文件名查找文档,而且URL还指定了在网络上传送文档所使用的应用级协议,如http、ftp等。客户和服务器通过专门软件(浏览器)进行交互。浏览器负责接受用户输入、提交请求并显示文档。
Lotus Notes是一个面向数据库的系统,起源于Lotus发展公司。它由 4个主要组件组成:客户、服务器、数据库和中间件层。每个客户和服务器可以具有多个本地相关联的数据库。每个数据库构成一个文笺的集合,文笺是所有notes系统中的关键数据元素。客户通过和浏览器差不多的应用程序访问数据库,但它不仅可读取数据库,还可以修改数据库。Lotus Notes服务器称为Domino服务器,管理与其相关联的数据库集合。它的主要任务是为客户和其他服务器提供对这些数据库的访问。中间件层在底层的操作系统和网络之上实现了一个中间层,以允许客户和服务器进行通信和访问数据库。
3.4 基于协作的分布式系统
基于协作的分布式系统的关键之处在于把计算和协作分离开来。协作部分处理进程间的所有通信和协作,好比一个把进程执行的各个活动结合起来的粘合剂。它与其它分布式系统不同在于它致力于为进程提供一种无须事先得知对方情况的便利的通信方法,通信可以以匿名的方式继续下去。这种方法的主要优点是其灵活性,在系统继续运行的同时,对其进行扩展或修改变得更容易了。目前,这个领域正处于研究中,很多公司或组织多有类似研究项目,比较成功的有TIBCO的Rendezvous Bus和sun公司的Jini。Rendezvous Bus采用发布/订阅机制处理进程间通信。Jini提供了把进程结合到一起的基础,通信可以使用不同的方法进行,如Java RMI。
4 结束语
分布式系统是建立在网络之上的系统,用户感觉不到数据和处理是分布的。分布式系统通常增强了系统的可扩展性、稳定性和执行效率。因此,分布式系统是多种技术的综合使用,也存在着多种类型。普遍认为分布式系统在未来几年中会越来越重要和普及,许多机构会将大多数计算机连接到分布式系统中,为用户提供更好、更廉价和更方便的服务。
[1] 梁维海.三层体系结构无关性的研究及实现[D].四川:成都理工大学,2004:1-4.
[2] 潘俊虹.浅析三种主流分布式组件对象模型对比及互操作[J].南平师专学报,2006,25(4):56-59.
[3] George Coulouris,Jean Dollimore,Tim Kindberg著.分布式系统概念与设计[M].金蓓弘,曹冬磊,译.北京:机械工业出版社,2008:84-139.
[4] Andrew S.Tanenbaum,Maartenvan Steen著.分布式系统原理与范型[M].杨剑峰,常晓波,李敏,译.北京:清华大学出版社,2004:384-571.
Discussion on distributed system
On the base of introducing the distributed system, this article discusses the technical basises and construction technologies of distributed system. Software reuse, XML, distributed communication technologies is the basises of distributed system. According to the paradigm, distributed system can be divided into object oriented distributed system, file oriented distributed system,distributed system based on document, distributed system based on collaboration. This article introduces the characteristics and typical examples of each type.
Distributed system; technical basises; construction technologies
TP311.5
A
1008-1151(2016)01-0005-02
2015-12-12
贾素来(1979-),男,江苏泰州人,无锡商业职业技术学院公共计算机教学部讲师,河海大学计算机应用技术专业硕士研究生,研究方向为软件工程,信息系统设计。