組通信概述

組通信概述我們僅從應用角度大致介紹下jgroups和spread,因爲這是目前使用較多的兩個組件,而且他們也代表了兩種不同的應用實現.有關其技術設計我們在後面會陸續的重點介紹.

spread以daemon程序(C實現)運行,應用程序通過spread提供的接口函數(spread提供有c,java,perl等)來實現組通信和組維護,當然,如果你已經深入瞭解了spread源碼,你也可以自己封裝消息與spread dameon通信來實現一套調用函數.

jgroups(java實現)則提供了一個jar包,應用程序相當於通過集成源代碼來實現組通信和組維護.當然,其實我們也可以基於jgroups封裝一層,形成類似於spread的daemon程序,這樣,C應用程序也就可以使用它了.

 

說到這,我們先來看下組通信應用情況有哪些?一般概括有如下幾種情況:

 

一臺機器上一個應用程序一個組.

一臺機器上一個應用程序多個組,組遵循統一實現流程.

一臺機器上一個應用程序多個組,每個組的實現流程不同.

一臺機器上一個應用程序多個組,幾個組爲單位而其實現流程不同.

一臺機器上多個應用程序一個組.

一臺機器上多個應用程序多個組,各應用程序遵循統一的組的實現流程.

一臺機器上多個應用程序多個組,各應用程序的組的實現流程不同.

一臺機器上多個應用程序多個組,幾個應用程序爲單位而其實現流程不同.

 

對於一臺機器多個應用程序情況,我們認爲:底層的物理連接或組播地址等應該是可以共享的.對spread而言,每臺機器只有一個spread daemon,這是天然特性.對jgroup而言,以前版本不能做到這點,但最新版本通過設置TP層協議是支持的.

對於一臺機器一個應用程序情況,我們認爲:還要做到在儘量高的層次上資源共享.如Jgroup可基於同一Jchannel支持多個組(虛擬組概念). 而spread則通過每個連接到spread daemon,該連接亦可加入多個不同組.

對於消息發送,spread和jgroups大致相同.

對於消息接收,spread將接收消息放入到某一隊列,然後由接口接收函數阻塞讀取.jgroups前期版本也是如此實現,後期的組播和RPC調用則是函數觸發機制.

 

組通信內容又有哪些?

概括說,包括兩大模塊:組管理模塊,組消息通信模塊.

每一模塊又包含很多具體的內容.比如組管理模塊,包括成員加組,成員退組,成員錯誤,主的推選等等;組消息通信模塊包括組內部消息傳遞,用戶消息傳遞,以及其上封裝的RPC調用等等.

 

下面將具體介紹spread,jgroups相關知識.

 

 

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