// readme

Splitter is a control-plane service for assigning work to connected clients. Its primary focus is coordination for stateful sharded services.

Features

  • Uses UUID spaces as work domains: splits them into shards and assigns to clients.
  • Emphasizes exclusive shard ownership in a steady state using leases. Optional dual ownership during shard transitions for advanced use cases.
  • Promotes an easier programming model in comparison to coordinators that provide eventual consistency in shard assignments.
  • Shard management is handled centrally in Splitter, using Raft for storage and coordination.
  • Assumes that client instances are dynamic and can come and go.
  • Region-aware assignments for multi-regional services.
  • Automatic propagation of routing information to client instances.
  • Can be used for leadership election by client instances.
  • Provides authoritative shard alignment information for external services interested in arranging data and compute across multiple regions.
  • Built with no external dependencies and only requires persistent storage to store metadata.

Documentation