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 從金融市場數據系統的需求中產生而來,正是這些特色使得它在證券系統獲得最普遍的應用。