TIBCO Rendezvous — 技術介紹

TIBCO Rendezvous — 技術介紹

1.1.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 有助於在各種應用系統中獲取信息和數據,能將異構平臺有機地聯結起來, 通過以即插即用(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   提高分佈系統的生命期;

1.1.1.1.           TIBCO Rendezvous 的特點:

  一般特性:

·             分佈式隊列實現一對多信息傳送;

·             安全信息傳送;

·             冗餘機制實現容錯;

·           所有平臺間對等傳輸;

·           與其他通訊協議並存於統一系統;

·           支持多種數據內部交換格式;

·           系統開銷低,容易嵌入;

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

·           支持多點傳送;

  通訊和數據特性:

·             異步通訊;

·             發佈/訂閱,可靠的廣播(broadcast)/多播(multicast)機制;

·             點對點請求/應答;

·             基於主題消息傳送;

·             自定義數據信息與硬件/操作系統無關;

·             透明的信息打包或重組;

  認證信息傳遞:

·             明確的信息認證,確保信息傳送到目的地;

·             在進程中斷和重新啓動狀態下確保要傳遞的信息不丟失;

·             分佈式隊列,自動實現負載均衡功能;

·             傳遞信息給隊列種的某一成員;

·             隊列成員進程保持異步運行;

  容錯:

·             通過冗餘進程實現系統容錯;

·             監控活動的冗餘進程;

  開發特點:

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

·             源碼兼容所有的平臺;

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

1.1.1.2.           TIBCO Rendezvous 包含的組件

TIBCO Rendezvous Daemon(rvd)爲應用進程傳遞信息,過濾主題信息,分配信息;

TIBCO Rendezvous Routing Daemon(rvrd) 在WAN 和LAN 間跨網段有效地傳遞信息,對TIBCO Rendezvous 應用編碼不做任何修改;

1.1.1.3.           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 應用程序隱藏了所有這些細節。

1.1.1.4.           XML 功能的實現

TIBCO RV 只是一個消息中間件產品,XML 數據可以通過RV 消息進行傳遞,但它不提供對XML 數據的處理能力。

可以通過幾種方式來實現XML 數據的處理:

使用TIBCO BusinessWorks 產品對包含XML 數據的RV 消息進行各種處理,如映射、變換、合併、分解等;

使用第三方XML 工具或API,以編程方式對RV 消息中的XML 數據進行處理。

1.1.1.5.           如何使用TIBCO Rendezvous

TIBCO RV 本身只提供一些後臺Daemon 程序以及API 接口供用戶使用。用戶使用這些API,選擇RV 支持的開發語言(如C/C++,Java 等)開發相應的RV 應用程序,並通過後臺Daemon 進程進行消息的發送或接收。

用戶也可以選擇TIBCO 基於RV 開發的一些其他產品(如BusinessWorks,各種Adapter 等)來簡化應用程序的開發。

1.1.2.      TIBCO Adapter for ActiveDatabase — 技術介紹

概述

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

 

 

TIBCO RV, IBM MQ和JMS消息中間件的對比分析

對於消息中間件,絕大多數熟悉的是 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 從金融市場數據系統的需求中產生而來,正是這些特點使得它在證券系統得到最廣泛的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章