您的位置:首页 > 其它

TIBCO RV, IBM MQ和JMS消息中间件的对比分析

2010-05-02 16:40 204 查看
对于消息中间件,绝大多数熟悉的是
IBM MQ,
这是目前使用最广泛的中间件产品。国内还有一款中间件
TongLinkQ,
结构和
MQ
相似。其实在国外还有一款叫
Rendzvous
的消息中间件应用也非常广泛,只是在国内应用不多,所以在国内并没有
MQ
那么大的名气。这款消息中间件的设计和
MQ
是完全不同的,有很多不同的特性特点,使得它在某些应用场景具备更多的优势。
总结一下
Rendzvous
的架构特点,和
MQ
的架构以及
JMS
消息中间件的架构做比较。深入了解和比较这些中间件产品,才能用的准用的好它们。

先总结一下消息中间件的功能,以上的三类中间件都实现了这些功能。

Ø

实现消息的异步发送接收,发布订阅,使得两端的应用解耦。

Ø

实现消息持久化机制,保证消息可靠性传输。

Ø

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

1.

分布式结构
VS

星型结构

,推送
VS

接收,

服务端缓存
VS

客户端缓存



RV

MQ
都是分布式结构的,

JMS
消息中间件的星型结构不同。分布式消息中间件的
Server
在应用环境里都会部署多个,彼此互联,没有主备之分。
JMS
消息中间件的应用部署一般都是主备两个
Server
,消息的发送和接收应用平时和主
Server
相连,有问题时切换到备
Server
,主备
Server
共用公共的存储设备来保存消息。

MQ

JMS
消息中间件都采用消息接收端主动接收消息的方式。消息从发送端发出后,首先会缓存到
Server
上,
接收端应用发起一个接收消息的请求,
Server
把消息作为应答返回给接收端。接收端不执行接收动作,消息就会一直在
Server
上保存。

RV
和这两种消息中间件都不同,使用的是消息推送的模式。消息从发送端发出后,并不在
Server
上缓存,
Server
只做路由把消息推送给消息接收端。消息接收端只要连接上
Server
,订阅要接收的消息,这些消息就会源源不断地从
Server
那里推送过来,消息先缓存到接收客户端的队列里,接收端应用再从队列里取消息。

总之
RV
是一个分布式结构,推送消息模式,客户端缓存的消息中间件。分布式结构适用于分布是应用系统,方便做扩展,推送加客户端缓存适用于高实时性消息的处理,消息需要在第一时间到达目的地,过时的消息的没有必要保存下来的,消息接收端应用需要做的事情就是不断地处理已经推送到的消息。

2.

使用广播和组播来实现一对多的发布订阅



MQ

JMS
消息中间件在
IP
层都使用点对点的传输方式,而
RV

IP
层使用的是广播或者组播的方式。
使用广播或者组播可以直接实现一对多的发布订阅形式,发布应用发布消息到
RV
网络上,这些消息会广播到网络的每一个节点上,每一个订阅应用都会收到这些消息。而
MQ

JMS
实现发布订阅就要麻烦的多了,
都是在
Server
按消息的
Topic
来缓存消息,为每一个订阅者拷贝每一条消息的引用。当所有订阅者都从
Server
上取走某条消息,这条消息才在
Server
上删除。

3.

UDP VS TCP



MQ

JMS
消息中间件不论是
Server

Server
的通信,还是
Server

Client
的通信,在传输层都使用
TCP
协议,保证消息传输连接的可靠性。而
RV

Server

Server
之间的通信使用了
UDP
协议,牺牲可靠性来达到高实时性的需求。
RV
有两种可靠性级别,
RV Reliable

RVCM

RV Reliable
模式使用基于
UDP
增加了一定可靠机制的
TRDP
协议,在一定范围内具有消息包的检查和重传机制,保证了一定程度的消息可靠性,但不保证消息不丢失。
RVCM

RV Reliable
基础上更进一步,在消息级别具有消息确认和重传机制,可以保证消息绝对不丢失。对于长度在
1500
个字节以下的消息,
RV
Reliable
发布消息能达到
150
万笔消息每秒,接收也能达到
50
万笔消息每秒。传输消息的性能是非常好的。

4.

使用消息
Subject

做收发两端的匹配



MQ

JMS
消息中间件在
Server
端按
Queue

Topic
来缓存消息,消息的发送端和接收端按
Queue

Topic
的名字来匹配。每个
Server
能创建的
Queue

Topic
是有限的,这也就限制了使用
MQ

JMS
消息中间件构建的应用,这些应用在做消息收发处理的时候只能使用粗粒度的消息分类。

RV
不在
Server
端缓存消息,也没有
Server
端的
Queue

Topic
。它是使用消息的
Subject
来做消息发送端和接收端的匹配的。每个消息都有
Subject

Subject
格式是多个字符串的串接,没有数目或者长度的限制。比如在市场数据系统里,行情数据消息的
Subject
里包含金融品种的名字,这样的
Subject
可以有上百万个。消息订阅端可以细到只接收某个市场的某个品种的行情数据。

RV
使用优化的算法实现
Subject
的筛选。如果
RV
网络上有一万种消息,一个
RV Server
被一千个消息接收端连接,每个接收端订阅不同的
Subject

。那
RV Server
的工作就类似一个超级的邮件分检员,对每一个从
RV
网络上广播而来的消息做
Subject
的判断,判断是否在这一千个订阅的
Subject
的范围内,是则将消息推送到订阅此消息的接收端,否则将消息抛弃。当数据量很大时,这种筛选工作是需要很高效率的。

总之,
RV
的最大特点是推送模式,把一个数据生产者的数据以最快的速度推送到多个数据消费者那里。
RV
从金融市场数据系统的需求中产生而来,正是这些特点使得它在证券系统得到最广泛的应用。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: