首页 > 技术文章 > 概要设计之系统构架设计

yilang 2020-02-05 20:32 原文

简介

大型的综合应用系统大都是由许多子系统组成的。一般说来,这些子系统能够独立运行, 有自己专门的服务任务,并可能需要部署在不同的计算机上工作。 应该说,组成系统的子系统具有一定的独立性,但子系统之间又有着联系。例如,有共同的数据源,相互之间需要通信,并可能需要协同工作。系统构架设计的任务就是根据需求规格 中的需求基本框架,把组成系统的这些子系统、子系统之间的关系、它们之间需要的数据通信 等确定下来,并把它们工作时所需要的设备环境、网络环境和数据环境等也一同确定下来,由 此对系统作出一个合理的、符合应用需要的整体部署。 需求分析中的需求框架是基于用户应用域建立的,概要设计时可以通过需求框架来映射系 统构架。例如,可以利用需求分析中的高层数据流图对系统基本工作流程的描述,来映射系统的基本结构,使得需求分析中对系统的逻辑描述,转换为概要设计中对系统的物理描述。 一般情况下,系统构架设计可以按照以下步骤进行。

(1)定义子系统。根据需求分析中有关系统的业务划分情况,将系统分解成诸多具有独立任务的子系统。

(2)定义子系统外部接口。分析子系统之间的通信与协作,以获得对子系统外部接口的 定义。

(3)定义系统物理构架。根据系统的整体逻辑结构、技术特点、应用特点以及系统开发的 资金投入情况等,选择合适的系统物理构架,包括:硬件设备、软件环境、网络结构和数据库结构,并将子系统按照所选的物理构架进行合理部署与优化。 下面将介绍几种典型的系统构架。需要注意的是,任何一种结构都会有优点与缺点,尽管 是一些现在看来已经过时的结构也有它存在的现实价值。

集中式结构

集中式结构是最传统的系统构架,系统由一台计算机主机和多个终端设备组成,其结构如下图 所示。 集中式结构的特点是系统中的全部软件资源都被集中安装在这一台主机上,包括:操作系统、数据库系统、应用系统和资源文件等。系统的智能处理器也被集中在主机上。用户则是通 过和主机连接的基本无智能的终端设备与系统进行通信。由于所有计算任务都通过主机完成,因此集中式结构对计算机性能有比较高的要求。早期应用中一般使用小型以上计算机提供比较 强大的主机计算支持,操作系统则一般是 Unix 系统,能够向外提供多用户服务。

 

应该说,集中式结构具有非常好的工作稳定性。另外,由于集中式结构是直接通过终端接 口实现多用户通信,因此系统还具有较高的安全保密特性。集中式结构优点是高稳定性和高安 全性。但集中式结构有较苛刻的设备要求,系统建设费用、运行费用都比较高,而且系统灵活 性不够好,系统结构不便于扩充。

客户机/服务器结构(C/S)

客户机/服务器结构是一种分布与集中相互结合的结构,系统依靠网络被分布在许多台不同的计算机上,但通过其中的服务器计算机提供集中式服务。 图 5-3 所示的是客户机/服务器结构的典型应用。这是一个提供视频信息和图片信息的多用户超文本应用系统,系统中有多个服务器,能够分别提供不同的信息服务。其中,视频服务器提供视频数据服务,传送的数据需要快速同步,但分辨率相对较低;图片服务器提供图片数据服务,数据需要以高分辨率发送;目录服务器则提供目录查询服务,能够支持各种查询,并 能够与超文本信息进行链接。 与集中式结构中的无智能终端不同,客户机/服务器结构中的客户机是具有智能的,需要 安装客户程序,并需要通过客户程序访问服务器。例如下图中的诸多客户机,它们可以通过一个用户界面客户程序对服务器进行访问,并可以通过这个用户界面程序显示从服务器返回的 图片或视频信息。 在客户机/服务器结构中,客户机是主动的,它主动地向服务器提出服务请求;而服务器 则是被动的,它被动地接受来自客户机的请求。一般说来,客户机在向服务器提出服务请求之 前,需要事先知道服务器的地址与服务;但服务器却不需要事先知道客户机的地址,而是根据 客户机主动提供的地址向客户机提供相应的服务。

 

客户机/服务器结构的优越性是结构灵活、便于系统逐步扩充。例如上面的多用户超文本 应用系统,也许用户最初只需要提供图片信息服务,因此系统初期开发时可以只创建图片服务 器,只是当用户需要提供视频信息服务时,才创建视频服务器。显然,这有利于应用系统的分 阶段实现与逐步扩充。另外,由于客户机/服务器中服务器可以采用高性能微机配置,因此其建 设成本、运行费用等也明显低于基于小型机的集中式结构。 需要注意的是,客户机/服务器结构是一种逻辑结构,客户机或服务器都只是角色概念。 因此可以将客户软件和服务软件安装在一台计算机上,而使这台计算机既担任客户机角色,又担任服务器角色。当然,也可以在一台计算机上安装多个服务软件,而使这台计算机承担多个 服务器角色,例如,它可以既是图片服务器,又是视频服务器。

多层客户机/服务器结构

客户机/服务器结构已被广泛应用基于数据库的信息服务领域,并演变出了多层客户机/服 务器结构。 下图所示是一个有关信息管理应用的逻辑结构。这是一个三层逻辑结构,其中的表示层 是指对用户的信息服务;应用层是指对数据的应用逻辑加工; 数据层是指系统中的数据库管理。在集中式系统中,以上各个不同层面的元素都被部署在一台主机上,这时或许没有必要在它们之间清楚地划分边界。但值得注意的是,当采用客户机/ 服务器结构时,这些元素却有可能要被分布到不同的计算机上 去,因此必须在它们之间给出一个清楚的边界。

 

两层结构

两层客户机/服务器结构是将信息表示与应用逻辑处理都 放在了客户机上,而服务器只需要管理数据库事务,其结构如下图 所示。这时的客户机一般被称为“胖客户机”。


两层结构的优点是结构简单,技术上比较容易实现。而且应用软件基本上是在客户端工作, 因此非常方便客户端数据的计算与表现,能够有 效保证系统的工作性能。 两层结构的缺陷是在管理与维护上存在困 难。这时的客户端承担了信息表示与应用计算双 重任务,客户端程序复杂,并且被分散在许多不 同的客户计算机上。除非应用软件的功能非常稳 定或客户端口很少,否则当应用软件由于用户应用规则的变化,而不得不对其功能进行改造时, 系统中数目庞大的客户机群,将会使系统变更显得非常麻烦,需要很大的系统变更开销。

三层结构

三层结构是鉴于两层客户机/服务器结构在管理与维护上存在的困难而专门提出的,这就 是使“胖客户机”减肥,使它尽量简单,变成“瘦客户机”。更具体地说,就是将“胖客户机” 中比较复杂,并且容易发生变化的应用逻辑部分提取出来,将它放到一个专门的“应用服务器” 上,由此产生的结构如下图所示。

 

显然,三层结构使信息表示、应用逻辑处理和数据库管理被自然地分成了三个独立的部分。 其中,应用逻辑处理是应用系统中的最易发生需求改变的部分,被放到了应用服务器上。与两层结构比较,三层结构给系统维护带来了很大的便利,当用户应用规则发生变化时,需要改变的不是数目庞大客户端,而是一个或少数几个应用服务器。但是,三层结构使实现软件的技术难度加大、开发周期延长,并且对服务器设备也有更高的要求。 需要指出的是,三层客户机/服务器结构也是逻辑结构,因此一个单一的服务器计算机可以既是应用服务器,又是数据库服务器。然而许多情况下,为了使系统具有更高的性能指标, 或使系统具有更好的稳定性,系统中大都分别设置有专门的应用服务器和数据库服务器。而在一些实际开发中,为了使应用服务器能够承担来自于许多客户机的计算请求,还往往需要根据软件系统的计算负荷状态,对应用服务器进行专门的配置设计,例如,按事务进行任务分工, 并在系统中设置多台专门应用服务器,它们分别完成一些特定的服务请求任务。

B/S结构

B/S 结构是基于 Web 技术与客户机/服务器结构的结合而提出来的一种多层结构,其中的 B 是指 Web 浏览器(Browse),S 是指应用服务器与数据服务器(Server)。目前,这种结构已被 广泛应用于网络商务系统之中,例如网上银行、网上商店等。其结构图如下图 所示。 B/S 结构将信息表示集中到了专门的“Web 服务器”上。因此,与三层客户机/服务器结构 比较,B/S 结构多了一层服务器。应该说,B/S 结构使客户端程序更加简化。这时的客户机上已 经不需要专门的应用程序了,只要有一个通用的 Web 浏览器(例如,Microsoft Internet Explorer),就可以实现客户端数据的应用。

 

B/S 结构的优点是不需要对客户机进行专门的维护(客户机上没有专门的应用程序),特别 适合于客户机位置不固定或需要依靠互联网进行数据交换的应用系统。缺点是最终用户信息需 要通过 Web 服务器获取,并通过网络传送到客户机上,因此系统的数据传输速度以及系统的稳定性,都将明显低于三层客户机/服务器结构。 如同其他客户机/服务器结构一样,B/S 结构也是逻辑结构,因此一个单一的服务器计算机 可以既是 Web 服务器,又是应用服务器和数据库服务器。但如果需要使系统具有更高的性能或 更加稳定的运行状态,那么则有必要将 Web 服务、应用处理和数据管理从物理上分离开来,设 置专门的 Web 服务器计算机、应用服务器计算机和数据库服务器计算机。 在许多应用中,B/S 结构和三层客户机/服务器往往被结合起来使用。例如“网上购物系统”, 其面向消费者的购物操作一般采用的是 B/S 结构,但面向购物中心工作人员的相关操作,为了 保证系统运行稳定快捷,则可能会采用三层客户机/服务器结构。其对应的物理构架如下图 所示。

B/S 结构的优点是不需要对客户机进行专门的维护(客户机上没有专门的应用程序),特别 适合于客户机位置不固定或需要依靠互联网进行数据交换的应用系统。缺点是最终用户信息需 要通过 Web 服务器获取,并通过网络传送到客户机上,因此系统的数据传输速度以及系统的稳 定性,都将明显低于三层客户机/服务器结构。 如同其他客户机/服务器结构一样,B/S 结构也是逻辑结构,因此一个单一的服务器计算机 可以既是 Web 服务器,又是应用服务器和数据库服务器。但如果需要使系统具有更高的性能或 更加稳定的运行状态,那么则有必要将 Web 服务、应用处理和数据管理从物理上分离开来,设 置专门的 Web 服务器计算机、应用服务器计算机和数据库服务器计算机。 在许多应用中,B/S 结构和三层客户机/服务器往往被结合起来使用。例如“网上购物系统”, 其面向消费者的购物操作一般采用的是 B/S 结构,但面向购物中心工作人员的相关操作,为了 保证系统运行稳定快捷,则可能会采用三层客户机/服务器结构。其对应的物理构架如上图 所示。

组件对象分布式结构

组件是一个对象包。组件对象分布式结构就是通过组件而使软件系统中的组件对象被分布到网络上的多台计算机上。组件对象具有一些公共接口,能够向外提供服务,不同组件的对象 之间可以通过公共接口相互通信和协同工作。 应该说,传统的客户机/服务器结构是一种不对称的分布式结构,其客户机和服务器具有不同的地位。客户机能够接受来自服务器的服务,但不能接受其他客户机的服务;服务器能够 扮演客户机的角色,由此接受来自其他服务器的服务,但它不能请求来自客户机的服务。 然而,组件对象分布式结构则是一种比较对称的结构,在这种结构中,已经没有了客户机与服务器之间的界限,这些对象既可充当服务器,也可充当客户机,其角色只是决定于它是在 提供服务还是在请求服务。

组件对象分布式结构是基于对象中间件建立的。主要用于对象分布式计算的中间件有:

•  CORBA(通用对象请求代理模型):由对象管理组织(OMG)定义,提供了一组通用的与 机器无关的分布式对象计算方法。可用在 Unix、Linux 或 Windows 上。

•    DCOM(分布式组件对象模型):由微软公司定义,主要用在微软公司的操作系统上。  可以把对象中间件看成是能够在其上插拔组件的软件总线。这就像硬件总线允许不同的接 口卡插于其上以支持硬件设备之间的通信一样,对象中间件作为软件总线,也允许在其上添加 或移走组件对象,或进行组件对象之间的相互通信。其逻辑结构如下图所示。

 

应该说,组件对象分布式结构是一个开放的体系构造,它不仅允许新的组件对象根据需要 增加进来,而且还允许使用不同语言编写的对象。现在,组件对象分布式结构已经成为构造软 件系统的一种基本模式,诸多运行在互联网上的远程服务系统,它们即是按照这种结构构造的。
 在应用系统中采用组件对象分布式结构时,可依照以下步骤来进行系统结构设计:

(1)按照系统功能服务对系统进行逻辑分块,确定系统的逻辑构造。

(2)以系统逻辑构造为依据,设计系统的分布式组件对象。

(3)以组件之间的通信与协作为依据,对组件进行物理部署。

组件对象分布式结构具有灵活的构架,系统伸缩性好,能够给系统的功能调整与扩充带来 便利。但是,采用完全分布的组件对象结构,其技术难度太大,内部结构也较复杂。相比之下, 客户机/服务器结构是一种更加容易理解的结构,并与现实的组织机构、业务过程具有一致性。 因此,在许多实际应用中,往往将组件对象分布式结构与客户机/服务器结构结合起来,其中组 件对象分布式结构被作为一种实现技术嵌入到客户机/服务器系统之中。这种构架的特点是:系 统先按照客户机/服务器结构进行逻辑构造;然后无论是客户机还是服务器,都按照组件对象分 布式结构进行内部构造设计,它们都由组件组成,并都需要通过对象中间件实现通信。显然, 这样的系统将更加具有柔性,系统的变更也将会变得更加容易。例如,一个二层客户机/服务器 结构,只需要对其组件对象进行重新部署,就可以将其改造成为三层甚至多层客户机/服务器   结构。 实际上,分布式组件对象技术能够给应用服务器的创建带来更好的可伸缩性,由诸多组件构造的应用服务器可以更加自由地进行物理部署。例如一个供销管理系统,假设其包括供应商 联系、库存控制、客户联系、货物订购等业务内容,并且这些业务都由一个供销部门负责,则 系统构造可按以上业务创建组件,并将这些组件部署在一台应用服务器上,如下图 所示。

 

但假如业务流程发生了变化,例如,由于业务量扩大,该供销部门需要拆分为供应部、销售部两个部门时,考虑到业务归口与服务器负荷的影响,上面的一台应用服务器也需要改变为两台应用服务器,分别承担供应与销售的事务处理。显然,系统所采用的组件对象分布式结构 能够很方便地适应这种业务需求的变更,需要进行的系统改造只不过是将用于业务处理的组件 重新进行部署或安装,如下图  所示。

 

推荐阅读