JGroups
Developer(s) | Bela Ban |
---|---|
Stable release |
3.6.10.Final
/ June 27, 2016 |
Development status | Active |
Written in | Java |
Operating system | Cross-platform |
Size | 2.2 MB |
Type | reliable multicast system |
License | Apache License 2.0 |
Website | http://www.jgroups.org/ |
JGroups is a reliable multicast system written in the Java language.
JGroups adds a "grouping" layer over a transport protocol, internally keeping a list of participants. This list is used to:
- Make the application aware of the listeners
- Make some or all transmissions reliable
- Allow totally ordered transmissions
JGroups is a toolkit for reliable multicast communication. It can be used to create groups of processes whose members can send messages to each other. JGroups enables developers to create reliable multipoint (multicast) applications where reliability is a deployment issue. JGroups also relieves the application developer from implementing this logic themselves. This saves significant development time and allows for the application to be deployed in different environments without having to change code.
JGroups Features
- Group creation and deletion. Group members can be spread across LANs or WANs
- Joining and leaving of groups
- Membership detection and notification about joined/left/crashed members
- Detection and removal of crashed members
- Sending and receiving of member-to-group messages (point-to-multipoint)
- Sending and receiving of member-to-member messages (point-to-point)
Flexible Protocol Stack
The most powerful feature of JGroups is its flexible protocol stack, which allows developers to adapt it to exactly match their application requirements and network characteristics. The benefit of this is that you only pay for what you use. By mixing and matching protocols, various differing application requirements can be satisfied. JGroups comes with a number of protocols (but anyone can write their own), for example
- Transport protocols: UDP (IP Multicast), TCP
- Fragmentation of large messages
- Discovery protocols to discover the initial membership for a joining node
- Reliable unicast and multicast message transmission. Lost messages are retransmitted
- Failure detection: crashed members are excluded from the membership
- Ordering protocols: Fifo, Total Order (sequencer or token based)
- Membership and notification of joined or crashed members
- Network partition (split brain) detection and merging
- Flow control
- Encryption and authentication (including SASL support)
- Compression
Building blocks
Building blocks are classes layered over JGroups channels, which provide higher-level abstractions such as
- RPCs to individual or all cluster nodes
- Distributed caches
- Distributed locks
- Distributed atomic counters
- Distributed task execution