JGroups入门教程
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页:XML协议配置文件 | 第2页:TP层 |
第3页:TCP层 | 第4页:TCPPING层 |
第5页:BARRIER层 | 第6页:MERGE2层 |
评论暂时关闭