jgroups-raft
jgroups-raft copied to clipboard
Dynamic membership changes
When a new member D is added to {A,B,C}, then all configuration files need to be changed to set members="A,B,C,D". This should be done dynamically, so that no configuration file changes should be required:
- When a member gets a configuration change (
add-member,remove-member), it uses the new configuration immediately, without waiting for it to be committed (Raft dissertation, ch. 4.1). - This requires that the
membersconfiguration is stored in/with the snapshot. - When a new member starts, its initial membership is configured by the XML config file
- Then (if present) the snapshot is read and
memberschanged - Then the log is read, this may also contain configuration changes, changing
members
The advantage is that the config file never needs to be changed. However, members still need to be added/removed manually or programmatically.