聊聊中间件
发表于:2007-06-08来源:作者:点击数:
标签:
[转载] 中间件 ——构筑复杂分布式应用的关键技术 中科院软件所仲萃豪 九十年代初客户机/ 服务器 计算模式开始成为主流技术,将数据统一存储在数据服务器上,而有关的业务逻辑都在客户端实现,即所谓胖终端的 解决方案 ,这种两层结构的模式大大阻碍着系统的
[转载]
中间件
——构筑复杂分布式应用的关键技术
中科院软件所 仲萃豪
九十年代初客户机/
服务器计算模式开始成为主流技术,将数据统一存储在数据服务器上,而有关的业务逻辑都在客户端实现,即所谓胖终端的
解决方案,这种两层结构的模式大大阻碍着系统的发展,单一的服务器结构紧密地依赖供应商;数据存取受到限制;难以扩展到大企业广域网或国际互联网;也难以管理客户端的机群。随着用户业务
需求的增长及Internet/Intranet的普及,将以三层或四层体系结构取而代之。三层结构就是把用户端的业务逻辑独立出来,并与
数据库服务器中存储过程合并在一起,构成应用层,以提高计算能力,实现灵活性。在这种结构中用户端仅仅是处理图形用户界面(GUI),而目前趋势是采用具有交互功能的浏览器,即形成瘦终端的工作方式,为此,中间又增加了一层,称为Web服务器层,形成了四层体系结构。
这类多层结构的分布系统,各服务器和终端机之间都是通过网络连接起来的,并有大量信息和数据进行传递。对每个应用系统而言,在设计和实现时需要开发的,仅是在应用服务器上的业务逻辑部分的软件,除此之外,还必须要设计处理分布系统所特有的功能的软件,而目前的系统软件(操作系统和支撑软件)都不支持。为此出现了中间件,它是处于系统软件和应用软件之间的一批软件。使设计者集中设计与应用有关的部分,大大简化了设计和维护工作。通过五、六年的大量应用和实践,中间件已有一批成熟的产品,并成为设计分布系统时不可缺少的软件。仅仅几年时间,中间件以迅雷不及掩耳的速度迅猛发展,每年的市场销售额均是成倍的增长。
什么是中间件
中间件是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,因此,我同意这种定义:
中间件=平台+通信
这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。
中间件的作用和分类
要说清这个问题我们用一个生活中的实例来比喻。把分布式系统看作北京市区的交通系统,网络看作市区马路,通过交通工具(汽车)实现通信,每分钟将有几万辆车在马路上行驶,如果没有相应的交通设施和管理规划,北京市将会乱成一团,发生各种交通事故。
1.通信处理(消息)中间件
首先要修好马路,安装红绿灯,设立交通管理机构,制定出交通规则,也就是我们要建网和制定出通信协议,能在不同平台之间通信,实现分布式系统中可靠的、高效的、实时的跨平台数据传输(如TongLINK、BEA eLink 、IBM的MQSeries等),称为消息中间件。这是中间件中唯一不可缺少的,是销售额最大的中间件产品,目前在
Windows 2000操作系统中已包含了其部分功能。
2.事务处理(交易)中间件
在分布式事务处理系统中要处理大量事务,常常在系统中要同时做上万笔事务。例如在北京市就要设置各种运载汽车,完成日常的运载,同时要随时监视汽车运行,出现故障时,要有排除措施,发生堵塞时要进行调度。在联机事务处理系统(OLTP)中,每笔事务常常要多台服务器上的程序顺序地协调完成,一旦中间发生某种故障时,不但要完成恢复工作,而且要自动切换系统,达到系统永不停机,实现高
可靠性运行;同时要使大量事务在多台应用服务器能实时并发运行,并进行负载平衡地调度,实现昂贵的可靠性机和大型计算机系统同等的功能,为了实现这个目标,要求系统具有监视和调度整个系统的功能。BEA的 Tuxedo由此而著名,它成为增长率最高的厂商。一个事务处理平台,根据X/OPEN的参数模型规定,应由事务处理中间件、通信处理中间件以及数据存取管理中间件三部分组成。东方通科技公司的TongLINK 和TongEASY实现了这个参考模型规定。
3.数据存取管理中间件
在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型的、复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的,该中间件将为在网络上虚拟缓冲存取、格式转换、解压等带来方便。
4.Web服务器中间件
浏览器图形用户界面已成为公认规范,然而它的会话能力差、不能作数据写入、受HTTP协议的限制等,就必需进行修改和扩充,形成了 Web服务器中间件,如 SilverStream公司的产品。
5.安全中间件
一些军事、政府和商务部门上网的最大障碍是安全保密问题,而且不能使用国外提供的安全措施(如防火墙、加密、认证等),必需用国产的产品。产生不安全因素是由操作系统引起的,但必需要用中间件去解决,以适应灵活多变的要求。
6.跨平台和构架的中间件
当前开发大型应用软件通常采用基于构架和构件技术,在分布系统中,还需要集成各节点上的不同系统平台上的构件或新老版本的构件,由此产生了构架中间件,功能最强的是CORBA,可以跨任意平台,但是太庞大;
JavaBeans较灵活简单,很适合于做浏览器,但运行效率差;DCOM模型主要适合 Windows平台,已广泛使用。实际上国内新建系统主要是
UNIX(包括
LINUX)和 Windows,因此针对这两个平台建立相应的中间件要实用得多。
7.专用平台中间件
为特定应用领域设计领域参考模式,建立相应构架,配置相应的构件库和中间件,为应用服务器开发和运行特定领域的关键任务(如电子商务、网站等)。
8.网络中间件
它包括网管、接入、网络
测试、虚拟社区、虚拟缓冲等,也是当前最热门的研发项目。
中间件模型和形态
中间件从诞生起,仅仅是五年时间,但发展极其迅速,是有史以来发展最快的软件产品,但在技术上还处于成长阶段,还没有统一的标准和模型,通常都是用C++语言以
面向对象的技术来实现的,但是它的特性已超出面向对象的表达能力,由于它属于可重用构件,目前趋向于用构件技术来实现。然而中间件要涉及软件的所有标准、规范和技术,它含有更多的内涵,因为它包括平台功能,自身具有自治性、自主性、隔离性、社会化、激发性、主动性、并发性、认识能力等特性,是近似于Agent(代理)的结构,采用Agent的概念和技术更合适一些,建立模型和规范是促进技术发展的核心措施。
仲萃豪:中国科学院软件研究所研究员,博士生导师,研究方向是计算机软件与计算方法,仲老是我国第一代软件专家,曾率先研究软件中各领域课题:编译程序、语言、操作系统、应用软件等。近10年来主要从事应用软件开发及其
软件工程研究。曾先后任10多所院校的兼职教授、北京市软件专业顾问、软件工程国家工程师研究中心研究员,并获得国家科技进步二等奖、省部级一等奖等8项。
消息中间件产品
IBM MQSeries
IBM MQSeries是IBM的消息处理中间件。MQSeries提供一个具有工业标准、安全、可靠的消息传输系统。
它的功能是控制和管理一个集成的系统,使得组成这个系统的多个分支应用(模块)之间通过传递消息完成整个工作流程。MQSeries基本由一个信息传输系统和一个应用程序接口组成,其资源是消息和队列。
MQSeries的关键功能之一是确保信息可靠传输,即使在网络通信不可靠或出现异常时也能保证信息的传输。MQSeries的异步消息处理技术能够保证当网络或者通信应用程序本身处于“忙"状态或发生故障时,系统之间的信息不会丢失,也不会阻塞。这样的可靠性是非常关键的,否则大量的金钱和客户信誉就会面临极大的损害。
同时,MQSeries是灵活的应用程序通信方案。MQSeries支持所有的主要计算平台和通信模式,也能够支持先进的技术(如Internet和Java),拥有连接至主要产品(如Lotus Notes和SAP/R3等)的接口。
东方通科技 TongLINK/Q
TongLINK/Q是面向消息的中间件。TongLINK/Q的主要功能是在不同的网络协议、不同的操作系统和不同的应用程序之间提供可靠的消息传送。
高效、可靠、灵活的传输功能
通过预建连接、多路复用、流量控制、压缩传输、断点重传、传输优先级管理、服务(类)驱动等机制来保证实现。
事件代理机制
事件代理机制提供了一种异步应用开发模型,用户只需要定义一个事件及怎么处理,TongLINK/Q自动完成操作。利用事件代理机制,可以实现事件订阅与发布,实现策略管理。
会话管理
TongLINK/Q通过一个简单的会话标识来描述一种复杂的通信关系,实现了更高层次、更抽象的通信服务。
良好的易用性和可管理性
TongLINK/Q实现了实时监控和管理,提供了日志机制、动态配置、远程管理功能。并提供多层次安全管理,支持多种开发工具。
交易中间件
BEA Tuxedo
BEA Tuxedo作为电子商务交易平台,它允许客户机和服务器参与一个涉及多个数据库协调更新的交易,并能够确保数据的完整性。BEA Tuxedo一个特色功能是能够保证对电子商务应用系统的不间断访问。它可以对系统组件进行持续的监视,查看是否有应用系统、交易、网络及硬件的故障。一旦出现故障,BEA Tuxedo会从逻辑上把故障组件排除,然后进行必要的恢复性步骤。
BEA Tuxedo根据系统的负载指示,自动开启和关闭应用服务,可以均衡所有可用系统的负载,以满足对应用系统的高强度使用需求。借助DDR(数据依赖路由),BEA Tuxedo可按照消息的上下文来选择消息路由。其交易队列功能,可使分布式应用系统以异步“少连接”方式协同工作。BEA Tuxedo LLE安全机制可确保用户数据的保密性,应用/交易管理接口(AT
MI)为50多种硬件平台和操作系统提供了一致的应用编程接口。BEA Tuxedo基于网络的图形界面管理可以简化对电子商务的管理,为建立和部署电子商务应用系统提供了端到端的电子商务交易平台。
东方通科技TongEASY
TongEASY是面向交易处理的中间件。负责正确传递交易,对交易完整性进行管理,调度应用程序的运行,保证整个系统运行的高效性。TongEASY把自己的交易管理功能和数据库的交易管理功能有机的结合在一起,实现对分布式交易的全局管理。
交易管理机制是TongEASY最具有独创性的方面。TongEASY有两种方式管理交易完整性:一种方式是应用程序处理提交/撤销命令,另一种方式是建立在XA协议基础上的。基于XA的交易管理方式又可以细分为标准的XA方式和快速XA两种。
TongEASY在交易管理上的多样性是为了解决中国应用环境的特殊性。国内多数应用是建立在一个速率传输偏低、可靠性差强人意的广域网上。XA方式是建立在两阶段提交协议上的,在一个低速的广域网上使用两阶段提交协议时会带来一些问题,一是握手次数多、数据库加锁时间长,因而效率较低,二是不能很好地解决由于网络故障所造成的交易完整性问题。因此,TongEASY在交易管理方面提供了多种选择,以求得效率、交易完整性、开发工作量等关键指标的上佳表现。
mygod 回复于:2001-12-14 13:56:55
|
不知道各位都用过那些中间件,有什么体会,希望能和各位好好讨论一下! 欢迎跟贴,谢谢!
|
bwd 回复于:2001-12-14 15:19:28
|
tuxedo确实不错,我用它开发网站,使用简单,性能好,就是太贵了,因为没有竞争,bea也很霸道
|
mygod 回复于:2001-12-14 15:38:23
|
据我所知,TUXEDO贵的主要原因之一是成本太高,因为BEA不象IBM大部分的产品是自己开发的,BEA的产品基本上是收购其他小公司的产品然后整合在一起的,所以成本太高,当然性能好也是价格高的原因。
另外,TUXEDO应当是作传统的事物处理系统,一般作网站常用BEA的Weblogic,莫非你们是用jolt连接TUXEDO?要是那样,那一定是个非常大的网站是吗?
|
david 回复于:2001-12-14 15:42:04
|
Hello!There! 你们在开发中间件产品吗?用的什么语言?
|
mygod 回复于:2001-12-14 15:46:26
|
没有,只是使用中间件,大部分的中间件产品应当是用C/C++开发的
|
henry 回复于:2001-12-14 16:12:44
|
请问原文出处何处?谢谢。
|
mygod 回复于:2001-12-14 16:15:42
|
http://webuild.softhouse.com.cn/tech/technic_trend/51.html
|
bwd 回复于:2001-12-14 16:24:24
|
tuxedo是一个独立的产品。能够处理企业应用里的关键业务也是它贵的另外一个原因。 因为贵,在中国tuxedo的用户集中在银行,电信等部门。现在上海电力公司也在使用tuxedo开发管理系统。 Weblogic和java我都不懂,银行用tuxedo而不是weblogic是不是出于性能上的考虑(瞎猜)? 我们使用标准c开发,当然要有pro c协助。 用c++也很好,只是我们这里精通c++的人太少,不敢大面积推开,我只是做了一些尝试。
我对交易中间件的理解: 中间件参与的3-tier应用是相对c/s说的,c/s系统的性能很大成度决定于server的性能。另外扩展性太差。tuxedo的跨平台,分布式事物,负载平衡很好的解决了c/s的不足 ,可以把原始数据放在多个服务器上,如果业务量增加了,可以增加运行tuxedo的机器,而且不花钱(linux), 不过要尽量少用存储过程
|
mygod 回复于:2001-12-14 16:41:36
|
TUXEDO我也用过,应当说TUXEDO和weblogic的定位是不同的,weblogic显然还不能适应象银行的核心业务这样对实时性和效率、稳定性要求非常高的系统,但tuxedo不支持j2ee,所以使用只限于传统领域;
不过,有些大型的系统使用weblogic+jolt+tuxedo的系统结构,核心业务由tuxedo开发,weblogic作为java服务器,通过jolt来调用tuxedo的服务。
确实,用tuxedo作开发是很简单的,不过配置就不是太容易,很多功能我到现在还不知道怎么用,比如:负载平衡。
|
bwd 回复于:2001-12-14 17:07:49
|
现在基于j2ee的中间件产品很火,bea, ibm, sun, oracle这些巨无霸都在及力推销自己的产品,应该说前景很好。东方通开发的历史很长了,产品线也很宽,不知道性能如何,如果真的象宣传的那样,不光可以获得很好的经济利益,在国际软件业也可以为中国争得一席只地。
tuxedo配置确实比较麻烦,各种参数太多,好在他的文档还可以(稍逊M$),用tuxedo开发简单可能也是他的一个卖点,程序员可以专注在数据处理上。 负载平衡应该是tuxedo自动负责,不需要设置吧
|
mygod 回复于:2001-12-14 17:15:29
|
东方通的产品性能自然还无法与bea和IBM等相抗衡,好在她是国内的公司,所以技术支持可能会好一些(这也是她的优势之一),非常希望他们的产品能逐渐赶上甚至超过国外公司,不过需要一定的时间。我也很想使用东方通的产品,毕竟是民族品牌,不过一直没有机会。
tuxedo的文档确实还不错,比IBM强多了,不过还是没有包括一些比较高级的技巧,所以很多问题还是得找BEA技术支持
|
mygod 回复于:2001-12-14 17:19:11
|
负载平衡这个功能一直没用过,不知道是不是自动的,不过至少要将服务复制到多台机器上,才谈得上负载平衡;还有很多功能,象什么连接池之类的都只是听说,却不知道该怎么配置?
|
bwd 回复于:2001-12-14 17:20:58
|
bea的技术支持不敢恭维,技术人员水平菜菜的,可能只顾收支票,忘记给他们培训了
|
mygod 回复于:2001-12-14 17:24:03
|
确实如此,所以还不如自己学呢!
好吧,周末愉快,下周再见!
|
mygod 回复于:2001-12-20 13:17:18
|
欢迎参加讨论!!!
|
zho0798 回复于:2001-12-22 20:55:13
|
建行很多分行用的是TONGEASY。用还是很好用,就是要求长连接,没有参数可以选择,对网络的连接数要求较高。不过他还不是一个很成熟的产品,很多地方需要改进。
|
mygod 回复于:2001-12-24 11:16:11
|
如果有非常多的client,岂不每个都要建一个长连接,那岂不非常占用系统开销?
|
klrs 回复于:2001-12-24 15:40:27
|
tuxedo 挺好的,我挺喜欢。
|
mygod 回复于:2001-12-26 17:07:00
|
klrs你用过MQSeries吗?
|
lonelykiller 回复于:2002-01-04 09:58:58
|
tuxedo应用很广,我这用的就是,它的开发接口有点象C,挺好用的
|
mygod 回复于:2002-01-04 10:33:03
|
tuxedo在后台可以提供c、cobol语言的编程借口,在windows平台上提供.dll的应用开发接口,因此可以支持大多数windows下的开发语言,但tuxedo不支持直接用JAVA语言开发,似乎这点比IBM的CICS逊色一些,CICS已经支持java,而且IBM的这几个产品:websphere、cics、MQ似乎结合的越来越紧密,这种集成性也许是BEA所不具备的,也许这将会使BEA在未来的竞争中处于劣势,尽管BEA的tuxedo、weblogic都要比IBM的cics、websphere要好一些,但是BEA没有能将这些产品很好的集成在一起。
|
9命怪猫 回复于:2002-05-21 15:47:23
|
我也想学学“中间件”可是从哪里入手?(注:本人仅有一些C、C++、VB编程经验)还望各位大侠不吝赐教……感激涕零
|
chguoping 回复于:2002-05-22 14:56:28
|
我们这边原来用的是东方通,现在开始用tuxedo,感觉上tuxedo毕竟做得比较大了,文档方面更全一点,有问题自己可以查。
|
红色精灵 回复于:2002-05-30 14:14:30
|
东方通服务不是很好,俺公司的产品是卖给建行的,建行用的就是东方通, 可是BUG太多,可他们又不管,让俺们公司维护,又不给我们代码,唉。
|
arbol 回复于:2002-09-06 15:00:47
|
我们用过TUXEDO,还用过我们自己公司的通信中间件,也很好用。
但是,现在BEA他们提出了基础件的概念,大家可以想象如果有了基础件,金融基础件,电力基础件。电信基础件等等。。垄断和标准。。。。
大家注意了。
|
chenliyi 回复于:2002-09-09 10:29:23
|
中间件解释的很好
|
beasbeas 回复于:2002-09-09 15:08:38
|
bea技术人员水平如何与支票没有直接联系,二楼的是否真的接触过,在此评论有些欠妥
|
hb7499752002 回复于:2002-09-09 16:21:34
|
能否提供上述软件????????????????????
|
qd007 回复于:2003-02-19 10:15:39
|
嘿,大家好!我们现在在用IBM 的 MQSeries,由于与原来没有接触过,现在又在忙于开发制定方案,又没有比较熟悉的朋友,指点一下。
我现在需要有多台机器向中心发送数据???
在一台机器上建立多个队列管理器和建立一个队列管理器有什么优缺点。
谢谢!!
|
helio 回复于:2003-02-26 15:15:27
|
One of the good Middleware product in oversea, please check
www.heliograph.co.uk
Any questions can email to jacky970@hotmail.com
Thanks
|
wuzy 回复于:2003-03-03 16:55:24
|
偶用的是清华的,
也就那样,
没什么感觉!
|
iamshrek 回复于:2003-03-16 20:20:52
|
初学者关于Tuxedo的问题
看了一点关于tuxedo的配置方面的文章
可我想在windows下用tuxedo它的配置方法和在unix下的配置方法有什么区别
|
iamshrek 回复于:2003-03-16 20:44:42
|
看了一点关于tuxedo的配置方面的文章
可我想在windows下用tuxedo它的配置方法和在unix下的配置方法有什么区别
开发语言应该用什么?能用tc吗?
|
づ★sl战神 回复于:2003-03-21 21:47:30
|
[quote:538b65e197="iamshrek"]看了一点关于tuxedo的配置方面的文章
可我想在windows下用tuxedo它的配置方法和在unix下的配置方法有什么区别
开发语言应该用什么?能用tc吗?[/quote:538b65e197]
我正好不久以前专门研究过这个问题,
关于配置的问题我专门写了篇文章。
跟在下面,
开发语言可以用tc的。
|
iamshrek 回复于:2003-03-24 21:06:48
|
[quote:c32b5ade74]
我正好不久以前专门研究过这个问题,
关于配置的问题我专门写了篇文章。
跟在下面,
[/quote:c32b5ade74]
在哪里啊?
|
づ★sl战神 回复于:2003-03-24 22:06:33
|
[quote:05d64e03ac="iamshrek"]
在哪里啊? [/quote:05d64e03ac]
http://chinaunix.net/forum/viewtopic.php?t=36988
|
dhtxgfnh2003 回复于:2003-04-07 11:08:09
|
大家好:
我看了你们的文章,深不可测,可以可以详细点吗?
|
win_bigboy 回复于:2003-06-23 09:48:52
|
求tuxedo RM 文件配置
环境:
redhat 8.0 +linux 8 + informix 7.3
|
原文转自:http://www.ltesting.net