天天看點

實時系統解決方案 TIBCO Rendezvous — 技術介紹(消息中間件|基于資料庫的主動推送)TIBCO RV, IBM MQ和JMS消息中間件的對比分析

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

不用考慮網絡的技術細節,而隻需專注于企業應用的開發,是以能快速建立和配置一個可伸縮的分布式應用系統。

Rendezvous 的優點:

l

加快應用的開發,減少維護費用;

唯一獨立于硬體、作業系統、網絡和協定平台供應商;

動态元件替換:程序可以随時加載、退出、替換,而不影響系統運作;

屏蔽網絡細節;

應用伸縮性高;

位址無關,簡化增加/改變元件;

提高分布系統的生命期;

n 一般特性:

·

分布式隊列實作一對多資訊傳送;

安全資訊傳送;

備援機制實作容錯;

所有平台間對等傳輸;

與其他通訊協定并存于統一系統;

支援多種資料内部交換格式;

系統開銷低,容易嵌入;

線程安全,多線程安全保護;

支援多點傳送;

n 通訊和資料特性:

異步通訊;

釋出/訂閱,可靠的廣播(broadcast)/多點傳播(multicast)機制;

點對點請求/應答;

基于主題消息傳送;

自定義資料資訊與硬體/作業系統無關;

透明的資訊打包或重組;

n 認證資訊傳遞:

明确的資訊認證,確定資訊傳送到目的地;

在程序中斷和重新啟動狀态下確定要傳遞的資訊不丢失;

分布式隊列,自動實作負載均衡功能;

傳遞資訊給隊列種的某一成員;

隊列成員程序保持異步運作;

n 容錯:

通過備援程序實作系統容錯;

監控活動的備援程序;

n 開發特點:

提供Java、C、C++、ActiveX、.NET、Perl 的API 庫;

源碼相容所有的平台;

支援同步/異步事件管理結構;

Rendezvous Daemon(rvd)為應用程序傳遞資訊,過濾主題資訊,配置設定資訊;

Rendezvous Routing Daemon(rvrd) 在WAN 和LAN 間跨網段有效地傳遞資訊,對TIBCO Rendezvous

應用編碼不做任何修改;

RV 在目前的操作環境中加入兩個元件:

ü

API 庫。每個應用程式連接配接到RV API 庫的某一版本;

RV 通訊Daemon 程序。在大多數環境,每台主機上面運作一個Daemon 程序。

下圖示範了一個簡單環境中兩個系統進行互動的過程。主機1

上運作應用

程式A

和一個daemon 程序,主機2 上運作兩個應用程式B 和C,它們通過單個daemon 程序連接配接到網絡上。所有這三個應用程式可以進行互相通訊。

實時系統解決方案 TIBCO Rendezvous — 技術介紹(消息中間件|基于資料庫的主動推送)TIBCO RV, IBM MQ和JMS消息中間件的對比分析

任何主機上可以運作任意數量的RV

應用程式。通常一個主機上的所有RV應用程式共享同一個RV Daemon 程序。

Rendezvous

Daemon 程序

應用程式依賴RV

Daemon 背景程序進行可靠和高效的網絡通訊。(通常RVDaemon 程序和RV 應用程式運作在同一主機上;但是RV

應用程式也可以連接配接到遠端daemon。)

RV

應用程式試圖連接配接到RV daemon 程序。如果daemon 沒有運作,應用程式将自動啟動它并連接配接到daemon 程序。RV daemon

負責通訊的所有細節:如資料的傳輸,包的排序,接收确認包,重發請求,将資訊派發到适當的應用程式程序等。它為RV 應用程式隐藏了所有這些細節。

RV 隻是一個消息中間件産品,XML 資料可以通過RV 消息進行傳遞,但它不提供對XML 資料的處理能力。

可以通過幾種方式來實作XML

資料的處理:

使用TIBCO

BusinessWorks 産品對包含XML 資料的RV 消息進行各種處理,如映射、變換、合并、分解等;

使用第三方XML

工具或API,以程式設計方式對RV 消息中的XML 資料進行處理。

RV 本身隻提供一些背景Daemon 程式以及API 接口供使用者使用。使用者使用這些API,選擇RV 支援的開發語言(如C/C++,Java 等)開發相應的RV

應用程式,并通過背景Daemon 程序進行消息的發送或接收。

使用者也可以選擇TIBCO

基于RV 開發的一些其他産品(如BusinessWorks,各種Adapter 等)來簡化應用程式的開發。

概述

Adapter for

ActiveDatabase可以把某個資料庫中資料的變化可以發送給其他的資料庫或應用。它把釋出/訂閱與請求/回複機制擴充到資料庫層面,使資料庫應用可以使用多種不同層次的消息傳遞服務。它支援所有的ODBC相容資料庫,包括DB2,

Oracle, Sybase, Informix, Microsoft SQL Server, TimesTen in-memory

database等。

實時系統解決方案 TIBCO Rendezvous — 技術介紹(消息中間件|基于資料庫的主動推送)TIBCO RV, IBM MQ和JMS消息中間件的對比分析

特色

事先定義的資料庫表中的行發生插入、修改或删除操作時,可以把資料按照TIBCO

Rendezvous消息格式釋出

建立資料的拷貝,按照資料值來釋出資料

直接引用新的資料來釋出資訊。

可以使用參數定義釋出消息的主題,即可以根據釋出資料的内容動态床架主題。

可以使用可靠傳輸和保證傳輸兩種方式進行資料的釋出。

保證傳輸的接收者可以事先在保證傳輸資訊的釋出者上注冊。

事先定義的資料庫表中的行發生插入、修改或删除操作時,可以訂閱按照TIBCO

Rendezvous消息格式釋出的資料變化

可以使用含有通配符的主題名稱訂閱消息

可以使用可靠傳輸和保證傳輸兩種方式進行資料的訂閱。

可以根據消息數量或逾時時間進行批處理送出。

可以使用基于TIBCO Rendezvous 用戶端應用定義特定的主題使用RV消息格式向資料庫發送SQL語句或存儲過程。

使用内建的函數來配置釋出代理和訂閱代理,修改資訊内容。

配置TIBCO

Adapter for ActiveDatabase 來滿足需求:

定義資料庫表間關系,釋出所有的相關表内容。

使用定期檢查或通知機制監測資料庫的改變。

基于的标準:

通過ODBC連接配接多種資料庫

與其他TIBCO ActiveEnterprise元件實作互操作。

使用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 從金融市場資料系統的需求中産生而來,正是這些特點使得它在證券系統得到最廣泛的應用。

實時系統解決方案 TIBCO Rendezvous — 技術介紹(消息中間件|基于資料庫的主動推送)TIBCO RV, IBM MQ和JMS消息中間件的對比分析

原文釋出時間為:2011-09-24