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