Another point worth mentioning is that, single transaction coordinator model is undervalued in community. Majority of systems have the following query pattern (sorted descending):
1. Single key read --> you don't need to contact coordinator
2. Single key write --> you don't need to contact coordinator. OCC with simple version number works here.
3. Multi-key asynchronous write (updating second, third keys using a pub/sub infrastructure) --> you don't need to contact coordinator in this case.
4. True multi-key transactions that should happen atomically --> need to contact coordinator
If a single coordinator can process 20-30K/s transactions of category 4, then total throughput of the system would be around 300K queries per second which is sufficient for many workloads.