TIBCO中间件 介绍与部署

1 TIBCO Rendezvous — 技术介绍
TIBCO Rendezvous(或称为TIBCO RV)产品是一种中间件,它具有发布/订阅(Publish/Subscribe)、基于主题寻址(Subject-Based Addressing) 和自定义数据信息(Self-Describing Data Messages)等功能,使不同应用平台上的信息在一个共享的虚拟总线Information Bus(TIB)上进行传输交换。这些技术能有效地帮助企业从传统的请求/应答(Request/Reply)模式转到自动数据接受的事件驱动模式(Event-Driven,或称之为Push)。
TIBCO RV 有助于在各种应用系统中获取信息和数据,能将异构平台有机地联结起来, 通过以

  1. 即插即用(Plug & Play)

  2. 位置无关(Location-Independent)

  3. 分布式服务(Distributed
    Services)

    在WAN 和LAN 间配置系统。并且TIBCO RV 具有认证消息传递(Certified Message Delivery) 、容错(Fault Tolerance) 和分布式队列(Distributed Queue)功能。因为使用TIBCO RV 不用考虑网络的技术细节,而只需专注于企业应用的开发,所以能快速建立和配置一个可伸缩的分布式应用系统。
    TIBCO Rendezvous 的优点:
    • 加快应用的开发,减少维护费用;
    • 唯一独立于硬件、操作系统、网络和协议平台供应商;
    • 动态组件替换:进程可以随时加载、退出、替换,而不影响系统运行;
    • 屏蔽网络细节;
    • 应用伸缩性高;
    • 地址无关,简化增加/改变组件;
    • 提高分布系统的生命期;

2 TIBCO Rendezvous 的特点:
1) 一般特性:
• 分布式队列实现一对多信息传送;
• 安全信息传送;
• 冗余机制实现容错;
• 所有平台间对等传输;
• 与其他通讯协议并存于统一系统;
• 支持多种数据内部交换格式;
• 系统开销低,容易嵌入;
• 线程安全,多线程安全保护;
• 支持多点传送;
2) 通讯和数据特性:
• 异步通讯;
• 发布/订阅,可靠的广播(broadcast)/多播(multicast)机制;
• 点对点请求/应答;
• 基于主题消息传送;
• 自定义数据信息与硬件/操作系统无关;
• 透明的信息打包或重组;
3) 认证信息传递:
• 明确的信息认证,确保信息传送到目的地;
• 在进程中断和重新启动状态下确保要传递的信息不丢失;
• 分布式队列,自动实现负载均衡功能;
• 传递信息给队列种的某一成员;
• 队列成员进程保持异步运行;
4) 容错:
• 通过冗余进程实现系统容错;
• 监控活动的冗余进程;
5) 开发特点:
• 提供Java、C、C++、ActiveX、.NET、Perl 的API 库;
• 源码兼容所有的平台;
• 支持同步/异步事件管理结构;

3 TIBCO RV和IBM MQ消息中间件的对比分析
对于消息中间件,绝大多数熟悉的是IBM MQ,这是目前使用最广泛的中间件产品。其实在国外还有一款叫 Rendzvous的消息中间件应用也非常广泛,只是在国内应用不多,所以在国内并没有MQ那么大的名气。这款消息中间件的设计和MQ是完全不同的,有很多不同的特性特点,使得它在某些应用场景具备更多的优势。
先总结一下消息中间件的功能,以上的中间件都实现了这些功能。

  1. 实现消息的异步发送接收,发布订阅,使得两端的应用解耦。
  2. 实现消息持久化机制,保证消息可靠性传输。
  3. 优化网络传输,支持断点续传。
  1. MQ消息中间件主要特点
    在ISC产品使用的MQ消息中间件中,采用的是消息接收端主动接收消息的方式,消息从发送端发出后,首先会缓存到Server上,接收端应用发起一个接收消息的请求,Server把消息作为应答返回给接收端。接收端不执行接收动作,消息就会一直在Server上保存。
    并且,MQ消息中间件在IP层使用点对点的传输方式,都是在Server按消息的Topic来缓存消息,为每一个订阅者拷贝每一条消息的引用。当所有订阅者都从Server上取走某条消息,这条消息才在Server上删除。
    从协议角度上看,MQ消息中间件不论是Server和Server的通信,还是Server和Client的通信,在传输层都使用TCP协议,保证消息传输连接的可靠性。
    TIBCO中间件 介绍与部署

  2. RV消息中间件主要特点
    RV与MQ不同,使用的是消息推送的模式。消息从发送端发出后,并不在 Server 上缓存, Server 只做路由把消息推送给消息接收端。消息接收端只要连接上 Server ,订阅要接收的消息,这些消息就会源源不断地从 Server 那里推送过来,消息先缓存到接收客户端的队列里,接收端应用再从队列里取消息。
    相比于MQ消息中间件在IP层都使用点对点的传输方式,RV实现发布订阅就要简单的多。 RV在IP层使用的是广播或者组播的方式。使用广播或者组播可以直接实现一对多的发布订阅形式,发布应用发布消息到RV网络上,这些消息会广播到网络的每一个节点上,每一个订阅应用都会收到这些消息。
    从协议角度上看, RV 在 Server 和 Server 之间的通信使用了 UDP 协议,牺牲可靠性来达到高实时性的需求。

TIBCO中间件 介绍与部署
以组件使用的MQ为例,主要是在Server端按Queue和Topic来缓存消息,消息的发送端和接收端按Queue和Topic的名字来匹配。每个 Server能创建的Queue和Topic是有限的,这也就限制了使用 MQ 消息中间件构建的应用,这些应用在做消息收发处理的时候只能使用粗粒度的消息分类。
但RV并不在Server端缓存消息,也没有Server端的Queue和Topic。它是使用消息的Subject来做消息发送端和接收端的匹配的。每个消息都有Subject,Subject格式是多个字符串的串接,没有数目或者长度的限制。比如在市场数据系统里,行情数据消息的Subject里包含金融品种的名字,这样的Subject可以有上百万个。消息订阅端可以细到只接收某个市场的某个品种的行情数据。
RV 使用优化的算法实现Subject的筛选。如果RV网络上有一万种消息,一个RV Server被一千个消息接收端连接,每个接收端订阅不同的Subject。那RV Server的工作就类似一个超级的邮件分检员,对每一个从RV网络上广播而来的消息做Subject的判断,判断是否在这一千个订阅的Subject的范围内,是则将消息推送到订阅此消息的接收端,否则将消息抛弃。当数据量很大时,这种筛选工作是需要很高效率的。
总而言之,RV的最大特点是推送模式,把一个数据生产者的数据以最快的速度推送到多个数据消费者那里,最后通过客户端缓存的消息中间件。分布式结构适用于分布是应用系统,方便做扩展,推送加客户端缓存适用于高实时性消息的处理,消息需要在第一时间到达目的地,过时的消息的没有必要保存下来的,消息接收端应用需要做的事情就是不断地处理已经推送到的消息

4 TIBCO Rendezvous 结构与部署

  1. TIBCO Rendezvous 主要包含两个部分
  • TIBCO Rendezvous Daemon(rvd)为应用进程传递信息,过滤主题信息,分配信息;
    如图所示,假如某系统分布式部署于两台服务器(AP1、AP2),每台服务器上都运行着系统内的若干业务进程(Svr1、Svr2、Svr3、Svr4…)和消息分发进程(Dispatch Svr)。
    当其他平台或系统与本系统交互时,从其他网段发送消息通过rvrd接收,并通过rvrd在本局域网内进行广播。此时部署在AP1、AP2两台服务器上的rvd进程便会监听到消息,根据其订阅的Subject首先进行消息筛选,将筛选完成后的消息发送给消息分发进程(Dispatch Svr),由其对消息进行分类(一般RV通过XML进行消息传输,此时便可根据等区分),发送给处理相应业务处理的进程。

TIBCO中间件 介绍与部署

  • TIBCO Rendezvous Routing Daemon(rvrd) 在WAN 和LAN 间跨网段有效地传递信息;
    如图所示,假如A系统LAN网段(10.79.0.X),由于业务需要与B系统跨外网进行通信,此时便可在内网系统与防火墙之间,部署一系列Routing Deamon,也就是RV Server。
    如使用6台服务器,2台安装RVRD,4台安装RVD(2倍冗量,主要是为热备和负载均衡)。当B系统发送业务消息,通过防火墙后,首先由RVRD监听和筛选,核对发送方和Subject后,通过的消息广播给4台RVD Sever,再由该4台RVD各自进行二次筛选并分发给A系统内的各个消息分发进程(Dispatch Svr),最后专递给各个业务进程。

TIBCO中间件 介绍与部署