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
从金融市场数据系统的需求中产生而来,正是这些特点使得它在证券系统得到最广泛的应用。
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
从金融市场数据系统的需求中产生而来,正是这些特点使得它在证券系统得到最广泛的应用。
相关文章推荐
- IBM MQ消息中间件jms消息中RHF2消息头的处理
- TIBCO Rendezvous、IBM MQ和JMS消息中间件技术比较
- 【java-分布式系统】消息中间件学习-jms(以ActiveMQ为例)
- JMS消息中间件原理及ActiveMQ用法
- 理解面向消息中间件及JMS 以及 ActiveMQ例子
- java消息中间件之二:spring集成JMS连接ActiveMQ
- 消息队列中间件的技术选型分析
- 消息中间件JMS点对点入门小Demo
- 消息中间件原理及JMS简介(2)
- 第二章:理解面向消息的中间件和jms(2)
- 理解面向消息中间件及JMS 以及 ActiveMQ例子
- Java消息中间件学习笔记六 -- Spring JMS理论
- 消息中间件原理及JMS简介
- 数据库shard中间件对比,以及sharding-jdbc 实现原理分析
- 消息中间件原理及JMS简介
- 常见Java开源JMS消息中间件及特性简介
- Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能 (阿里中间件团队博客)
- 消息中间件(一)JMS与ActiveMQ
- 消息队列之JMS和AMQP对比
- 理解面向消息中间件及JMS 以及 ActiveMQ例子