TIBCO Rendezvous(或称为TIBCO RV)产品是一种中间件,它具备发布/订阅(Publish/Subscribe)、基于主题寻址(Subject-Based Addressing) 和自定义数据信息(Self-Describing Data Messages)等专利技术功能,使不一样应用平台上的信息在一个共享的虚拟总线Information Bus(TIB)上进行传输交换。这些技术能有效地帮助企业从传统的请求/应答(Request/Reply)模式转到自动数据接受的事件驱动模式(Event-Driven,或称之为Push)。TIBCO RV 有助于在各类应用系统中获取信息和数据,能将异构平台有机地联结起来, 经过以即插即用(Plug &Play) 、位置无关(Location-Independent)和分布式服务(Distributed Services)的方式在WAN 和LAN 间配置系统。而且TIBCO RV 具备认证消息传递(Certified Message Delivery) 、容错(Fault Tolerance) 和分布式队列(Distributed Queue)功能。由于使用TIBCO RV 不用考虑网络的技术细节,而只需专一于企业应用的开发,因此能快速创建和配置一个可伸缩的分布式应用系统。算法
TIBCO Rendezvous 的优势:数据库
l 加快应用的开发,减小维护费用;编程
l 惟一独立于硬件、操做系统、网络和协议平台供应商;缓存
l 动态组件替换:进程能够随时加载、退出、替换,而不影响系统运行;安全
l 屏蔽网络细节;网络
l 应用伸缩性高;多线程
l 地址无关,简化增长/改变组件;架构
l 提升分布系统的生命期;负载均衡
n 通常特性:异步
· 分布式队列实现一对多信息传送;
· 安全信息传送;
· 冗余机制实现容错;
· 全部平台间对等传输;
· 与其余通信协议并存于统一系统;
· 支持多种数据内部交换格式;
· 系统开销低,容易嵌入;
· 线程安全,多线程安全保护;
· 支持多点传送;
n 通信和数据特性:
· 异步通信;
· 发布/订阅,可靠的广播(broadcast)/多播(multicast)机制;
· 点对点请求/应答;
· 基于主题消息传送;
· 自定义数据信息与硬件/操做系统无关;
· 透明的信息打包或重组;
n 认证信息传递:
· 明确的信息认证,确保信息传送到目的地;
· 在进程中断和从新启动状态下确保要传递的信息不丢失;
· 分布式队列,自动实现负载均衡功能;
· 传递信息给队列种的某一成员;
· 队列成员进程保持异步运行;
n 容错:
· 经过冗余进程实现系统容错;
· 监控活动的冗余进程;
n 开发特色:
· 提供Java、C、C++、ActiveX、.NET、Perl 的API 库;
· 源码兼容全部的平台;
· 支持同步/异步事件管理结构;
TIBCO Rendezvous Daemon(rvd)为应用进程传递信息,过滤主题信息,分配信息;
TIBCO Rendezvous Routing Daemon(rvrd) 在WAN 和LAN 间跨网段有效地传递信息,对TIBCO Rendezvous 应用编码不作任何修改;
TIBCO RV 在当前的操做环境中加入两个组件:
ü API 库。每一个应用程序链接到RV API 库的某一版本;
ü RV 通信Daemon 进程。在大多数环境,每台主机上面运行一个Daemon 进程。
下图演示了一个简单环境中两个系统进行交互的过程。主机1 上运行应用
程序A 和一个daemon 进程,主机2 上运行两个应用程序B 和C,它们经过单个daemon 进程链接到网络上。全部这三个应用程序能够进行相互通信。
任何主机上能够运行任意数量的RV 应用程序。一般一个主机上的全部RV应用程序共享同一个RV Daemon 进程。
Rendezvous Daemon 进程
应用程序依赖RV Daemon 后台进程进行可靠和高效的网络通信。(一般RVDaemon 进程和RV 应用程序运行在同一主机上;可是RV 应用程序也能够链接到远程daemon。)
RV 应用程序试图链接到RV daemon 进程。若是daemon 没有运行,应用程序将自动启动它并链接到daemon 进程。RV daemon 负责通信的全部细节:如数据的传输,包的排序,接收确认包,重发请求,将信息派发到适当的应用程序进程等。它为RV 应用程序隐藏了全部这些细节。
TIBCO RV 只是一个消息中间件产品,XML 数据能够经过RV 消息进行传递,但它不提供对XML 数据的处理能力。
能够经过几种方式来实现XML 数据的处理:
使用TIBCO BusinessWorks 产品对包含XML 数据的RV 消息进行各类处理,如映射、变换、合并、分解等;
使用第三方XML 工具或API,以编程方式对RV 消息中的XML 数据进行处理。
TIBCO RV 自己只提供一些后台Daemon 程序以及API 接口供用户使用。用户使用这些API,选择RV 支持的开发语言(如C/C++,Java 等)开发相应的RV 应用程序,并经过后台Daemon 进程进行消息的发送或接收。
用户也能够选择TIBCO 基于RV 开发的一些其余产品(如BusinessWorks,各类Adapter 等)来简化应用程序的开发。
概述
TIBCO Adapter for ActiveDatabase能够把某个数据库中数据的变化能够发送给其余的数据库或应用。它把发布/订阅与请求/回复机制扩充到数据库层面,使数据库应用可使用多种不一样层次的消息传递服务。它支持全部的ODBC兼容数据库,包括DB2, Oracle, Sybase, Informix, Microsoft SQL Server, TimesTen in-memory database等。
特点
事先定义的数据库表中的行发生插入、修改或删除操做时,能够把数据按照TIBCO Rendezvous消息格式发布
l 建立数据的拷贝,按照数据值来发布数据
l 直接引用新的数据来发布信息。
l 可使用参数定义发布消息的主题,便可以根据发布数据的内容动态床架主题。
l 可使用可靠传输和保证传输两种方式进行数据的发布。
l 保证传输的接收者能够事先在保证传输信息的发布者上注册。
事先定义的数据库表中的行发生插入、修改或删除操做时,能够订阅按照TIBCO Rendezvous消息格式发布的数据变化
l 可使用含有通配符的主题名称订阅消息
l 可使用可靠传输和保证传输两种方式进行数据的订阅。
l 能够根据消息数量或超时时间进行批处理提交。
l 可使用基于TIBCO Rendezvous 客户端应用定义特定的主题使用RV消息格式向数据库发送SQL语句或存储过程。
使用内建的函数来配置发布代理和订阅代理,修改信息内容。
配置TIBCO Adapter for ActiveDatabase 来知足需求:
定义数据库表间关系,发布全部的相关表内容。
使用按期检查或通知机制监测数据库的改变。
基于的标准:
l 经过ODBC链接多种数据库
l 与其余TIBCO ActiveEnterprise组件实现互操做。
l 使用TIBCO Hawk进行系统监控。
支持的系统平台
ü Windows
ü HP-UX
ü Solaris
ü AIX
ü Linux
支持的数据库系统
ü Oracle
ü Sybase
ü MSSQL
ü DB2 for OS/390
ü DB2 for AS/400
ü DB2 UDB for Windows and Unix
对于消息中间件,绝大多数熟悉的是 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 从金融市场数据系统的需求中产生而来,正是这些特色使得它在证券系统获得最普遍的应用。