基于面向消息中间件的SOA系统集成技术探索

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MOM-面向消息中间件的SOA系统集成技术探索

一、什么是MOM?

MOM是Message-Oriented Middleware(面向消息的中间件)的缩写,MOM 的作用就是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。目前流行的MOM产品有IBM的WebSphere MQ和基于JMS标准的系列中间件等。

二、MOM特点

MOM是一个基础架构,在基于MOM的通信环境中,通常是异步地发送和接受消息,它将应用抽象地划分为发送者和接收者,它们之间无需彼此了解,MOM最重要的作用就是将消息转发到它们的目的地。下图就是MOM的简单模型图:

从上图可以看出,为了支持消息传递的异步模型,MOM位于客户端和服务器之间,使用消息队列临时存储调用,并允许客户端和服务器分别在不同的时候运行,消息的目标端也不需要立即处理消息,并且客户端和服务器的程序之间不需要彼此知道对方的存在,它们之间不需要考虑它们之间的网络通讯复杂性。

MOM不同于普通的通讯系统的地方在于,通讯的接收和发送两端必须同时运行,并且消息必须即时处理。

三、MOM原理

MOM要实现高效可靠的消息传递机制,必须实现以下三大功能:

●实现消息的异步发送和接收,实现发布/订阅模式

●实现消息的持久化,保证消息可靠性传输

●优化网络传输,支持断点续传

要实现以上三大功能,需要实现消息队列,消息队列为构造以同步或异步方式实现的分布式应用提供了松耦合的方式,队列是消息的安全存放的位置,队列存储消息直到它被应用程序处理,这样的工作机制,能够保证在各种网络环境下能够可靠的传递。

在消息队列的应用上,各个不同的MOM产品应用上有所不同,例如,JMS 标准的MOM和IBM Websphere MQ实现上就有所区别。

从上图,可以看出IBM WebSphere MQ的结构和JMS结构在队列的应用上略有不同,IBM WebSphere MQ在客户机上存在有传输队列,而JMS在客户机方面不存在任何队列,所以说JMS相对于MQ而言,只是规范了消息的存取,而没有规范消息数据的传输,因为JMS客户机并不拥有存放数据的队列,所以所有发送的操作都要由应用程序来控制,JMS服务器本身不代理传输,也不保证数据在远程队列间的传输可靠性。IBM MQ通过通道与传输队列和远程队列来保证队列间的传输可靠性,IBM MQ支持客户端的断网续传,而客户端的应用程序不用做任何工作,但是,这种方式需要客户端本地安装MQ的客户端。

四、MOM通讯模式

MOM主要存在3工作模式:点对点模式、发布/订阅模式以及消息队列模式,其中,点对点模式和发布/订阅模式统称为消息传递模式。

点对点模式(Point-to-Point)

点对点模式用于消息生产者和消息消费者之间点到点的通信,是一种程序到程序的直接通信模式。消息生产者将消息发送到由某个名字标识的特定消费者,点对点消息允许客户端通过队列这个虚拟通道来同步和异步发送、接收消息,传

统上,点对点模型是一个基于拉取(Pull)或基于轮询(Polling)的消息传递模式,这种模型从队列中请求消息,而不是自动地将消息推送到客户端。点对点消息传送模型的一个突出特点就是:发送到队列的消息被一个而且仅仅一个接收者所接收,即使可能有多个接收者在一个队列中侦听同一消息时,也是如此。

●发布订阅模式(Publish-and-Subscribe)

在发布/订阅模型中,消息会被发布到一个名为主题(topic)的虚拟通道中。消息生产者称为发布者(publisher),而消息消费者则称为订阅者(subscriber)。与点对点模型不同,使用发布/订阅模型发布到一个主题的消息,能够由多个订阅者所接收。有时候,也称这项技术为广播(broadcasting)消息。每个订阅者都会接收到每条消息的一个副本。总地来说,发布/订阅消息传送模型基本上是一个基于推送(push)的模型,其中消息自动地向消费者广播,它们无须请求或轮询主题来获得新消息。

如上图所示,在发布/订阅模式下,没有传统意义上的客户端和服务器,而是在网络中进行消息发布的应用程序和接收某个特定主题消息的应用程序,发布消息的客户端将消息传递给消息代理,有消息代理负责路由消息给相应的订阅消息的客户端,由消息代理实现消息的动态路由,发布者和订阅者在空间上是松耦合的,客户端和服务器不需要知道对方的地址和具体的数量,简化了配置,更容易重用。这种模式也是目前应用最广泛的模式。

●消息队列模式

消息队列模式是一种程序之间的无连接的通信模式,它允许程序通过消息队列进行通信,它将消息放入队列(通常基于内存和硬盘)直接或者按顺序传送,这种方式允许程序按照不同的速度独立运行,而不需要双方之间建立一条逻辑连接。

这种模式需要系统中包含有队列管理器,用于处理本地队列,保证消息传送到存在于本机或者网络中某个位置的目的地。队列管理器与其他节点上的队列器

合作控制网络路由机制。支持不同Qos(服务质量),包括:

●Qos 0至多一次

消息会丢失或重复,但是只发送一次

●Qos 1 至少一次

确保消息到达,但消息重复可能会发生。

●Qos 2 只有一次

确保消息到达一次

消息队列可以是永久性或者非永久性的,永久性的消息存放在硬盘上,非永久性的消息存放在内存中,当队列管理器出现故障时,非永久性队列的消息会全部丢失,而永久性的消息会自动恢复。

消息队列支持触发,当请求消息和应答消息到达本地队列,但是应用程序未处于活动状态时,自动启动这个应用程序。这种方式只有在工作需要完成时,处于活动状态,从而避免不必要的资源浪费。

目前,IBM MQ主要采用就是这种消息队列模式。

五、MOM消息传递模式比较

●点对点模型

在点对点模式下,每个消息都被发送到特定的队列,接收者从队列中获取消息,队列保留着消息,直到它们被消费或者超时。

每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)

发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。

接收者在成功接收消息之后需向队列应答成功

这种模式保证发送的每条消息都被消费者成功接收。

相关文档
最新文档