歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> JGroups入門教程

JGroups入門教程

日期:2017/2/28 14:43:07   编辑:Linux教程

JGroups在集群環境下還是有一定的用處的,比如基於JGroups & memcached開發分布式cache層,集群任務的切分和計算結果的合並,JBossCache組件...

XML-協議棧 - 以一個JGroups標配的tcp.xml為例子
1.讀取XML文件<config>下<ELEMENT>集合,每一個<ELEMENT>初始化成一個ProtocolConfiguration
- ProtocolConfiguration -> protocol_name | MAP<key, value>
這樣組成一個LIST<ProtocolConfiguration>
------
2. ProtocolConfiguration參數處理
a. 迭代MAP每一個key-value處理value,如果value中能找到正則式${([^\}]+)}中的group(1)則抽取出來處理

b. 抽取出所有的group(1),如果滿足正則([^:]+):([^:]+)則將其group(1)和group(2)分別抽取出來,否則整個
當成一個group(1)

c. 如果group(1)滿足[([^,]+),]*([^,]+)則抽取所有的組迭代這些值調用System.getProperty(value)如果不為空
退出迭代,如果在這個過程中根據group(1)得到的值為空則使用group(2)來代替,這層取得的值如果不為
空則其上一層的group(1)使用這個值代替,否則將此key-value從ProtocolConfiguration屬性中刪除
------
3.構建協議棧ProtocolStack
a. LIST<ProtocolConfiguration>到LIST<Protocol>的處理
迭代ProtocolConfiguration根據ProtocolConfiguration.protocol_name初始化對應的Protocol類,再根據
ProtocolConfiguration.properties對Protocol的屬性進行設置,其具體步驟是首先獲取此Protocol過時的
屬性從properties裡面移除,再獲取此Protocol裡面可以設置的屬性如果properties裡面有則進行設置,
最後如果properties還有多余的映射則會拋異常。初始化一個LIST<Protocol>生成的Protocol加到此LIST中

b. LIST<Protocol>驗證
第一步驗證LIST<Protocol>是否有重復,再就是根據每層協議需要上層和下層提供的服務到其上面的協議
和其下面的協議去找是否提供了它需要的服務

迭代LIST<Protocol>進行將Protocol鏈表連接起來
-----------
- Protocol protocol : LIST<Protocol>
- protocol.upProtocol=nextProtocol
- nextProtocol.downProtocol=protocol
-----------
c. 協議棧ProtocolStack本身也是一個Protocol,其維護了兩個引用top_prot和bottom_prot,其中top_prot為
STREAMING_STATE_TRANSFER,bottom_prot為TCP,並且top_prot的upProtocol設置為ProtocolStack。
再將ProtocolStack倒序過來依次調用Protocol.init來初始化協議。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-10/91114p2.htm

JGroups 的詳細介紹:請點這裡
JGroups 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved