软件体系结构和运行规范和效率哪个更重要要

浅论C/S和B/S体系结构
本文讨论了当今比较流行的技术研发模式C/S和B/S的体系结构,论述了C/S和B/S区别与二者之间的优劣比较。
& & & 1 引言
在当今科学技术飞速发展的时代,尤其以通信、计算机和网络为代表的互联网技术更是日新月异,令人眼花燎乱,目不睱接。由于计算机互联网在政治、经济、文化等各个领域的快速发展,已经成为国家的经济基础和命脉,成为社会和经济发展的强大动力,其地位越来越重要。但是,由于主流技术研发企业和用户对“B/S”和“C/S”技术谁优谁劣、谁代表技术潮流发展等等问题的争论不休,已经给企业软件的选购和研发单位的软件开发工作带来困惑,本文就此两项技术发展变化和应用前景做些探讨,供大家参考。
2 什么是C/S和B/S
软件系统不论何种运行模式都要在管理软件的平台结构上发挥作用。管理软件技术的主流平台体系结构与管理思想一样,经历了三个发展时期。首先,界面技术从上世纪DOS字符界面到图形界面(或GUI),直至Browser浏览器界面三个不同的发展时期。其次,今天所有电脑的浏览器界面,不仅直观和易于使用,更主要的是基于浏览器平台的任何应用软件其风格都是一样的,对使用者的操作培训较为简单,而且软件可操作性强,易于识别;再者,平台体系结构也从过去单用户发展到今天的文件/服务器(F/S)体系和领导主流的客户机/服务器(C/S)体系和浏览器/服务器(B/S)体系。
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。通过C/S可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是C/S形式的两层结构。由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server&
应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件,因此,内部的和外部的用户都可以访问新的和现有的应用系统。通过现有应用系统中的逻辑可以扩展出新的应用系统,这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代快,已经很难适应百台电脑以上局域网用户同时使用,而且代价高,效率低。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起而对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握,成本也是较低的。B/S结构是一次到位开发,能实现不同人员,从不同地点,以不同的接入方式(比如LAN、
Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。目前我公司内网(Intranet)、外网(Internet)和“AVinfo网络视频监控系统”就是B/S&
结构管理软件,保卫人员在局域网各工作站通过WWW浏览器就能实现工作业务。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更为方便、快捷、高效。
B/S结构主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术,成为当今应用软件的首选体系结构。在网络拓扑结构上,B/S结构采用星形建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的特点是安全、快捷、准确;后者则具有节省投资、跨地域广的优点。
3 C/S与B/S的区别
Client/Server是建立在局域网基础上的,Browser/Server是建立在广域网基础上的。
硬件环境不同 &
C/S一般建立在专用网络上,小范围网络环境,局域网之间再通过专门服务器提供连接和数据交换服务;B/S建立在广域网之上,不必是专门的网络硬件环境,例如电话上网,租用设备,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。&
对安全要求不同 &
一般面向相对固定的用户群,对信息安全的控制能力很强,一般高度机密的信息系统采用C/S
结构较为适宜,而仅通过B/S发布部分可公开信息;B/S&
建立在广域网之上,对安全的控制能力相对较弱,面向的是不可知的用户群。 &
对程序架构不同 &
C/S程序更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。B/S对安全以及访问速度的多重考虑,建立在需要更加优化的基础之上,比C/S有更高的要求。B/S结构的程序架构是发展趋势,从MS的.Net系列的BizTalk&
2000、Exchange 2000等,全面支持网络的构件搭建的系统。SUN 和IBM推的JavaBean构件技术等,使
B/S更加成熟。 &
软件重用不同 &
C/S程序可以整体性考虑,构件的重用性达不到B/S结构的要求;B/S对多重结构要求构件具有相对独立的功能,能够相对较好地重用这些构件,例如买来的餐桌可以反复利用,而不是做在墙上的石头桌子。&
系统维护不同 &
C/S程序由于整体性要求,必须整体考察以处理出现的问题和系统升级,升级较难,有可能需要再做一个全新的系统;B/S构件的组成方便了构件个别更换,可以实现系统的无缝升级,使系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。&
处理问题不同 &
C/S程序处理用户界面是固定的,在相同区域安全要求高,需求与操作系统相关,都是相同的系统;B/S建立在广域网上,面向不同的用户群,
地域分散,与操作系统关系最小。 &
用户接口不同 &
C/S多是建立在Window平台上,表现方法有限,对程序员普遍要求较高;B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流,并且大部分难度减低,开发成本低。
信息流不同 &
C/S程序一般是典型的中央集权的机械式处理, 交互性相对低;B/S信息流向可变化,
B-B、B-C、B-G等信息流向的变化更象交易中心。 &
4 C/S和B/S比较
C/S和B/S是当今世界开发模式技术架构的两大主流技术。C/S由美国Borland公司最早研发,B/S是美国微软公司研发。目前,这两项技术已被世界各国所掌握,我国国内公司以C/S和B/S技术开发出的产品也很多。这两种技术都有自己一定的市场份额和客户群,各家企业都说自己的管理软件架构技术功能强大、先进、方便,都能举出各自的客户群体,都有一大群文人墨客为自己摇旗呐喊,广告满天飞,可谓仁者见仁,智者见智。&
C/S架构软件的优势与劣势 &
& & & 4.1.1
应用服务器运行数据负荷较轻 &
最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序,二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求。客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑。当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求;服务器程序根据预定的规则做出应答,送回结果,应用服务器运行数据负荷较轻。&
& & & 4.1.2
数据的储存管理功能较为透明 &
在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的。对于工作在前台程序上的最终用户是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序并不是非常“瘦小”,并没有将麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。&
& & & 4.1.3
C/S架构的劣势是高昂的维护成本且投资大 &
采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现。问题在于,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高任务量大。&
传统的C/S结构的软件需要针对不同的操作系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。&
B/S架构软件的优势与劣势 &
& & & 4.2.1
操作使用简单 &
B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。&
& & & 4.2.2
维护和升级方式简单 &
目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对于较大点的单位来说,系统管理人员如果需要在几百甚至上千台电脑之间来回奔跑,效率和工作量是可想而知的。而B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行。如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”,这是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。&
& & & 4.2.3
成本降低,选择更多 &
大家都知道windows在桌面电脑上几乎一统天下,浏览器成为了标准配置,但在服务器操作系统上windows并不是处于绝对的统治地位。现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的,不管选用那种操作系统都可以让大部分人使用windows作为桌面操作系统电脑不受影响,这就使得最流行免费的Linux操作系统快速发展起来。Linux除了操作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。比如说很多人每天上“搜虎”网,只要安装了浏览器就可以了,并不需要了解“搜虎”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows操作系统,但用户的电脑本身安装的大部分是windows操作系统。&
& & & 4.2.4
应用服务器运行数据负荷较重 &
由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做服务器的硬件维护。但应用服务器运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。&
严格来说,B/S结构也是一种C/S结构。二者在技术和实施上主要的比较是:C/S采用Intranet技术,适用于局域网环境;可连接用户数有限,当用户数量增多时,性能会明显下降;客户端都要安装应用程序,系统扩展维护复杂;代码可重用性差,开发费用较低,开发周期较短。B/S采用Internet/Intranet技术,适用于广域网环境;支持更多的客户,可根据访问量动态配置WEB服务器、应用服务器,以保证系统性能;客户端只需标准的浏览器,采用面向对象技术,代码可重用性好,系统扩展维护简单;但开发费用较高,开发周期较长
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。以下试题来自:
问答题试题三(共25分)
阅读以下关于汽车电子基础软件架构的说明,在答题纸上回答问题1至问题3。
某软件公司承担了某项国家重点项目的研制工作,任务重点是参考国外汽车电子发展趋势,开发某汽车公司的企业汽车电子基础软件的架构,逐步实现汽车企业未来技术发展规划。
该软件公司接收此项任务后,调动全体技术人员深入收集国外相关技术资料,经过多方调研和分析,公司提出遵照国际组织最新推出的AUTOSAR规范,按统筹规划、分步骤实施的原则,实现汽车公司的基础软件架构设计。图3-1给出了AUTOSAR规范所定义的工作包,图中灰色部分代表本项目工作所包含的内容,即软件架构和基础软件。
[问题2](10分)
图3-1中的II-1.1.1项中定义了软件架构和操作系统的要求,图3-4是满足AUTOSAR定义的操作系统各功能模块的层次结构,请说明(1)~(5)箭头所标的具体操作含义。
为您推荐的考试题库
你可能感兴趣的试题
热门相关试卷
最新相关试卷分布式系统_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
分布式系统
分布式系统(distributed system)是建立在网络之上的系统。正是因为的特性,所以分布式系统具有高度的和透明性。因此,网络和分布式系统之间的区别更多的在于高层(特别是),而不是硬件。是指每一个分布节点,有本地的。透明性是指每一个分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无、数据存于哪个站点以及在哪个站点上执行等。
分布式系统详细信息
在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过实现信息交换。系统中存在一个以全局的方式管理计算机资源的。通常,对用户来说,分布式系统只有一个模型或范型。在之上有一层(middleware)负责实现这个模型。一个著名的分布式系统的例子是(World Wide Web),在万维网中,所有的一切看起来就好像是一个文档(页面)一样。
在中,这种统一性、模型以及其中的都不存在。用户看到的是实际的机器,并没有使这些机器看起来是统一的。如果这些机器有不同的硬件或者不同的,那么,这些差异对于用户来说都是完全可见的。如果一个用户希望在一台远程机器上运行一个,那么,他必须登陆到远程机器上,然后在那台机器上运行该程序。
分布式系统和的共同点是:多数分布式系统是建立在计算机网络之上的,所以分布式系统与计算机网络在上是基本相同的。
他们的区别在于:的设计思想和是不同的,这决定了他们在结构、工作方式和功能上也不同。要求网络用户在使用时首先必须了解网络资源,网络用户必须知道网络中各个计算机的功能与配置、资源、网络文件结构等情况,在网络中如果用户要读一个时,用户必须知道这个文件放在哪一台计算机的哪一个目录下;是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,能够根据需要在系统中选择最合适的,将用户的作业提交到该处理,在处理器完成作业后,将结果传给用户。在这个过程中,用户并不会意识到有多个的存在,这个系统就像是一个处理器一样。
分布式系统专业测评
(Distributed Software Systems)是支持的软件系统,是在由互联的上执行任务的系统。它包括、语言及其编译(解释)系统、和等。
分布式系统分布式操作系统
负责管理系统资源和控制分布式运行。它和集中式的区别在于资源管理、和等方面。
分布式系统分布式程序设计语言
用于编写运行于上的分布式。一个分布式由若干个可以独立执行的组成,它们分布于一个系统的多台计算机上被同时执行。它与集中式的相比有三个特点:分布性、通信性和稳健性。
分布式系统分布式文件系统
具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。
分布式系统分布式数据库系统
由分布于多个计算机结点上的若干个系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。当然,分布在各个结点上的子在逻辑上是相关的。
分布式系统分布式邮件系统
分布式的部署设计,即同一域名下,跨地域部署的邮件系统。适用 于在各地设有分部的政府机构或者大型集团,有效管理各地的人员结构,同时提高了应用效率。[1]
分布式邮件系统由多个数据中心组成,大量分支机构或较小的分散站点与数据中心的连接。分支机构需要建立自己的邮件服务器,来加快处理当地分支机构的邮件。承载相应的数据处理量。以提高邮件处理能力,邮件收发速度,邮件功能模块化。
分布式部署方案适合以下情况
1、公司有不同分支机构或较小的分散站点与公司总部的网络连接通常是低带宽、高滞后或不可靠的。
2、公司总部网络无法处理中心位置的服务流量。
3、分支机构有自己的、企业网络、域控制器和系统管理员,包含数目不定的用户。
4、用户要求有更快的邮箱访问速度、更佳的用户体验和可用性。
5、邮箱用户数量大,并发线程多
6、对于安全要求高,需要把邮件服务器不同的功能分开部署。
分布式邮件系统方案情况
1、异地同域名分布式
此方案适用于集团邮件系统,各个下属子公司为了提高邮件收发速度,降低邮件负载而提出的方案。分为同域名不同用户数分布式和同域名同用户数分布式
2、功能分布式
邮件负载比较重,对于某一些功能要求比较高,需要邮件服务器功能分开部署的客户。
3、用户分布式
邮箱用户数巨大,单机邮件服务器无法承载,服务器做集群。
-----------------------------------------------------------------------------------------------------------------------------------
分布式系统,最简单的例子是Browser--Server结构,这两者结合起来就成了最简单的分布式系统,或者可以这样理解:基于网络的大多都是分布式系统,只不过在系统的复杂程度上有所区别而已。
分布式系统应用和标准
分布式系统被用在许多不同类型的应用中。以下我们列出了一些应用。对这些应用而言,使用分布式系统要比其他如和共享更优越:
并行和高性能应用
原则上,并行应用也可以在共享上运行,但共享存储器系统不能很好地扩大规模以包括大量的处理机。HPCC(高性能计算和通信)应用一般需要一个可伸缩的设计,这种设计取决于。
因为每个P E是自治的,所以分布式系统更加可靠。一个单元或资源(或硬件)的不影响其他资源的正常功能。
许多应用是固有分布式的。这些应用是突发模式(burstmode)而非批量模式(bulk mode)。这方面的实例有事务处理和Internet Javad,。
这些应用的性能取决于吞吐量(响应时间或每秒完成的事务数)而不是一般所用的执行时间。
对于一组用户而言, 分布式系统有一个特别的应用称为(Computer Supported Cooperative Working,CSCW)或(groupware), 支持用户协同工作。另一个应用是分布式会议, 即通过物理的进行电子会议。同样,远程教学也是一个类似的应用。
为了达到,用户需要一个标准的,在这个环境里,所有系统和资源都可用。
DCE()是OSF(开放系统基金会)开发的的工业标准集。它提供保护和控制对数据访问的、容易寻找分布式资源的名字服务、以及高度可伸缩的模型用于组织极为分散的用户、服务和数据。D C E可在所有主要的上运行, 并设计成支持异型硬件和下的。
DCE已经被包括TRANSVARL在内的一些r一商实现。TRANSVARL是最早的多厂商组(multi vendor team)的成员之一,它提出的建议已成为DCE的基础。在中可以找到利用DCE开发的指南。
一些其它标准基于一个特别的模型,CORBA(公用),它是由OMG (对象管理组)和多计算机厂商联盟开发的一个标准。CORBA使用实现分布式系统中的透明服务请求。
工业界有自己的标准,的分布式对象模型(DCOM)和Sun Microsystem公司的Java Beans。
分布式系统分布式系统的优点
分布式系统分布式系统与集中式系统相比较而言的优点
系统倾向于分布式发展潮流的真正驱动力是经济。25年前,计算机权威和评论家Herb Grosch指出CPU的计算能力与它的价格的平方成正比,后来成为Grosch定理。也就是说如果你付出两倍的价钱,就能获得四倍的性能。这一论断与当时的大型机技术非常吻合,因而使得许多机构都尽其所能购买最大的单个大型机。
随着微处理机技术的发展,Grosch定理不再适用了。到了二十一世纪初期,人们只需花几百美元就能买到一个CPU芯片,这个芯片每秒钟执行的指令比80年代最大的大型机的处理机每秒钟所执行的指令还多。如果你愿意付出两倍的价钱,将得到同样的CPU,但它却以更高的时钟速率运行。因此,最节约成本的办法通常是在一个系统中使用集中在一起的大量的廉价CPU。所以,倾向于分布式系统的主要原因是它可以潜在地得到比单个的大型集中式系统好得多的性价比。实际上,分布式系统是通过较低廉的价格来实现相似的性能的。
与这一观点稍有不同的是,我们发现微处理机的集合不仅能产生比单个大型主机更好的性能价格比,而且还能产生单个大型主机无论如何都不能达到的绝对性能。例如,按二十一世初期的技术,我们能够用10,000个现代CPU芯片组成一个系统,每个CPU芯片以50 MIPS(每秒百万指令)的速率运行,那么整个系统的性能就是500,000 MIPS。而如果单个处理机(即CPU)要达到这一性能,就必需在2×10-12 秒(2 微微秒,0.002纳秒)的时间内执行一条指令,然而没有一个现存的计算机能接近这个速度,从理论上和工程上考虑都认为能达到这一要求的计算机都是不可能存在的。理论上,爱因斯坦的相对论指出光的传播速度最快,它能在2 微微秒内传播0.6毫米。实际上,一个包含于边长为0.6 毫米大小的立方体内的具有上面所说的计算速度的计算机产生大量的热量就能将它自己立即熔掉。所以,无论是要以低价格获得普通的性能还是要以较高的价格获得极高的性能,分布式系统都能够满足。
另一方面,一些作者对分布式系统和并行系统进行了区分。他们认为分布式系统是设计用来允许众多用户一起工作的,而并行系统的唯一目标就是以最快的速度完成一个任务,就像我们的速度为500,000 MIPS的计算机那样。我们认为,上述的区别是难以成立的,因为实际上这两个设计领域是统一的。我们更愿意在最广泛的意义上使用“分布式系统”一词来表示任何一个有多个互连的CPU协同工作的系统。
建立分布式系统的另一原因在于一些应用本身是分布式的。一个超级市场连锁店可能有许多分店,每个商店都需要采购当地生产的商品(可能来自本地的农场)、进行本地销售,或者要对本地的哪些蔬菜因时间太长或已经腐烂而必须扔掉作出决定。因此,每个商店的本地计算机能明了存货清单是有意义的,而不是集中于公司总部。毕竟,大多数查询和更新都是在本地进行的。然而,连锁超级市场的高层管理者也会不时地想要了解他们还有多少甘蓝。实现这一目标的一种途径就是将整个系统建设成对于应用程序来说就像一台计算机一样,但是在实现上它是分布的,像我们前面所描述的一个商店有一台机器。这就是一个商业分布式系统。
另一种固有的分布式系统是通常被称为计算机支持下的协同工作系统(CSCW,Computer Supported Cooperative Work)。在这个系统中,一组相互之间在物理上距离较远的人员可以一起进行工作,例如,写出同一份报告。就计算机工业的长期发展趋势来说,人们可以很容易的想像出一个全新领域--计算机支持的协同游戏(CSCG:Computer Supported Cooperative Games)。在这个游戏中,不在同一地方的游戏者可以实时的玩游戏。你可以想像,在一个多维迷宫中玩电子捉迷藏,甚至是一起玩一场电子空战,每个人操纵自己的本地飞行模拟器去试着击落别的游戏者,每个游戏者的屏幕上都显示出其飞机外的情况,包括其它飞入它的视野的飞机。
同集中式系统相比较,分布式系统的另一个潜在的优势在于它的高可靠性。通过把工作负载分散到众多的机器上,单个芯片故障最多只会使一台机器停机,而其它机器不会受任何影响。理想条件下,某一时刻如果有5%的计算机出现故障,系统将仍能继续工作,只不过损失5%的性能。对于关键性的应用,如核反应堆或飞机的控制系统,采用分布式系统来实现主要是考虑到它可以获得高可靠性。
最后,渐增式的增长方式也是分布式系统优于集中式系统的一个潜在的重要的原因。通常,一个公司会买一台大型主机来完成所有的工作。而当公司繁荣扩充、工作量就会增大,当其增大到某一程度时,这个主机就不能再胜任了。仅有的解决办法是要么用更大型的机器(如果有的话)代替现有的大型主机,要么再增加一台大型主机。这两种作法都会引起公司运转混乱。相比较之下,如果采用分布式系统,仅给系统增加一些处理机就可能解决这个问题,而且这也允许系统在需求增长的时候逐渐进行扩充。表1-1中总结了以上这些优点。
微处理机提供了比大型主机更好的性能价格比
分布式系统总的计算能力比单个大型主机更强
固有的分布性
一些应用涉及到空间上分散的机器
如果一个机器崩溃,整个系统还可以运转
计算能力可以逐渐有所增加
从长远的角度来看,主要的驱动力将是大量个人计算机的存在和人们共同工作与信息共享的需要,这种信息共享必需是以一种方便的形式进行的,而不受地理或人员、数据,机器的物理分布的影响。
分布式系统分布式系统与独立PC机相比较的优点
既然使用微处理机是一种节省开支的办法,那么为什么不给每个人一台个人计算机,让他们各自独立地工作呢?一则,许多用户需要共享数据。例如,机票预订处的工作人员需要访问存储航班以及现有座位信息的主数据库。假如给每个工作人员都备份整个数据库,那么在实际中这是无法工作的,因为没有人知道其他工作人员已经卖出了哪些座位。共享的数据是上例和许多其它应用的基础,所以计算机间必须互连。而计算机互连就产生了分布式系统。
共享并不只是仅仅涉及数据。昂贵的外设,例如彩色激光打印机,照相排版机以及大型存储设备(如自动光盘点唱机)都是共享资源。
把一组孤立的计算机连成一个分布式系统的第三个原因是它可以增强人与人之间的沟通,电子邮件比信件、电话和传真有更多的诱人之处。它比信件快的多,不像电话需要两人同时都在,也不像传真,它所产生的文件可在计算机中进行编辑、重排和存储,也可以由文本处理程序来处理。
最后,分布式系统可能比给每个用户一个独立的计算机更灵活。尽管一种可能的模式是给每个人一台个人计算机并把它们通过LAN联在一起,但这种方式并不是唯一的。另外还存在一种模式是将个人计算机和共享计算机混合连接在一起(这些机器的型号可能并不完全相同),使工作能够在最合适的计算机上完成,而并不总是在自己的计算机上完成。这种方式可以使工作负荷能更有效地在计算机系统中进行分配。系统中某些计算机的失效也可以通过使其工作在其它计算机上进行而得到补偿。表1-2总结了以上所介绍的各点。
允许多个用户访问一个公共的数据库
允许多个用户共享昂贵的外围设备(如彩色打印机)
使得人们之间的通信更加容易,如通过电子邮件
用最有效的方式将工作负荷分配到可用的机器上
分布式系统分布式系统的缺点
尽管分布式系统有许多优点,但也有缺点。本节就将指出其中的一些缺点。我们前面已经提到了最棘手的问题:软件。就目前的最新技术发展水平,我们在设计、实现及使用分布式系统上都没有太多的经验。什么样的操作系统、程序设计语言和应用适合这一系统呢?用户对分布式系统中分布式处理又应该了解多少呢?系统应当做多少而用户又应当做多少呢?专家们的观点不一(这并不是因为专家们与众不同,而是因为对于分布式系统他们也很少涉及)。随着更多的研究的进行,这些问题将会逐渐减少。但是我们不应该低估这个问题。
第二个潜在的问题是通信网络。由于它会损失信息,所以就需要专门的软件进行恢复。同时,网络还会产生过载。当网络负载趋于饱和时,必须对它进行改造替换或加入另外一个网络扩容。在这两种情况下,一个或多个建筑中的某些部分必须花费很高的费用进行重新布线,或者更换网络接口板(例如用光纤)。一旦系统依赖于网络,那么网络的信息丢失或饱和将会抵消我们通过建立分布式系统所获得的大部分优势。
最后,上面我们作为优点来描述的数据易于共享性也是具有两面性的。如果人们能够很方便地存取整个系统中的数据,那么他们同样也能很方便地存取与他们无关的数据。换句话说,我们经常要考虑系统的安全性问题。通常,对必须绝对保密的数据,使用一个专用的、不与其它任何机器相连的孤立的个人计算机进行存储的方法更可取。而且这个计算机被保存在一个上锁的十分安全的房间中,与这台计算相配套的所有软盘都存放在这个房间中的一个保险箱中。分布式系统的缺点如表1-3所示。
分布式系统开发的软件还很少
网络可能饱和和引起其它的问题
容易造成对保密数据的访问
表 1-3. 分布式系统的缺点
尽管存在这些潜在的问题,许多人还是认为分布式系统的优点多于缺点,并且普遍认为分布式系统在未来几年中会越来越重要。实际上,在几年之内许多机构会将他们的大多数计算机连接到大型分布式系统中,为用户提供更好、更廉价和更方便的服务。而在十年之后,中型或大型商业或其它机构中可能将不再存在一台孤立的计算机了。
分布式系统分布式系统的应用
·  分布式系统被用在许多不同类型的应用中。以下我们列出了一些应用。对这些应用而言,使用分布式系统要比其他体系结构如处理机和共享存储器多处理机更优越:
分布式系统并行和高性能应用
原则上,并行应用也可以在共享存储器多处理机上运行,但共享存储器系统不能很好地扩大规模以包括大量的处理机。HPCC(高性能计算和通信)应用一般需要一个可伸缩的设计,这种设计取决于分布式处理。
分布式系统容错应用
因为每个P E是自治的,所以分布式系统更加可靠。一个单元或资源(软件或硬件)的故障不影响其他资源的正常功能。
分布式系统固有的分布式应用
许多应用是固有分布式的。这些应用是突发模式(burstmode)而非批量模式(bulk mode)。这方面的实例有事务处理和Internet Javad,程序。
这些应用的性能取决于吞吐量(事务响应时阳J或每秒完成的事务数)而不是一般多处理机所用的执行时间。
对于一组用户而言, 分布式系统有一个特别的应用称为计算机支持的协同工作(computer supported Cooperati veworking,CSCW)或群件(groupware), 支持用户协同工作。另一个应用是分布式会议, 即通过物理的分布式网络进行电子会议。同样,多媒体远程教学也是一个类似的应用。由于在不同的平台上如:Pc、工作站、局域网和广域网上可获得非常多样的应用,用户希望能超出他fliP c的限制以获得更广泛的特十牛、功能和性能。不同网络和环境(包括分布式系统环境)下的q 操作性变得越来越重要。为了达到互操作性,用户需要一个标准的分布式计算环境,在这个环境里,所有系统和资源都可用。
DCE (分布式计算环境)是OSF (开放系统基金会)开发的分布式计算技术的工业标准集。它提供保护和控制对数据访问的安全服务、容易寻找分布式资源的名字服务、以及高度可伸缩的模型用于组织极为分散的用户、服务和数据。D C E可在所有主要的计算平台上运行, 并设计成支持异型硬件和软件环境下的分布式应用。
DCE已经被包括TRANSVARL在内的一些r一商实现。TRANSVARL是最早的多厂商组(multi vendor team)的成员之一,它提出的建议已成为DC E体系结构的基础。在中可以找到利用DCE开发分布式应用的指南。具有标准接口和协议的系统也叫做开放系统。一些其它标准基于一个特别的模型,比如CORBA (公用对象请求代理程序体系结构),它是由OMG (对象管理组)和多计算机厂商联盟开发的一个标准。CORBA使用面向对象模型实现分布式系统中的透明服务请求。工业界有自己的标准,比如微软的分布式构件对象模型(DCOM)和Sun Microsystem公司的Java Beans。
分布式系统分布式系统的测试
·  在测试执行过程中,对测试结果的分析是一个需要进行深入思考的重点问题。分布式系统测试的重点在于对后端服务器集群的测试,而判定系统中是否存在Bug则是我们需要解决的重要问题。那么应该如何确定是否存在Bug呢?
对于测试结果的分析,我们通常观察下面几种情况。
观察前端应用的返回结果。这里需要分两种情况来考虑:第一,按照前端应用业务功能点及流程进行操作,观察返回结果是否符合业务方的需求预期;第二,操作后端的服务器(通常是重启、宕机、断网等操作),观察前端应用的返回结果是否符合系统的设计需求。
分析服务器日志。在功能测试过程中,当我们在启动服务器的时候,需要将日志级别定义为Debug级别(最低级别)。这样做的主要目的是为了能便于测试工程师来分析日志和定位问题。为了能更好地定位问题,常常需要在服务器程序代码中进行日志打桩,把程序中的一些重要数据通过日志的方式展现出来。通常情况下,我们需要对日志的格式进行约定,在日志行中增加一些关键字来进行分类,这将便于测试工程师进行日志分析,也有利于开展分布式系统的自动化测试。另外,值得注意的是,我们尽可能地将打桩代码放在Debug代码中,避免影响系统代码,引入新问题。
分析操作系统的一些重要信息。我们测试的分布式系统绝大多数是基于Linux操作系统开发的,在测试的过程中,除了详细分析程序日志以外,还需要对操作系统的一些重要数据信息进行分析,从而来诊断服务器程序是否存在异常。以Linux操作系统为例,我们常常会使用top命令、netstat命令及sar命令来查看操作系统的一些数据信息。例如,可以通过netstat命令检查服务器程序是否正确地监听了指定的端口等。
借助其他分析工具。例如,如何判断服务器程序是否产生了内存泄漏?通常需要借助于内存检测工具来进行分析。在Linux环境下,我们常用Valgrind来进行内存检测。这是一款非常好用、功能强大的分析工具,可以帮助测试或者开发工程师快速发现很多隐藏的程序Bug,尤其是在内存检测方面(同时它还具有很多其他优秀的功能,读者可以自己查看官网中的使用手册)。
分布式系统分布式系统压力测试与性能测试
对于分布式系统而言,压力测试和性能测试非常重要。在进行压力测试和性能测试的时候,可能会碰到下面一些难点。
数据准备。如何准备海量的测试数据并保证模拟数据的真实性?以一个分布式的文件系统为例,预先存入100GB的数据还是存入100TB的数据、存入的文件是大小基本一致差别不大还是各不相同甚至差异很大(例如,从几十字节至几十兆字节不等),这些因素对于分布式系统的性能影响是有很大差异的。另外,如果需要预先存入100TB的数据,若按每秒写入100MB数据来计算,写入100TB数据需要100×/100=1048576秒=291.27小时=12天。我们是否能忍受这么长时间的数据准备工作?为了解决这样的问题,我们需要对系统架构设计进行深入分析,设计好测试场景,并提前进行测试用例的设计,以尽早开始准备测试数据。
性能或压力测试工具。通常来说,分布式系统的测试需要开发一些测试工具来满足性能测试的需求。如果可以的话,建议这样的测试工具最好由测试工程师自己来实现,因为测试工程师更清楚自己的测试需求。当需要自己开发测试工具的时候,有两个关键问题需要重点关注:第一,一些关键数据的收集方式与计算将成为性能测试工具的关键,例如,TPS(每秒请求数)、Throughput(吞吐量)计算的准确性;第二,要保证性能测试工具的性能,如果工具本身的性能不好,将无法给予分布式系统足够强大的压力来进行测试。另外,当考虑到多并发(例如有10万客户端同时并发连接)时,如果性能测试工具在一台测试机器上只能运行50个或者更少的话,那么需要的测试机器数量也将会很庞大(例如2000台测试机),这个成本或许是许多公司不能承受的。因此,性能测试工具本身的性能必须要足够好才能满足需求、降低测试成本。
分布式系统分布式系统自动化测试
自动化测试是测试行业发展的必然趋势,对于分布式系统测试而言也不例外。在实施分布式系统自动化测试的过程中,我们可能会碰到下面两个难点问题。
涉及平台多且硬件杂,测试流程控制困难。在实施自动化测试的过程中,测试脚本需要控制的操作系统和应用程序很多,而且存在跨平台的特性,同时还有可能需要控制一些网络设备。因此,选择一个优秀的自动化测试框架成为了非常重要的工作之一。以我们的实践经验来看,STAF是一个不错的选择,它的平台(Windows及Linux各版本)支持及开发语言的支持都很全面。
测试结果验证复杂。对于分布式系统的自动化测试来说,我们需要通过测试脚本来收集各种测试结果数据以验证测试结果的正确性。在实施自动化测试的过程中,我们可以将测试结果数据收集部分模块化,通过各子模块来检测各项数据是否正确。例如,我们会设计一个日志分析模块,主要负责从服务器应用程序的日志中收集相应数据进行对比验证(本文前面提到的在打桩日志中增加关键字部分就显得格外重要)。
随着互联网的发展,大型分布式系统也越来越多、越来越复杂、越来越重要。如何有效地保证大型分布式系统7×24小时全天候持续稳定地运行也就成为了一个重要课题。
分布式系统分布式系统目标
1. 本地自治2. 不依赖于中心场地3. 可连续操作性4. 位置独立性5. 分片独立性6. 复制独立性7. 分布式查询处理8. 分布式事务管理9. 硬件独立性10. 操作系统独立性11. 网络独立性12. DBMS独立性[2]
.u-mail邮件服务器[引用日期]
.数据库[引用日期]
本词条内容贡献者为
副理事长兼秘书长
中国通信学会
中国通信学会
原武汉邮电科学研究院
中国联通网络技术研究院
工业和信息化部电信研究院互联网中心
副院长兼总工程师
中国移动设计院
首席架构师业务总工程师
中兴通讯股份有限公司
百度公司发展研究中心
中国通信学会科普中国百科科学词条评审专家委员会
中国通信学会是全国通信...
提供资源类型:内容

我要回帖

更多关于 规范比效率更重要 的文章

 

随机推荐