Git Product home page Git Product logo

jgroups's Introduction



       JGroups - A Framework for Group Communication in Java
       ========================================================

			    March 3, 1998

			       Bela Ban
			   4114 Upson Hall
			  Cornell University
			   Ithaca, NY 14853
			  [email protected]
		       [email protected]


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.




jgroups's People

Contributors

belaban avatar rhusar avatar dimbleby avatar sanne avatar tristantarrant avatar alex-sherwin avatar dereed avatar rachmatowicz avatar pruivo avatar pferraro avatar palacsint avatar wburns avatar danberindei avatar tepitebson avatar justinsb avatar blcjgroups avatar rvansa avatar nekop avatar vjuranek avatar hoangelos avatar phaas avatar maniksurtani avatar erlyfall avatar spinkb avatar mposolda avatar kammous avatar akilman-zz avatar tomashofman avatar rocketraman avatar nsawadsky avatar

Watchers

Sangkyun Yoon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.