中间件
——构筑复杂分布式应用的关键技术
中科院软件所 仲萃豪
九十年代初客户机/服务器计算模式开始成为主流技术,将数据统一存储在数据服务器上,而有关的业务逻辑都在客户端实现,即所谓胖终端的解决方案,这种两层结构的模式大大阻碍着系统的发展,单一的服务器结构紧密地依赖供应商;数据存取受到限制;难以扩展到大企业广域网或国际互联网;也难以管理客户端的机群。随着用户业务需求的增长及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的概念和技术更合适一些,建立模型和规范是促进技术发展的核心措施。

消息中间件产品
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安全机制可确保用户数据的保密性,应用/交易管理接口(ATMI)为50多种硬件平台和操作系统提供了一致的应用编程接口。BEA Tuxedo基于网络的图形界面管理可以简化对电子商务的管理,为建立和部署电子商务应用系统提供了端到端的电子商务交易平台。

东方通科技TongEASY

TongEASY是面向交易处理的中间件。负责正确传递交易,对交易完整性进行管理,调度应用程序的运行,保证整个系统运行的高效性。TongEASY把自己的交易管理功能和数据库的交易管理功能有机的结合在一起,实现对分布式交易的全局管理。

交易管理机制是TongEASY最具有独创性的方面。TongEASY有两种方式管理交易完整性:一种方式是应用程序处理提交/撤销命令,另一种方式是建立在XA协议基础上的。基于XA的交易管理方式又可以细分为标准的XA方式和快速XA两种。

TongEASY在交易管理上的多样性是为了解决中国应用环境的特殊性。国内多数应用是建立在一个速率传输偏低、可靠性差强人意的广域网上。XA方式是建立在两阶段提交协议上的,在一个低速的广域网上使用两阶段提交协议时会带来一些问题,一是握手次数多、数据库加锁时间长,因而效率较低,二是不能很好地解决由于网络故障所造成的交易完整性问题。因此,TongEASY在交易管理方面提供了多种选择,以求得效率、交易完整性、开发工作量等关键指标的上佳表现。

仲萃豪:中国科学院软件研究所研究员,博士生导师,研究方向是计算机软件与计算方法,仲老是我国第一代软件专家,曾率先研究软件中各领域课题:编译程序、语言、操作系统、应用软件等。近10年来主要从事应用软件开发及其软件工程研究。曾先后任10多所院校的兼职教授、北京市软件专业顾问、软件工程国家工程师研究中心研究员,并获得国家科技进步二等奖、省部级一等奖等8项。

中间件——构筑复杂分布式应用的关键技术(转)相关推荐

  1. 鸿蒙OS架构及关键技术整理

    鸿蒙OS架构及关键技术整理 一. 鸿蒙OS整体介绍 二. 子系统架构 三. 关键技术 四. 参考资料 一. 鸿蒙OS整体介绍 HarmonyOS简介 原作者:xiangzhihong8 前两天,华为发 ...

  2. 分布式(技术栈、关键技术、PaaS平台、资料推荐、相关论文)

    2019独角兽企业重金招聘Python工程师标准>>> 分布式系统架构的冰与火 首先,我们需要阐述一下为什么需要分布式系统,而不是传统的单体架构.也许这对你来说已经不是什么问题了,但 ...

  3. 基于全生命周期的主数据管理:MDM详解与实战学习03 第三章 主数据管理的关键技术

    第三章 主数据管理的关键技术 3.1 数据标准 3.1.1 数据标准的分类 3.1.2 物资类数据标准 1.国际标准 2.国内标准 3.1.3 产品数据标准 3.1.4 财务数据标准 3.2 信息分类 ...

  4. 大数据参考架构和关键技术

    大数据参考架构 大数据作为一种新兴技术,目前尚未形成完善.达成共识的技术标准体系.本文结合NIST和JTC1/SC32的研究成果,结合我们对大数据的理解和分析,提出了大数据参考架构. 大数据参考架构图 ...

  5. 面向容器技术资源调度关键技术深度对比

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的容器调度技术! 作者:阿里中间件,公众号:云栖社区 本文以资源分配理念:拍卖.预算.抢占出发,引出Borg.Omega.Mesos ...

  6. IMT-2030(6G)推进组发布《6G总体愿景与潜在关键技术》白皮书

    来源:中国信通院CATCT 编辑:蒲蒲 当前,新一轮科技革命和产业变革突飞猛进,随着5G商用的大规模部署,全球业界已开启对下一代移动通信(6G)的探索研究.日前,IMT-2030(6G)推进组(以下简 ...

  7. 虚拟化涉及的关键技术都有哪些,分别实现了什么功能?

    虚拟化涉及的关键技术都有哪些,分别实现了什么功能? 1.资源池自动化管理技术 资源池管理技术主要实现对物理资源.虚拟资源的统一管理,根据用户需求实现虚拟资源(虚拟机.虚拟存储空间等)的自动化生成.分配 ...

  8. 分布式服务下的关键技术(转)

    系统架构演化历程-初始阶段架构 初始阶段的小型系统 应用程序.数据库.文件等所有的资源都在一台服务器上通俗称为LAMP(linux.apache.mysql.php). 特征: 应用程序.数据库.文件 ...

  9. 保证你现在和未来不失业的十种关键技术

    在当今的IT就业市场,有人欢喜有人忧.有人对目前的工作和薪水很满意,有人目前正面临着下岗,或者已经下岗-- 可能你是公司里唯一谙熟某项关键技术的高手,缺了你,公司便玩不转了:也可能你所在的公司对你现有 ...

最新文章

  1. 如何使用华为云的计算资源进行深度学习(ModelArts)
  2. 网络编程1之计算机网络及参考模型、域名、服务器
  3. Java 12 将于3月19日发布,8 个最终 JEP 一览
  4. 云原生人物志 | Pulsar翟佳:社区的信任最重要
  5. c 插件读取有属性的html6,廖雪峰的JS教程6-jQuery
  6. CentOS上安装mysql5.5.23
  7. 18. 四数之和(四指针,快排)
  8. des算法c语言运行成功截图,求助攻:C语言DES算法的实现程序有问题
  9. Calendar导入java,Java程序使用Calendar.add()方法将分钟添加到当前时间
  10. CentOS+nginx+uwsgi+Python 多站点环境搭建
  11. Caddy – 方便够用的 HTTPS server 新手教程
  12. 梅花传播业大展:Focussend将精准营销融入个性化邮件
  13. 计算机与网络教育缺点,互联网安全有什么类型,缺点在何处?
  14. Python还有发展前景吗?现在该怎么去学习?
  15. 计算机组成原理课程设计——简单CISC模型机设计
  16. Ms08067漏洞复现
  17. python租房_【Python】租房经历总结—–我是如何2天找到合适租房的(房东直租)简单粗暴...
  18. word中批量调整图片大小的方法
  19. Excel VBA小程序 -使用VBA实现VLOOKUP函数查询?
  20. 有哪些基于苹果HomeKit的全屋智能家居组合

热门文章

  1. 如何动态改变Table Control的列抬头
  2. Linux学习笔记(二):cd命令的使用
  3. css 商城 两列_css大法之使用伪元素实现超实用的图标库(附源码
  4. java throw throws try-catch-finally异常处理
  5. matlab线性串联校正,基于MATLAB串联超前校正设计.ppt
  6. java getevent_Java ActionEvent.getWhen方法代码示例
  7. 亚信java在线测评题库_校招秋招,网申在线测评如何训练才能通过?
  8. admin后台菜单栏的实现
  9. BZOJ3522[Poi2014]Hotel——树形DP
  10. cocos2d-x JS 重力感应监听事件