MOM( Message Oriented Middleware)指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统 的集成。
简介
MOM通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信 ,并支持多
基于 MOM 的系统
通讯协议、语言、应用程序 、硬件和软件平台。目前流行的MOM中间件产品有IBM的MQSeries 、 BEA的MessageQ等。
消息传递和排队技术有以下三个主要特点: 通讯程序可在不同的时间运行:程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。 对应用程序的结构没有约束:在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。 程序与网络复杂性相隔离: 程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网 络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。
面向消息的中间件使用消息传送提供者来协调消息传送操作。MOM系统的基本元素是客户端、消息和MOM提供者,后者包括API和管理工具 。MOM提供者使用不同的体系结构路由和传送消息:它可以使用集中式消息服务器,也可以将路由和传送功能分布在每个客户端上。某些MOM产品结合了这两个方法。 使用MOM系统,客户端可以进行API调用,以便将消息发送到由提供者管理的目的地。该调用会调用提供者服务以路由和传送消息。在发送消息之后,客户端会继续执行其他工作,并确信在接收方客户端检索该消息之前,提供者一直保留该消息。基于消息的模型 与提供者的协调耦合在一起,使得创建松散耦合的组件系统成为可能。这样的系统可以继续可靠地工作,即使在有个别组件或连接失败时也不会停机。 由消息传送提供者协调客户端 之间的消息传送的另一个优点是:通过添加管理界面,可以监视和调整性能。这样,客户端应用程序便不必关心发送、接收和处理消息之外的任何问题。对于互操作性、可靠性、安全性、可伸缩性和性能之类的问题,应当由管理员 通过编码实现MOM系统来解决。 至此,我们已经介绍了使用面向消息的中间件连接分布式组件的很多优点。下面将介绍其缺点。缺点 之一源自松散耦合本身。在RPC系统中,只有在被调用函数完成任务之后,才能返回调用函数。在异步系统中,调用方客户端会继续为接收方装入工作,直到处理 装入工作所需的资源耗尽且被调用组件发生故障。当然,可以通过监视性能和调整消息流来尽量减少或避免这些情况,但对于RPC系统却不必这样做。有一点很重 要,那就是了解每种系统的优缺点。每种系统所适合执行的任务都不同。有时,您需要结合两种系统才能完全获得所需的行为。
图中显示MOM系统如何使两个基于RPC 的系统进行通信。该图的左侧显示在不同的网络节点上分布客户端、服务器 和 数据存储库组件以提高性能的应用程序。这是一个折扣机票预定系统:最终用户为使用此服务支付一定的费用,使用该服务可以找到特定目的地和时间的最低费用。 数据存储库保存有关注册用户和参与此折扣计划的航空公司的信息。服务器上的逻辑功能根据用户的请求在所参与的航空公司中查询价格、对信息进行排序并向用户 提供三个最低报价。对于每个这样的航空公司,数据存储库都将保存有关可用航班的信息(座位、飞行时间和价格)。服务器组件将更新这些信息以响应最终用户输 入的数据。航空公司的服务器还订阅MOM服务,接收折扣预定系统的信息请求,并返回座位和价格信息。如果用户决定购买PanWorld航空公司的折扣机 票,则该系统的服务器组件将更新数据存储库中的信息,然后为请求者生成机票或者向折扣服务发送一条消息以生成机票。
MOM是中间件通信机制,通过非实时(异步)无连接技术为应用程序提供一种建立通信对话的方法。通信对话可能包括多个在应用程序间往返的消息, 两个人可能以几乎相同的方式交换一系列电子邮件信息。信件使用保存并转发模式发送到队列并为收件人保存起来以便以后查看。例如,用户可能向一个电子商务服 务器发送一个定单请求。请求可能立即被处理或加入队列等候处理。某些请求可能在空闲时处理。
MOM可以与RPC(远程过程调用)进行比较。RPC提供客户机 /服务器 环 境中的应用程序间的面向连接的链接,而MOM通常是无连接。RPC要求应用程序和网络间不可分离。相反,MOM使用存储转发模式。RPC和MOM二者都有 优点,并且用于不同的应用程序要求。当可以接受延迟时,适于使用MOM的队列消息技术。它在RPC难于实现的Web环境下很普遍。
使用面向消息的中间件,应用程序可以在发送消息后继续进行,而不必等候连接和接收方的答复。
应用程序可以在不同的时间运行以进行通信。如果消息经过的系统临时脱机,则在那些系统继续操作时,继续消息传递。此外,区分消息的优先级可以确保较快传送,并且可以保证传送,从而为消息即时到达目的地提供保证。一旦系统收到消息,它将返回发送方请求的确认消息。
·IBM MQSeries IBM平台和操作系统 、 DECVMS、Tandem Guardian与Himalaya, HP UX、SunSolaris、SCO UNIX和Microsoft Windows都支持MQSeries。MQSeries与Lotus Notes建立链接,使得Notes用户可以访问其他系统上的事务和数据。
·JMS (Java 消息服务)J2EE(Java 2企业版)环境包括JMS,它提供点对点和发布预定模式。请参阅“Java ”。
·XML 和SOAP Microsoft.NET平台使用XML 描述应用程序的逻辑和数据,使用SOAP(简单对象访问协议)将其打包,使用HTTP 进 行传送。SOAP定义如何创建HTML标题和XML文件,它们可以调用另一台计算机上的程序,以及以计算机能立即识别的格式和布局将信息传递给它。这类似 于RPC(远程过程调用),但Microsoft将SOAP视为是从作为COM+基础的RPC模型的分离,和向消息传送模型的靠近。请参阅“Microsoft.NET ”。
随着Web的发展,mom日益重要。系统间的直接实时连接并不总是可行。MOM可以提供支持现有应用程序的虚拟连接,或者它可以被视为 构建工作在因特网上的客户机/服务器应用程序的新模型。MOM与其他类型的中间件产品合作,提供动态分布式网络环境。它通过支持应用程序间的协同工作能力 提供比数据访问更多的功能。