A natural extension of the leader-based replication model is to allow more than one node to accepts, which requires Multi-Leader Replication. Within each datacenter, regular leader-follower replication is used; between datacenters, each datacenter's leader replicates its changes to the leaders in other datacenters.
Use Cases for Multi-Leader Replication
- Multi-datacenter operation
- Inter-datacenter network delay is hidden from users, thus better perceived performance.
- Tolerance of datacenter outages
- Tolerance of network problems (traffic between datacenters usually goes over the public internet)
- Clients with offline operation
Handling Write Conflicts
- Conflict avoidance (writes for a particular record go through the same leader)
- Converging toward a consistent state
- Give each write a unique ID
- Give each replica a unique ID
- Merge the result together (with application code to resolve the conflict or not)
- Custom conflict resolution logic
- On Write, typically runs in background
- On Read, the application may prompt the user or automatically resolve the conflict and write the result back to db.
Automatic Conflict Resolution
- Conflict-free replicated datatypes
- Mergeable persisitent data structures
- Oporation transformation
Multi-Leader Replication Topologies
- Circular topology (single point of failure)
- Star topology (single point of failure)
- All-to-all topology (Dependent update arrives before insert issue, use version vectors to solve)