消息中间件原理与实现16页

上传人:文库****9 文档编号:174338018 上传时间:2021-03-16 格式:DOC 页数:15 大小:95.50KB
返回 下载 相关 举报
消息中间件原理与实现16页_第1页
第1页 / 共15页
消息中间件原理与实现16页_第2页
第2页 / 共15页
消息中间件原理与实现16页_第3页
第3页 / 共15页
消息中间件原理与实现16页_第4页
第4页 / 共15页
消息中间件原理与实现16页_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《消息中间件原理与实现16页》由会员分享,可在线阅读,更多相关《消息中间件原理与实现16页(15页珍藏版)》请在金锄头文库上搜索。

1、消息中间件原理与实现10748206桂勇哲10748210 胡栋梁10712059 穆斌摘要: 现今,越来越多的企业面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,但由于采用RPC同 步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待,二者的生命周期也可以不必相同,而且发送者可以将消息间接传给多个接收者,大大提 高了程序的性能、可扩展性及健壮性,这使得异步处理模型在分布式应用上比起同步处理模

2、型更具有吸引力。 本文首先介绍了消息中间件的原理,然后实现消息中间件的一些最重要的功能, 并说明了实现方法,以及相应功能的应用,最后介绍消息中间件还可以添加哪些重要性质,以更好的进行消息服务,保证消息的一致异步有效的技术。关键字:消息中间件,实现,点对点,发布/订阅,持久消息一、中间件简介1.1 中间件的定义中间件(middleware)是基础软件的一大类,属于可复用的软件范畴。中间件在操作系统软件,网络和数据库之上,应用软件之下,总的作用是为处于自己上层的应用软件提供运行于开发的环境,帮助用户灵活、高效的开发和集成复杂的应用软件。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,这些服

3、务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。 也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点: 满足大量应用的需要 运行于多种硬件和OS平台 支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互 支持标准的协议 支持标准的接口 IDC对中间件的定义为:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件定位于客户机服务器的操作系统之上,管理计算机资源和网络通信。因而中间件是指一类软件,是基于分布式处理的软件,最突出的特点是其网络通信功能。也可认为中间件是位于平台和应用之

4、间的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,可以有符合接口和协议的多种实现。1.2 中间件的分类按照IDC的分类方法,中间件可分为六类:1) 终端仿真/屏幕转换2) 数据访问中间件(UDA)3) 远程过程调用中间件(RPC)4) 消息中间件(MOM)5) 交易中间件(TPM)6) 对象中间件在实际应用中,一般将中间件分为两大类:一类是底层 中间件,用于支撑单个应用系统或解决一类问题,包括交易中间件、应用服务器、消息中间件、数据访问中间件等;另一类是高层中间件,更多的用于系统整合,包 括企业应用集成中间件、工作流中间件、门户中间件等,他们通常会与多个应用系统打交

5、道,在系统中层次较高,并大多基于前一类的底层中间件运行。二、面向消息的中间件2.1 消息中间件的功能 面向消息的中间件:MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交 流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬 件和软件平台。目前流行的MOM中间件产品有IBM的MQSeries、BEA的MessageQ等。主要特点: 通讯程序可在不同的时间运行 程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚

6、至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。 对应用程序的结构没有约束 在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。 程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性2.3 消息中间件的传递模型消息中间件一般有两种传递模型:点对点模型(PTP)和发布-订阅模型(Pub/Sub)

7、。1. 点对点模型(PTP)点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发动到由某个名字标识的特定消费者。这个名字实际上对应于消息服务中的一个队列(Queue),在消息传动给消费者之前它被存储在这个队列中。队列可以是持久的,以保证在消息服务出现故障时仍然能够传递消息。2发布-订阅模型(Pub/Sub)发布-订阅模型用称为主题(topic)的内容分层结构代替了PTP模型中的惟一目的地,发送应用程序发布自己的消息,指出消息描述的是有关分层结构中的一个主题的信息。希望接收这些消息的应用程序订阅了这个主题。订阅包含子主题的分层结构中的主题的订阅者可以接收该主题和其子主题发表的

8、所有消息。 下图展示了发布和订阅模型:多个应用程序可以就一个主题发布和订阅消息,而应用程序对其他人仍然是匿名的。MOM 起着代理(broker)的作用,将一个主题已发表的消息路由给该主题的所有订阅者。2.3 消息中间件产品从上个世纪90年代初,随着不同厂商消息中间件大量上市,消息中间件技术得到了长足的发展。目前,IBM和BEA的中间件产品在银行、证券、电信等高端行业,以及IT等行业中得到广泛应用。IBM凭借其在1999年推出的应用服务器WebSphere,扎根金融、证券等行业,在超大型以及系统整合型应用方面优势突出;BEA则是专门从事中间件开发的公司,它的应用服务器WebLogic在美国市场占

9、有率超过60,在国内电信及证券行业占据主要地位;Sun、Oracle、Sybase和Borland等厂商也都有自己的应用服务器;近年来,以金蝶、东方通等公司为代表的国产中间件产品也发展迅速。由于没有统一的规范和标准,基于消息中间件的应用不可移植,不同的消息中间件也不能互操作,这大大阻碍了消息中间件的发展。Java Message Service(JMS, Java消息服务)是SUN及其伙伴公司提出的旨在统一各种消息中间件系统接口的规范。它定义了一套通用的接口和相关语义,提供了诸如持久、验证和事务的消息服务,它最主要的目的是允许Java应用程序访问现有的消息中间件。JMS规范没有指定在消息节点间

10、所使用的通讯底层协议,来保证应用开发人员不用与其细节打交道,一个特定的JMS实现可能提供基于TCP/IP、HTTP、UDP或者其它的协议。目前许多厂商采用并实现了JMS API,现在,JMS产品能够为企业提供一套完整的消息传递功能,下面是一些比较流行的JMS商业软件和开源产品。1IBM MQSeriesIBM MQ系列产品提供的服务使得应用程序可以使用消息队列进行相互交流,通过一系列基于Java的API,提供了MQSeries在Java中应用开发的方法。它支持点到点和发布/订阅两种消息模式,在基本消息服务的基础上增加了结构化消息类,通过工作单元提供数据整合等内容。2WebLogicWebLog

11、ic是BEA公司实现的基于工业标准的J2EE应用服务器,支持大多数企业级JavaAPI,它完全兼容JMS规范,支持点到点和发布/订阅消息模式,它具有以下一些特点:1) 通过使用管理控制台设置JMS配置信息;2) 支持消息的多点广播;3) 支持持久消息存储的文件和数据库;4) 支持XML消息,动态创建持久队列和主题。3SonicMQSonicMQ是Progress公司实现的JMS产品。除了提供基本的消息驱动服务之外,SonicMQ也提供了很多额外的企业级应用开发工具包,它具有以下一些基本特征:1) 提供JMS规范的完全实现,支持点到点消息模式和发布/订阅消息模式;2) 支持层次安全管理;3) 确

12、保消息在Internet上的持久发送;4) 动态路由构架(DRA)使企业能够通过单个消息服务器动态的交换消息;5) 支持消息服务器的集群。4Active MQActive MQ是一个基于Apcache 2.0 licenced发布,开放源码的JMS产品。其特点为:1) 提供点到点消息模式和发布/订阅消息模式;2) 支持JBoss、Geronimo等开源应用服务器,支持Spring框架的消息驱动;3) 新增了一个P2P传输层,可以用于创建可靠的P2P JMS网络连接;4) 拥有消息持久化、事务、集群支持等JMS基础设施服务。5OpenJMSOpenJMS是一个开源的JMS规范的实现,它包含以下几

13、个特征:1) 它支持点到点模型和发布/订阅模型;2) 支持同步与异步消息发送;3) 可视化管理界面,支持Applet;4) 能够与Jakarta Tomcat这样的Servlet容器结合;5) 支持RMI、TCP、HTTP与SSL协议。三、面向消息的中间件的实现3.1基本体系结构主要组件有: MS servers(用于消息通信),客户端(用于发送消息和接收消息), 后备存储(用于持久消息存储,基于文件或者数据库).3.2MYMQ特性1. 消息通信模型MYMQ 支持两种消息通信模型:点到点(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型。除了下列不同之外,这两种消

14、息通信模型非常地相似:PTP 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。2. 消息组成消息传递系统的中心就是消息。一条 Message 分为三个组成部分: 消息头(header):消息头包含了许多字段,为消息确定路由。属性(property):由消息发送者产生,用来添加删除消息头以外的附加信息。消息的主体(body)包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。 3. 消息确认模式采取自动确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收。4. 消息的一次性传送3.3MYMQ的类3.3.1MYM

15、Q的message bool _isPersistent; bool _toDelete; bool _isMessage; int _id; std:string _fromName; Destination _dest; std:string _content; 在mymq中,发送的每个消息均为message类型,对于不同目的发送的message消息,需要指定该消息的目的地,以及相关属性。事实上,我们有一个类, Destination 用来表示消息的目的地,实际上,它指向了在server上的一个队列,或者一个主题。表明了该消息将被发送到那个队列中。isPersistent用来说明,该消息需要持久保存。即当服务器意外出错时候,消息仍然能够得到恢复,需要时刻保持该消息保存在了persistent message storage当中。message中的isCommand用来说明,这个消息是一个信息,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号