You can clone with
Cannot retrieve contributors at this time
JGroups - A Framework for Group Communication in Java ======================================================== March 3, 1998 Bela Ban 4114 Upson Hall Cornell University Ithaca, NY 14853 firstname.lastname@example.org email@example.comJGroups is a Java library for reliable group communication. Itconsists of 3 parts: (1) a socket-like API for applicationdevelopment, (2) a protocol stack, which implements reliablecommunication, and (3) a set of building blocks, which give thedeveloper high-level abstractions (e.g. ReplicatedHashMap, animplementation of java.util.Map.The API (a channel) looks like a socket: there are methods for joiningand leaving groups, sending and receiving messages,getting the shared group state, and registering for notifications whena member joins, or an existing member leaves or crashes.The protocol stack is a list of protocols, through which eachmessage 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 createdaccording to a specification given when a channel is created. Newprotocols can be plugged into the stack easily.Building blocks hide the channel and provide a higher abstraction.Example: ReplicatedHashMap implements java.util.Map and implementsall methods that change the map (clear(), put(), remove()).Those methods are invoked on all hashmap instances in the same groupsimultaneously, so that all hashmaps have the same state.A new hashmap uses a state transfer protocol to initially obtainthe 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, videoconferencingJGroups deliberately models a rather low-level message-orientedmiddleware (MOM) model. The reason is that we don't want to impose aone-size-fits-all model on the programmer, who usually will want toextend the model in various (previously unconceived) ways anyway.Providing low level Java classes allows the programmer toextend/replace classes at will, as the granularity of the system isfiner.