Our solution, which was reasonable in our scenario for now, was just to run a Redis instance for handling all the data that needs transactions or strong consistency.
But I did want to explore ways to build small pieces of strongly consistant data on top of CRDTs, such as tiny Paxos implementations.
But I did want to explore ways to build small pieces of strongly consistant data on top of CRDTs, such as tiny Paxos implementations.
Comments
This post even formalizes Paxos on top of Automerge, which we're using for our CRDT in @roomy.chat.
https://medium.com/@polyglot_factotum/understand-paxos-with-rust-automerge-and-tla-part-1-the-synod-371df5f16f45
I haven't gone though that yet, but eventually I want to experiment with something similar.
https://github.com/drpcorg/chotki/blob/e5aadecc345614a8cf89ef9615c87f960f633656/rdx/README.md#replicated-data-interchange-rdx-crdt-library
It's a kind of CRDT data store, but made on top of LSM trees like RocksDB, LevelDB, etc.
I haven't spent time to fully grasp this paper, but I think this is good too.
The author of Paxos mentions how the original paper was more confusing than necessary, and that fundamentally it is almost as simple as possible.
That's why we have to have multi-paxos, and then people make all kinds of variations on things.
That makes it trickier to define "Paxos".