组通信是分布式系统基础之基础,这点是毋庸置疑的.
2年前,我毕业后的第一个项目,就是基于组通信的一个文件备份项目,组通信功能使用了jgroups组件,2.5版本,当时基本算是通读了jgroups源码,尤其是其中的协议栈构建,组通信实现流程等应该说看的比较细.形成了几篇文档和jgroups组件本身存在的一些设计问题的总结文档(当时没写博客),后来自己重新完成了一个smartjgroups程序,并也进行了测试,组通信的两大主要功能:组播和组维护是没有问题的.熟悉了解实现jgroups前后差不多有2-3个季度时间.后来继续文件备份和数据库备份的其他项目,这方面研究就暂时放下了.
现在的主要方向是分布式系统,也是今后几年将要做的事了,现在算刚刚开始了.所以,计划将分布式作为博客一个重要方向.
jgroups目前应用较多(我们组在用的过程中确实发现有些问题的,以后会分析的),但这期间spread也流行起来了(以C实现的),主要它提供的接口较丰富,我们组项目的HA机制也用到spread,不过因为用spread的项目通信量不似传统用jgroups的项目,所以貌似相对较稳定一点(还有待继续研究,目前我也只是刚开始分析其源代码)
这篇博客开写也正值我做的一个研究型项目,基于jgroups和spread提供一个通用的组通信接口(JAVA实现),当然,它要求以后也能支持其他的组通信组件或自己实现的组通信模块.
顺便提下,最近发现还有个组通信开源项目,appia,JAVA实现的,感觉该项目类似于我的smartjgroups,以jgroups思想为核心而实现的基本组通信功能.
应该说,jgroups和spread代表了组通信的两种设计理念和实现.博客以后也是专门分析和基于这两个组件为重点,smartjgroups,appia等也会有所介绍,以作比较.
jgroups最新的版本已经是2.8了,spread最新的版本是4.1.0,June 18,2009才release的,而spread的上一版本4.0.0是December 4, 2006就已经release了,这么长时间才一个新的release版本,是不是说明它本身就比较稳定呢?呵呵.值得研究.
主要介绍一点背景,以后着重技术分析了.