Slicer: Auto-Sharding for Datacenter Applications
usenix.org
usenix.org
[0]: https://www.usenix.org/system/files/conference/osdi16/osdi16... [1]: https://2459d6dc103cb5933875-c0245c5c937c5dedcca3f1764ecc9b2... [2]: https://www.usenix.org/system/files/conference/osdi16/osdi16...
Arguably that’s what Slicer implements. It’s AP for high traffic routing requests that use it, and CP for slower decision making.
Same could be said for things like FoundationDB (and I’d guess Spanner) – topology in CP, “customer activity” in AP, resulting in a system that degrades very gracefully. A bit of a simplification, but I think it’s a good model for services like this.
The TL;DR is that google built a system to shard client requests into different services/task by some largish shard key. The example they provide is to shard requests into ML model services by the underlying language (English vs Chinese) as different languages need different models.
Rather than requiring each product team to manage sharding, google built a custom layer to do it for any team to use. In practice it's not used by that many teams (~20 services at Google use it).