关闭

2010年度ESB产品盘点:商业MQ产品之WebSphere MQ

743人阅读 评论(0) 收藏 举报

     作者:honnom@163.com
     时间:2011-01-11
     首发:http://blog.csdn.net/honnom


     2010 年 WMB 和 WMQ 并没有发布最新的版本。如果您使用的是最新版本,可以略过这篇文章。

     虽然最新的版本在几年前就已经发布了,直到 2010 年我才接触最新版本,而之前一直使用的是6.0

版本,所以权当作是我在 2010 的新发现吧。另外,如果大家想使用最新版本,只好想其他办法解决了,

因为最新版本 IBM 官方网站上暂时无法下载,不知何故。


     这篇文章只涉及到WMQ,关于WMB的内容会在另外一篇文章中涉及。

概述

      WMQ V7.0 给人带来了一些惊喜,本文仅从功能性增强、易用性和性能优化三个方面谈谈我对它的体会。

一、功能性增强

      WMQ V7.0 在功能上添加了一些新功能,最给力的两个新功能:Publish/Subscribe 完全整合到

Queue Manager 中和对 Web2.0 的支持。


1、Publish/Subscribe 完全整合到 Queue Manager

     在 V6.0 版本中,如果想使用 Publish/Subscribe 功能,必须安装一个 Publish/Subscribe

SupportPac, 必须通过该组件和 WMQ V6 交互,才能实现发布 / 订阅的功能。



     而在 V7.0 版本中,直接将 Publish/Subscribe 组件整合进来,作为 Queue Manager 的一个新

Publish/Subscribe 引擎,应此无需添加额外的组件。

2、支持 Web2.0

      WMQ V7 开始支持 Web2.0 , HTTP 应用可以直接通过 AJAX 技术和 RESTful API 访WMQ,

而不需要在 HTTP 应用中引入任何与 MQ 相关的资源,二者之间是松耦合。     

      实现原理: HTTP 应用和 J2EE 应用服务器中的 HTTP Bridge 交互, HTTP Bridge 包含一个

servlet ,该 servlet 通过 JCA 资源适配器和 WMQ 通信。


     GET 、 POST 和 DELETE 操作分别对应于 WMQ 中的 Browse 、 Put 和 Delete 操作。

二、易用性

     WMQ V7.0 版本在易用性上有了不少的提高,比如在 WebSphere MQ Explorer 中增加了对Topic

的管理。WebSphere MQ Explorer 是基于 eclipse 的工具,早在 V6.0 版本中就已经发布,但不提供

对 Topic 的管理。由于 Publish/Subscribe 已经完整集成到 Queue Manager 中,因此 V7.0版本中

提供了相关功能,比如管理 Topic 和 Subscriptions 。

 

 

     此外还提供了管理 Queue Manager Set( 队列管理器集 ) 的功能,从 eclipse 的视图角度来看,

它类似于 eclipse 对 working sets 的管理,该功能可以对多个 Queue   Manager 进行批量管理。

三、性能优化

     WMQ V7.0 在性能方面的优化,无疑是最大的亮点。下面从 WMQ Client 和 WMQ Server 两个方

面谈谈它在性能方面做了哪些优化。

1.WMQ Client 优化

( 1 ) Read ahead (预读)机制可将吞吐量提升 300%

      通过这种机制 Client 可以将大量的非持久化的消息读到 Client 的内存中, 从而避免每次取一条消

息都要和 Queue Manager 交互的额外开销。


      注意:由于会将大量的消息存放在内存中,并且已经从 Queue Manager 中删除,因此当 Client

出现宕机时,消息会丢失,所以对非持久化消息而言有好处。如果读取的消息中包含持久化消息, Client

会自动处理,消费该消息后会给 Queue Manager 发一个确认消息,表示该消息被消费掉,此时 Queue

Manager 才会删除该消息,所以对于持久化消息而言,可靠性仍然可以得到保证。

      未采用 read ahead 机制时,接收消息的机制:


      采用 read ahead 机制时,接收消息的机制:


(2) 异步发送和接收

      异步发送

      WMQ V6.0 只支持同步发送,也就意味着客户端 PUT 一条消息后,客户端必须同步阻塞等待,止

到 Queue Manager 返回 Completion Code 和 Reason Code 表示该消息发送成功,如下图:


     同步发送严重影响 WMQ 的吞吐量,为了解决这个问题, V7.0 中提供了异步发送,客户端 PUT 一

条消息后,并非同步阻塞,而是可以继续做其他的事情,如下图:


     异步接收
    
WMQ V6.0 中客户端通过触发器或者轮询的方式接收消息,这种方式其实是一种同步的方式,并不

支持异步的方式接收消息; V7.0 采用 MessageListener 回调的形式支持异步接收消息,提高了 45%

的吞吐量。

2.WMQ Server 优化

(1) JMS selector 在 Server 端做消息匹配,吞吐量提升了 250% 。

     WMQ V6.0 中 JMS selector 的实现机制是客户端逐条地从 Queue Manager 中 browse 队列中

的消息,先在客户端逐条查看消息,然后再通过 selector 的条件进行匹配,因此客户端和 Queue

Manger 间出现大量的网络通信,简而言之就是客户端必须先将队列中的所有消息逐条取出来,如果匹配

成功就消费,否则不做处理。 V7.0 将消息的匹配工作放在 server 端进行,只将匹配成功后的消息发送

给客户端,客户端并不需查看所有消息,因此减少了网络通信,降低网络开销。

(2) publish / subscribe 整合到 queue manager

     在WMQ V7.0中再不需要额外的发布订阅组件和 broker 交互,从而不需要将消息持久化两次。

 

四、总结

     IBM对WMQ的投入超过2500人月,该产品自发布起已有15年的历史,是MOM产品中最为优秀的产

品。但在功能上仍然有一些不足之处:

(1)不支持如同ActiveMQ的组合队列,也就是不能同时将一条消息通过一个发送操作发送到多个queue

以及topic上。

(2)不支持简单的路由功能,如果想使用路由功能,就必须使用IBM的ESB产品。

 

 

0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17434次
    • 积分:267
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条