当前位置: 首页 > 工具软件 > JGroups > 使用案例 >

java中的jgroup_jgroups: JGroups是一个可靠的群组通讯Java工具包。它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展。...

南门棋
2023-12-01

JGroups - A Framework for Group Communication in Java

========================================================

March 3, 1998

Bela Ban

4114 Upson Hall

Cornell University

Ithaca, NY 14853

bba@cs.cornell.edu

belaban@yahoo.com

JGroups is a Java library for reliable group communication. It

consists of 3 parts: (1) a socket-like API for application

development, (2) a protocol stack, which implements reliable

communication, and (3) a set of building blocks, which give the

developer high-level abstractions (e.g. ReplicatedHashMap, an

implementation of java.util.Map).

The API (a channel) looks like a socket: there are methods for joining

and leaving groups, sending and receiving messages,

getting the shared group state, and registering for notifications when

a member joins, or an existing member leaves or crashes.

The protocol stack is a list of protocols, through which each

message passes. Each protocol implements an up() and down()

method, and may modify, reorder, encrypt, fragment/unfragment, drop,

or pass a message up/down. The protocol stack is created

according to a specification given when a channel is created. New

protocols can be plugged into the stack easily.

Building blocks hide the channel and provide a higher abstraction.

Example: ReplicatedHashMap implements java.util.Map and implements

all methods that change the map (clear(), put(), remove()).

Those methods are invoked on all hashmap instances in the same group

simultaneously, so that all hashmaps have the same state.

A new hashmap uses a state transfer protocol to initially obtain

the shared group state from an existing member. This allows for

replication of data structures across processes.

Group communication is important in the following situations:

- A service has to be replicated for availability. As long as at

least one of the servers remains operational, the service itself

remains operational

- Service requests have to be balanced between a set of servers

- A large number of objects have to be managed as one entity (e.g. a

management domain)

- Notification service / push technology: receivers subscribe to a

channel, senders send data to the channels, channels distribute

data to all receivers subscribed to the channel.

Used for example for video distribution, videoconferencing

JGroups deliberately models a rather low-level message-oriented

middleware (MOM) model. The reason is that we don't want to impose a

one-size-fits-all model on the programmer, who usually will want to

extend the model in various (previously unconceived) ways anyway.

Providing low level Java classes allows the programmer to

extend/replace classes at will, as the granularity of the system is

finer.

 类似资料: