组通信概述我们仅从应用角度大致介绍下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大致相同.
<