传统的应用系统模式是“主机/终端”或“客户机/服务器”,客户机/服务器系统(Client/Server System)的结构是指把一个大型的计算机应用系统变为多个能互为独立的子系统,而服务器便是整个应用系统资源的存储与管理中心,多台客户机则各自处理相应的功能,共同实现完整的应用。随着Internet 的发展壮大,这些传统模式已经不能适应新的环境,于是就产生了新的分布式应用系统,即所谓的“浏览器/服务器”结构、“瘦客户机”模式。
在Client/Server结构模式中,客户端直接连接到数据库服务器,由二者分担业务处理,这样体系有以下的缺点:
1、Client与Server直接连接,安全性低。非法用户容易通过Client直接闯入中心数据库,造成数据损失;
2、Client程序肥大,并且随着业务规则的变化,需要随时更新Client端程序,大大增加维护量,造成维护工作困难;
3、每个Client都要直接连到数据库服务器,使服务器为每个 Client建立连接而消耗大量本就紧张的服务器资源;
4、大量的数据直接Client/Server传送,在业务高峰期容易造成网络流量暴增,网络阻塞。
Client/Server模式的这些先天不足,随着业务量的变化,出现越来越多的问题,我们有必要对这种两层体系进行改革,将业务处理与客户交互分开来,实现瘦客户/业务服务/数据服务的多层分布式应用体系结构。本文拟就多层分布式应用体系的有关问题进行探讨。 二、多层分布式应用体系
随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。在这种体系结构中,客户机只存放表示层软件,应用逻辑包括事务处理、监控、信息排队、Web服务等采用专门的中间件服务器,后台是数据库。在多层分布式体系中,系统资源被统一管理和使用,用户可以通过网格门户(portal)透明地使用整个网络资源。
2.1 多层分布式应用体系介绍
2.1.1多层分布式体系主要层次
在多层体系中,各层次按照以下方式进行划分,实现明确分工:
瘦客户:提供简洁的人机交互界面,完成数据的输入/输出;
业务服务:完成业务逻辑,实现客户与数据库对话的桥梁。同时,在这一层中,还应实现分布式管理、负载均衡、Fail/Recover、安全隔离等;
数据服务:提供数据的存储服务。一般就是数据库系统。
2.1.2多层分布式体系主要特点
安全性:中间层隔离了客户直接对数据服务器的访问,保护了数据库的安全;
稳定性:对于要求24*7工作的业务系统,多层分布式体系提供了更可靠的稳定性:
1、中间层缓冲Client与数据库的实际连接,使数据库的实际连接数量远小于Client应用数量。当然,连接数越少,我们的数据库系统就越稳定。
2、Fail/Recover机制能够在一台服务器当机的情况下,透明地把客户端工作转移到其他具有同样业务功能的服务上。
易维护:由于业务逻辑在中间服务器,当业务规则变化后,客户端程序基本不做改动;
快速响应:通过负载均衡以及中间层缓存数据能力,可以提高对客户端的响应速度;
系统扩展灵活:基于多层分布体系,当业务增大时,可以在中间层部署更多的应用服务器,提高对客户端的响应,而所有变化对客户端透明。
2.2多层分布应用的开发
分布式多层体系的开发主要考虑三方面的技术,首先是开发环境,开发人员需要一种创建新组件、并将已有组件加以集成的开发环境。其次是应用程序的集成,开发人员需要集成各种应用程序,以创建出更强大的应用。第三是应用程序的配置,分布式多层体系的开发需要配置平台的支持,以便在用户剧增时能有效地扩展,并保持系统的稳定。 目前多层分布应用的开发,比较重要的有两种规范,既COM+和CORBA。其中COM+主要用于Windows 平台,CORBA则提供跨平台的能力。同时,随着分布式应用的发展,旧的硬件/软件平台的不断更新,跨硬件平台、网络环境、操作系统以及跨不同数据库的应用系统不断出现,使我们传统的开发工具越来越陷入尴尬境地,因此中间件应运而生。
2.2.1中间件简介
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机服务器的操作系统之上,管理计算机资源和网络通信。我们能够这样理解,中间件也是一类软件,它的首要任务是实现应用与平台无关的互操作,其次能够合理的管理网络通信资源。按照IDC的分类方法,中间件可分为六类,第一类是终端仿真/屏幕转换中间件,第二类是数据库访问中间件,第三类是远程过程调用中间件,第四类是消息中间件,第五类是交易中间件,第六类是对象中间件。 2.2.2目前市场上主要中间件的比较
在此,我们比较五种中间件产品:BEA的Tuxedo,奥能的Goddess,东方通的T-Link/T-Easy,SilverStream,Sybase的Jaguar CTS。我们将他们分为三类:
(1)成熟的中间件产品,包括Tuxedo、Goddess 和T-Link/T-Easy
Tuxedo、Goddess 和T-Link/T-Easy在消息中间件的基础上提出交易中间件的概念。交易中间件的作用是满足现代业务应用系统12条基本原则:完整性、安全性、可伸缩性、可用性、可管理性、互操作性、适应性、易开发性、经济性、快速的响应时间、数据的可分布性、易使用性。采用商业交易中间件带来以下好处:缩短产品投放市场所需时间、节省应用开发费用、减少系统运行开销、降低失败率、提高投资效率、简化应用集成、降低软件维护费用、高质量、保证技术革新。好的交易中间件具备成熟、方向、性能、功能、开放、简单六要素。T-Link/T-Eay、Tuxedo、Goddess都具备了以上功能;Goddess 在底层技术上和Tuxedo相似,但提供了比其它产品丰富的多的应用级支持,配置非常简单,并且是唯一提供C++接口方式的中间件产品,使得应用开发时间大大缩短。相比Tuxedo、Tuxedo,T-Link/T-Eay在功能、速度方面均存在较大差距,并且配置比较复杂。
(2)面向Web应用服务器的中间件SilverStream
从整体概念上来看,它们以Java为基础,它们不止提供中间消息传递、事务管理,还在上层构建了一个应用服务器,同时还提供了开发平台。它主要用于雇员/供应商(客户)/群体的Web开放式应用系统,对于移动目前的综合业务系统来说,与完全基于Web的应用还有很大的差别。
(3)支撑数据库应用开发的中间件Juguar CTS
Juguar CTS是由数据库厂商Sybase提供。由于Sybase有开发大型数据库Sybase以及开发工具PowerBuilder的经验,所以CTS对数据库尤其是Sybase自己的数据库有强大的支撑能力,同时,考虑过去PowerBuilder开发的Client/Server应用,当升级到 PowerBuilder 7.0 企业版以后,很容易的就能把他们转移到多层分布式平台上。总的来说,Juguar CTS(包括其开发套件)是一个提供快速多层应用的开发平台,特别是对PowerBuilder的程序员,在系统开放性方面有一定的局限性。
三、多层分布体系在移动公司综合业务平台中的应用
由于多层分布体系具有Client与数据库隔离,保证系统的安全可靠;扩容容易,有效的减少投资;完全的OOP设计,应用有很好的可维护性;负载均衡、Fial/Recover,完全解决客户/服务器系统因用户量增大造成数据库当机的现象,目前这一体系在移动公司综合业务平台中正得到广泛应用。针对各移动公司业务的多样性以及需求的不同,可构造一个跨服务器平台、跨中间件的综合业务应用系统。这一系统主要包括以下三个方面的模型:
3.1面向业务模型
![](http://51cmm.csai.cn/NewTech/Images/dc.jpg)
该模型与基于客户/服务器的机制不同,将业务的表现与实现逻辑分开,这样更与现实世界的业务处理相同。因为前台的操作人员不需要对业务逻辑进行控制,而业务逻辑是由管理人员确定的,操作人员仅面向人机交互。其中包括三个层次:
①表示层
该层为用户提供人机交互界面,所有的数据录入/显示操作都在此完成。当用户需要进行数据交换时,是不允许直接访问数据库服务器,而是通过业务逻辑层提供的Service Interface接口进行访问,这样保证了后台数据的安全性。同时实现了真正意义上的瘦客户。
②业务逻辑层
该层负责对输入/输出的数据按照业务逻辑进行加工处理,并实现对数据库服务器的访问。从上图我们可以看到,该层对它的上级和下级分别提供了Servive Interface和DBAgent。
Service Interface接口用于向客户程序提供业务服务。当表示层录入数据后,通过该接口传递到本层。本层根据预先定义好的业务规则对数据进行分析处理,通过DBAgent访问数据库取得显示数据再根据业务规则进行加工,从Service Interface接口返回到表示层进行显示。
DBAgent(数据访问代理)接口用以实现对后台数据库的无关访问。在DBAgent内部,我们为不同的数据库提供了相同的接口引擎,屏蔽了与数据库相关的细节,也就是说,当后台数据库发生了变化,由于实现通过DBAgent进行数据库访问,因而我们的应用程序不需要做任何变动。例如,我们现在的综合业务平台系统使用的是Oracal大型数据库,以后随着业务的扩展需求,我们可能把话单单列出来,放到其他的数据库服务器中,以降低中心数据库服务器的负载。这时,从成本角度考虑,我们可能选用其他数据库,但我们不需要再投资购买应用软件的相应数据库版本。
③数据存储层
即实际意义上的RDBMS。
采用以上的技术,我们就解决了客户/服务器模式中面临的最严峻问题:客户机增多-->数据库连接增多-->服务器不断扩容-->当机。在多层体系中,由于客户机不是直接访问数据库,而是通过业务逻辑服务层,因此我们可通过业务层有效的实现各连接公用数据库连接。也就是说,100个客户端同时在线,我们可能到数据库只有10个实际连接。
3.2对象体系模型
![](http://51cmm.csai.cn/NewTech/Images/dc1.jpg)
本应用系统中,我门使用的是完全的面向对象设计方法。把所有的元业务(即与其他业务互相独立)以及用户与计算机的人机界面都作为一个个单独的对象,挂接到相应的数据总线上,这样有以下几个优点:
①业务之间互不影响
各业务对象之间通过标准接口规范定义实现松散耦合,由于某种原因导致其中某业务失败,而其他业务仍可照常工作。
②支持业务的热插拨
业务对象可以从对象数据总线动态地加载/卸载。
③实现负载均衡
同一业务对象可以在不同的物理计算机上运行多个副本。透过对象访问控制,可以把客户端界面对象的请求透明地分担到不同的计算机,实现负载均衡,降低单机的负载,从而降低对硬件要求。
④实现Fail/Recover
由于实现同一对象在不同物理计算机上的实现,当一台应用服务器当机后,对象访问控制可以把界面对象的请求透明地转移到其他应用服务器,而不影响客户端的任何操作。 3.3协议层次模型
![](http://51cmm.csai.cn/NewTech/Images/dc2.jpg)
①应用服务层
主要运行业务对象,提供人机交互界面以及与数据库的交互。
②调用服务层
实现分布式对象之间的过程调用。通过这一层,可向应用服务层提供基于函数名称的调用,而所有与通信服务层有关细节都被屏蔽掉。
③通信服务层
主要指各类中间件产品或者基于TCP/IP的访问。由于应用层没有直接访问通讯层产品,而是由调用服务层进行服务,所以通讯层是选用什么类型的中间件产品或者自己基于TCP/IP构造通讯层都与应用程序无关,只需要调整调用服务层与通讯服务层的接口。
四、结束语
随着基于Web的瘦客户机结构的发展, 基于多层分布体系的应用将会越来越广泛。而中间件作为分布体系应用的关键技术,以其独特的优势为各种分布式应用的开发注入了强大动力,极大地推动了应用系统集成的发展。