One of the biggest goals for me was being lightweight and having a masterless architecture so you could trivially add nodes to the cluster and the cluster would manage itself.
The CRDT / eventually-consistent stuff I'm working on seems like it might help and replace RAFT.
Ooh, that's really interesting, thanks for sharing! I added to it to my notes so I don't forget about it.
We actually had that same issue Garage is describing in https://weird.one, where we were trying to build on top of an eventually-consistent system, but needed name reservation to be strongly consistent
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.
Fascinating! I'm going to give this a read through! I'll admit I've been on the "Paxos is too complex" camp since always—perhaps this will change my mind.
Comments
The CRDT / eventually-consistent stuff I'm working on seems like it might help and replace RAFT.
I have a hunch that a lot of the cluster configuration could be safely eventually consistent so that you get partition resilient self-management.
We actually had that same issue Garage is describing in https://weird.one, where we were trying to build on top of an eventually-consistent system, but needed name reservation to be strongly consistent
But I did want to explore ways to build small pieces of strongly consistant data on top of CRDTs, such as tiny Paxos implementations.
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.