中间件介绍

Posted on 2020-08-01 09:50  留不住的时间  阅读(978)  评论(0编辑  收藏  举报

1、什么是中间件?

中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。目前,它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。

为什么要使用中间件?

具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。

2、简介

中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括web服务器、事务监控器消息队列软件 

中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间 

中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信   

近年来,人类生活中越来越多的领域已经变得离不开计算机、网络技术以及通信技术。并且随着计算机技术的快速发展,更多的应用软件被要求在许多不同的网络协议、不同的硬件生产厂商以及不一样的网络平台和环境上运营。这导致了软件开发者需要面临数据离散、操作困难、系统匹配程度低,以及需要开发多种应用程序来达到运营的目的。所以,中间件技术的产生,在极大程度上减轻了开发者的负担,使得网络的运行更有效率。

3、基本功能

中间件是独立的系统级软件,连接操作系统层和应用程序层,将不同操作系统提供应用的接口标准化,协议统一化,屏蔽具体操作的细节,中间件一般提供如下功能:

(1)通信支持

中间件为其所支持的应用软件提供平台化的运行环境,该环境屏蔽底层通信之间的接口差异,实现互操作,

 

中间件

 

 

 

 

所以通信支持是中间件一个最基本的功能。早期应用与分布式的中间件交互主要的通信方式为远程调用和消息两种方式。通信模块中,远程调用通过网络进行通信,通过支持数据的转换和通信服务,从而屏蔽不同的操作系统和网络协议。远程调用是提供给予过程的服务访问,为上层系统只提供非常简单的编程接口或过程调用模型。消息提供异步交互的机制。 

(2)应用支持

中间件的目的就是服务上层应用,提供应用层不同服务之间的互操作机制。它为上层应用开发提供统一的平台和运行环境,并封装不同操作系统提供API接口,向应用提供统一的标准接口,使应用的开发和运行与操作系统无关,实现其独立性。中间件松耦合的结构,标准的封装服务和接口,有效的互操作机制,从而给应用结构化和开发方法提供有力的支持。 

3)公共服务

公共服务是对应用软件中共性功能或约束的提取。将这些共性的功能或者约束分类实现,并支持复用,作为公共服务,提供给应用程序使用。通过提供标准、统一的公共服务,可减少上层应用的开发工作量,缩短应用的开发时间,并有助于提供应用软件的质量。  

4、发展历程

(1)中间件早期发展

由于中间件需要屏蔽分布环境中异构的OS和网络协议,它必须能够提供分布式环境下的通信服务.将这种通信服务称为平台.IBMCICS(CertifiedInternal Control Specialist)是最早具有中间件技术思想和功能的软件,但由于CICS不是分布式环境的产物,人们一般把1984年AT&T贝尔实验室开发完成的Tuxedo作为第一个严格意义上的中间件产品:在很长一段时期里Tuxedo只是实验室产品,被NoveIl收购后开展的商业推广并不成功,直到1995年被BEA公司收购才逐渐成熟起来,BEA公司也因此成为一个真正的中间件厂商。同一时期,IBM的中间件MQSeries及其他许多中间件产品也逐渐发展并成熟起来。

(2)中间件发展阶段

中间件技术的发展,经历了面向过程的分布计算技术、面向对象的分布计算技术、面向Agent的分布计算技术3个阶段二相应地,中间件产品也分为远程过程调用中间件( Remote Procedure Call,RPC)、面向消息的中间件(Mes-sage Oriented Middleware,MOM)和对象请求代理中间件3类,其中面向消息的中间件技术最为成熟。

5、分类

1)事务式中间件

事务式中间件又称事务处理管理程序,是当前用的最广泛的中间件之一,其主要功能是提供联机事务处理所需要的通信、并发访问控制、事务控制、资源管理、安全管理、负载平衡、故障恢复和其他必要的服务。事务式中间件支持大量客户进程的并发访问,具有极强的扩展性。由于事务式中间件具有可靠性高、极强的扩展性等特点,主要应用于电信、金融、飞机订票系统、证券等拥有大量客户的领域。

2)过程式中间件

过程式中间件又称远程过程调用中间件。过程中间件一般从逻辑上分为两部分:客户和服务器。客户和服务器是一个逻辑概念,既可以运行在同一计算机上,也可以运行在不同的计算机上,甚至客户和服务器底层的操作系统也可以不同。客户机和服务器之间的通信可以使用同步通信,也可以采用线程式异步调用。所以过程式中间件有较好的异构支持能力,简单易用,但由于客户和服务器之间采用访问连接,所以在易剪裁性和容错方面有一定的局限性。 

3)面向消息的中间件

面向消息的中间件,简称为消息中间件,是一类以消息为载体进行通信的中间件,利用高效可靠的消息机制来实现不同应用间大量的数据交换。按其通信模型的不同,消息中间件的通信模型有两类:消息队列和消息传递。通过这两种消息模型,不同应用之间的通信和网络的复杂性脱离,摆脱对不同通信协议的依赖,可以在复杂的网络环境中高可靠、高效率的实现安全的异步通信。消息中间件的非直接连接,支持多种通信规程,达到多个系统之间的数据的共享和同步。面向消息中间件是一类常用的中间件。

4)面向对象中间件

面向对象中间件又称分布对象中间件,是分布式计算技术和面向对象技术发展的结合,简称对象中间件。分布对象模型是面向对象模型在分布异构环境下的自然拓广。面向对象中间件给应用层提供过重不同形式的通信服务,通过这些服务,上层应用对事务处理、分布式数据访问,对象管理等处理更简单易行。OMG组织是分布对象技术标准化方面的国际组织,它制定出了CORBA等标准。 

5)Web应用服务器

Web应用服务器是Web服务器和应用服务器相结合的产物。应用服务器中间件可以说是软件的基础设施,利用构件化技术将应用软件整合到一个确定的协同工作环境中,并提供多种通信机制,事务处理能力,及应用的开发管理功能。由于直接支持三层或多层应用系统的开发,应用服务器受到了广大用户的欢迎,是目前中间件市场上竞争的热点,J2EE架构是目前应用服务器方面的主流标准。  

6)其他

新的应用需求、新的技术创新、新的应用领域促成了新的中间件产品的出现。如,ASAAC在研究标准航空电子体系结构时提出的通用系统管理GSM,属于典型的嵌入式航电系统的中间件,互联网云技术的发展云计算中间件、物流网的中间件等随着应用市场的需求应运而生。

6、基本特点

优势:

1、满足大量应用的需要 ; 

2、运行于多种硬件OS平台 ;

3、支持分布式计算,提供跨网络、硬件OS平台的透明性的应用或服务的交互功能 ;

4、支持标准的协议 ; 

5、支持标准的接口。  

局限:

中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制;并提供相应的平台以满足不同

中间件

 

 

 

领域的需要。因此,中间件为应用程序提供了一个相对稳定的高层应用环境。然而,中间件服务也并非“万能药”。中间件所应遵循的一些原则离实际还有很大距离。多数流行的中间件服务使用专有的API和专有的协议,使得应用建立于单一厂家的产品,来自不同厂家的实现很难互操作。有些中间件服务只提供一些平台的实现,从而限制了应用在异构系统之间的移植。应用开发者在这些中间件服务之上建立自己的应用还要承担相当大的风险,随着技术的发展他们往往还需重写他们的系统。尽管中间件服务提高了分布计算的抽象化程度,但应用开发者还需面临许多艰难的设计选择,例如,开发者还需决定分布应用在client方和server方的功能分配。通常将表示服务放在client以方便使用显示设备,将数据服务放在server以靠近数据库,但也并非总是如此,何况其它应用功能如何分配也是不容易确定的。

应用:

1、中间件与电子商务的整合。

Intemet是电子商务发展的基础,让商户可以通过它,把商业扩展到能到达的任意地点。这其中离不开大量的信息传输,而电子商务则使用了浏览器/服务器B/S(BrowserJServer)的技术来达到大量数据处理的目的。

2、中间件在B/S模式中的架构。

中间件在B/S模式下起到了功能层的作用。当用户从WEB界面向服务器提交了数据请求或者应用请求时,功能层负责将这些请求分类为数据或应用请求,再向数据库发出数据交换申请。数据库对请求进行筛选处理之后,再将所需的数据通过功能层传递回到用户端。通过如此处理,单一用户可以进行点对面的操作,无需通过其他软件进行数据转换。

趋势展望:

中间件技术的发展方向,将聚焦于消除信息孤岛,推动无边界信息流,支撑开放、动态、多变的互联网环境中的复杂应用系统,实现对分布于互联网之上的各种自治信息资源(计算资源、数据资源、服务资源、软件资源)的简单、标准、快速、灵活、可信、高效能及低成本的集成、协同和综合利用,提高组织的IT基础设施的业务敏捷性,降低总体运维成本,促进IT与业务之间的匹配。中间件技术正在呈现出业务化、服务化、一体化、虚拟化等诸多新的重要发展趋势。  

近年来,中间件技术取得了很大的成功,成为研究热点之一。随着应用的普及和研究的深入,以及互联网的发展,目前的中间件技术主要呈现出三方面的趋势:首先,中间件越来越多地向传统操作系统层渗透,向平台化发展;其次,随着网络化的发展趋势,应用软件需要的支持机制越来越多,中间件会变广变厚;其三,中间件也向构件化发展,为上层应用的结构设计和部署提供有效的支持,并为解决软件复用问题提供支持。随着我国信息化建设的推进,中间件市场越来越受到重视。中间件软件市场对我们来说,既是挑战也是机遇。目前国内一批中间件企业迅速崛起,2004年国内13家软件企业成立中国首个中间件产业联盟,在我国中间件技术将会长远规模化发展,为跨平台的应用开发、异构网络环境的应用,软件复用等提供了有效的解决之道。

相关产品举例:

Apusic MQ

该产品是国产中间件厂商金蝶的旗舰产品之一,金蝶中间件目前拥有 Apusic J2EE应用服务器、 Apusic MQ消息中间件和 Apusic Studio开发平台,组成了轻量级风格的企业基础架构软件平台金蝶 Apuisc Platform,其具备技术模型简单化、开发过程一体化、业务组件实用化的显著特性,产品间无缝集成。 BEA Weblogic

Weblogic系列的最大特点是平台开放。 Weblogic和其他第三方开发工具的结合也非常好,常见的组合就是 Jbuilder+ Weblogic的开发环境。

BEA Weblogic integration是 BEA Weblogic Enterprise Platform的一个组件,它提供了企业应用集成所需的各种功能,可用开发新应用,将新应用与现有系统集成,简化业务流程以及通过门户网关扩展业务基础结构。 BEA Weblogic Integration为快速交付业务集成、简化生产管理提供了通用的开发环境,整合了业务集成领域各种不同的部件,其中包括ERP、CRM遗留应用、业务用户、供应链和业务伙伴。

oracle fusion

甲骨文公司的 Oracle融合中间件 Oracle fusion middleware是一个全面的中间件产品系列,由甲骨文公司的SOA和中间件产品组成,其中包括: Oracle应用服务器10g、 Oracle应用服务器产品和可选配件、 Oracle数据平台、 Oracle内容服务10g、 Oracle实时协作10g和 Oracle统一传信。这一经过验证的中间件产品系列可帮助各企业提高公共运作的效率及敏捷性, Oracle fusion middleware还为客户的面向服务应用提供贯穿整个生命周期的全面支持,由于其独特的插作式架构,这个系列产品具有与企业现有T基础设施的互操作性。 

SA PXI

SA PXI应用集成套件作为 SA NEtweaver中间件产品的一部分,目的是为non-SAP系统提供一个其他管理信息系统与SAP系统进行数据和流程交互的平台,因为SAP定位于ERP系统,关注点在企业的人、财、物,但对于企业其他的专业系统,SAP的功能无法覆盖和取代,因此,必须有这样的“接口”来实现相互之间的数据和业务交换。 

 

常见的中间件程序:

 

 

 

Cobar:

阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。 在阿里经受住了考验,后面由于作者的走开的原因cobar没有人维护 了,阿里也开发了tddl替代cobar。

MyCAT:

社区爱好者在阿里cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中。目前MyCAT社区活 跃度很高,目前已经有一些公司在使用MyCAT。总体来说支持度比 较高,也会一直维护下去,

OneProxy:

数据库界大牛,前支付宝数据库团队领导楼总开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件, 楼总舍去了一些功能点,专注在性能和稳定性上。有朋友测试过说在 高并发下很稳定。

Vitess:

这个中间件是Youtube生产在使用的,但是架构很复杂。 与以往中间件不同,使用Vitess应用改动比较大要 使用他提供语言的API接口,我们可以借鉴他其中的一些设计思想。

Kingshard:

Kingshard是前360Atlas中间件开发团队的陈菲利用业务时间 用go语言开发的,目前参与开发的人员有3个左右, 目前来看还不是成熟可以使用的产品,需要在不断完善。

Atlas:

360团队基于mysql proxy 把lua用C改写。原有版本是支持分表, 目前已经放出了分库分表版本。在网上看到一些朋友经常说在高并 发下会经常挂掉,如果大家要使用需要提前做好测试。

MaxScale与MySQL Route:

这两个中间件都算是官方的吧,MaxScale是mariadb (MySQL原作者维护的一个版本)研发的,目前版本不支持分库分表。MySQL Route是现在MySQL官方Oracle公司发布出来的一个中间件。

优点:

A:架构设计更灵活

B:可以在程序上实现一些高级控制,如:透明化水平拆分,failover,监控

C:可以依靠些技术手段提高mysql性能,

D:对业务代码的影响小,同时也安全

缺点:

需要一定的开发运维团队的支持