Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

On top of modified Discovery SPI could be built more effective mechanisms for detecting and mitigating split-brain situations.

High-level

...

work decomposition

Dicsovery SPI improvements

...

The following list of components is not exhaustive, other components may be added to the list later with detailed plan of their optimization for MDC deployment.

  1. KV API, SQL API: fulfill requests from the same DC where request originator resides (thick client, a server handling thin client request, compute task requesting data from a cache etc).
  2. Thick clients: attach them to a server node from the same (or the closest from a network perspective) DC.
  3. Rebalancing: keep partition loading as much DC local as possible. Partitions should be loaded from the same DC whenever possible. The same is true for historical rebalancing.
  4. Affinity: different affinity functions may provide different guarantees in presence of split-brain scenarios. We need to examine these options and provide an end-user with a clear list of trade-offs each affinity function provides (e.g. at least one copy of each partition in each DC/all PRIMARY copies in one DC etc).
  5. Snapshots: partition files must be loaded from nodes from the same DC whenever possible.

Split-brain handling

At the moment Apache Ignite provides two interfaces to handle split-brain situations: TopologyValidator and ConflictResolver.

However proposed improvements may enable more efficient algorithms for detecting and handling split-brain, e.g. fast detecting of a split-brain on the edges of DCs or simpler and more efficient TopologyValidator implementations based on the notion of "Leader/Follower DC". However all these ideas are a matter of discussion and clarification.

Risks and Assumptions

Current approach to this IEP introduces components' mostly internal logic modifications, no public API changes or breaking binary compatibility are needed. Protocols stay the same as well with some internal tweaks and possibly some refactoring.

...