JGroups入门教程


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来初始化协议。

更多详情见请继续阅读下一页的精彩内容:  

JGroups 的详细介绍:请点这里
JGroups 的下载地址:请点这里

JGroups入门教程

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 下一页
【内容导航】
第1页:XML协议配置文件 第2页:TP层
第3页:TCP层 第4页:TCPPING层
第5页:BARRIER层 第6页:MERGE2层

相关内容

    暂无相关文章