Reliable Multicasting with the JGroups Toolkit

Bela Ban

JGroups Project


                        
                    

$Revision: 1.10 $

This document is copyrighted. Copies are allowed for personal use. Redistribution only with written permission of the author(s).

$Date: 2008/01/23 14:36:56 $


Table of Contents

Foreword
Acknowledgments
1. Overview
1.1. Channel
1.2. Building Blocks
1.3. The Protocol Stack
1.4. Header
1.5. Event
2. Installation and Configuration
2.1. Requirements
2.2. Installing the binary distribution
2.3. Installing the source distribution
2.4. Building JGroups (source distribution only)
2.5. Testing your Setup
2.6. Running a Demo Program
2.7. Using IP Multicasting without a network connection
2.8. It doesn't work !
2.9. The instances still don't find each other !
2.10. Problems with IPv6
2.11. Wiki
2.12. I have discovered a bug !
3. API
3.1. Utility classes
3.1.1. objectToByteBuffer(), objectFromByteBuffer()
3.1.2. printMessage()
3.1.3. activeThreads()
3.1.4. printMembers()
3.2. Interfaces
3.2.1. Transport
3.2.2. MessageListener
3.2.3. ExtendedMessageListener
3.2.4. MembershipListener
3.2.5. ExtendedMembershipListener
3.2.6. ChannelListener
3.2.7. Receiver
3.2.8. ExtendedReceiver
3.3. Address
3.4. Message
3.5. View
3.5.1. ViewId
3.5.2. MergeView
3.6. Membership
3.7. Channel
3.7.1. Creating a channel
3.7.1.1. Using XML to define a protocol stack
3.7.2. Setting options
3.7.3. Connecting to a channel
3.7.4. Connecting to a channel and getting the state in one operation
3.7.5. Getting the local address and the group name
3.7.6. Getting the current view
3.7.7. Sending a message
3.7.8. Receiving a message
3.7.9. Using a Receiver to receive messages
3.7.10. Peeking at a message
3.7.11. Getting the group's state
3.7.12. Getting the state with a Receiver
3.7.13. Partial state transfer
3.7.14. Streaming state transfer
3.7.15. Disconnecting from a channel
3.7.16. Closing a channel
4. Building Blocks
4.1. PullPushAdapter
4.1.1. Example
4.2. MessageDispatcher
4.2.1. Example
4.3. RpcDispatcher
4.3.1. Example
4.4. ReplicatedHashMap
4.5. NotificationBus
5. Advanced Concepts
5.1. Using multiple channels
5.2. Using the Multiplexer to run multiple building blocks over the same channel
5.2.1. The Multiplexer API
5.2.1.1. Batching state transfers
5.2.2. Service views
5.3. Sharing a transport between multiple channels in a JVM
5.4. Transport protocols
5.4.1. UDP
5.4.1.1. Using UDP and plain IP multicasting
5.4.1.2. Using UDP without IP multicasting
5.4.2. TCP
5.4.2.1. Using TCP and TCPPING
5.4.2.2. Using TCP and TCPGOSSIP
5.4.3. TUNNEL
5.4.3.1. Using TUNNEL to tunnel a firewall
5.5. The concurrent stack
5.5.1. Overview
5.5.1.1. Configuration
5.5.2. Elimination of up and down threads
5.5.3. Concurrent message delivery
5.5.4. Out-of-band messages
5.5.5. Replacing the default and OOB thread pools
5.5.6. Sharing of thread pools between channels in the same JVM
5.6. Misc
5.6.1. Shunning
5.7. Handling network partitions
5.7.1. Merging substates
5.7.2. The primary partition approach
5.7.3. The Split Brain syndrome and primary partitions
5.8. Flushing: making sure every node in the cluster received a message
6. Writing protocols
6.1. Anatomy of a protocol
6.2. Writing user defined headers
7. List of Protocols
7.1. Transport
7.1.1. UDP
7.1.2. TCP
7.1.3. TCP_NIO
7.1.4. TUNNEL
7.1.5. JMS
7.1.6. LOOPBACK
7.2. Initial membership discovery
7.2.1. PING
7.2.2. TCPPING
7.2.3. TCPGOSSIP
7.2.4. MPING
7.3. Merging after a network partition
7.3.1. MERGE2, MERGE3, MERGEFAST
7.4. Failure Detection
7.4.1. FD
7.4.2. FD_ALL
7.4.3. FD_SIMPLE
7.4.4. FD_PING
7.4.5. FD_ICMP
7.4.6. FD_SOCK
7.4.7. VERIFY_SUSPECT
7.5. Reliable message transmission
7.5.1. pbcast.NAKACK
7.5.2. UNICAST
7.5.3. SMACK
7.6. Fragmentation
7.6.1. FRAG and FRAG2
7.7. Ordering (FIFO covered by NAKACK)
7.7.1. Total Order (SEQUENCER)
7.8. Group Membership
7.8.1. pbcast.GMS
7.8.1.1. Disabling the initial coordinator
7.9. Security
7.9.1. ENCRYPT
7.9.2. AUTH
7.10. State Transfer
7.10.1. pbcast.STATE_TRANSFER
7.10.2. pbcast.STREAMING_STATE_TRANSFER
7.10.2.1. Overview
7.10.2.2. API
7.10.2.3. Configuration
7.10.2.4. Other considerations
7.11. Flow control
7.11.1. FC
7.11.2. SFC
7.12. Message stability
7.12.1. STABLE
7.13. Diagnostics
7.13.1. PERF
7.13.2. SIZE
7.13.3. TRACE
7.13.4. PRINTOBJS
7.14. Misc
7.14.1. COMPRESS
7.14.2. pbcast.FLUSH
Bibliography