Highly scalable/available distributed system whiling maintaining integrity

less than 1 minute read

I think that ACID is a main mechanism to maintain the application consistency but it's hard to make it highly scalable and available system because of synchronous property of ACID. But if we can relax the timeliness property in consistency, I think that it is possible highly scalable/available system by using a log based message system such as Kafka.
The main reason is that log based messaging system can guarantee the serializability of events, we can maintain the integrity of application by processing the fault tolerant events eventually.

The another possible option is to use the optimistic locking mechanism. FoundataionDB is a good example.