组通信概述

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

对于消息接收,spread将接收消息放入到某一队列,然后由接口接收函数阻塞读取.jgroups前期版本也是如此实现,后期的组播和RPC调用则是函数触发机制.

 

组通信内容又有哪些?

概括说,包括两大模块:组管理模块,组消息通信模块.

每一模块又包含很多具体的内容.比如组管理模块,包括成员加组,成员退组,成员错误,主的推选等等;组消息通信模块包括组内部消息传递,用户消息传递,以及其上封装的RPC调用等等.

 

下面将具体介绍spread,jgroups相关知识.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章