|
Sounds interesting. How do you handle the case where you're unable to send the update to other nodes? So an update goes to node A, but not to B and C. Meanwhile, the connection to the client may be disrupted, so the client doesn't know the fate of the update. If you're unlucky here, a subsequent read will ask B and C for data, but the newest data is actually on A. Right? I assume there's some kind of async replication between the nodes to ensure that B and C eventually catch up, but you do have an inconsistency there. You also say there is no async replication, but surely there must be some, since by definition there is a quorum, and updates aren't hitting all of the nodes. I understand that CRDTs make it easier to order updates, which solves part of consistent replication, but you still need a consistent view of the data, which is something Paxos, Raft, etc. solve, but CRDTs separated across multiple nodes don't automatically give you that, unless I am missing something. You need more than one node in order to figure out what the newest version is, assuming the client needs perfect consistency. |