Posts

Showing posts from March, 2020

1. Cache and Data Consistency in Distributed systems (CAP/PACELC/CRDT)

Abstract There is always a tension between data  C onsistency and system  A vailability when  P artitioning a system across datacenters (think  CAP ). Especially data cache-ing poses interesting challenges. This tension becomes way more acute as soon you have 2 data centers separated by more than 10ms latency. I present below some of the problems along with possible solutions. In the end I will present an elegant solution that maximizes  A vailability while providing the needed C onsistency level for read-after-writes flows. The solution requires the client to carry a monotonic  id  along the flow. I would postulate that any solution where the client don't carry some consistency info will provide a higher latency that the presented solution (see chapter "Flow consistency" ) . The examples below are simplified to be intuitive and easy to understand, however these learnings also apply to N datacenters. How it starts Suppose you started with on...

Hell

Being burned in hell for an eternity is not the worst that can happen. Even worse than this, for me, is to be entirely washed out from Existence. Burning in hell looks pretty painful indeed, but it still contains a glimpse of hope. After eons of suffering, a redemption is still possible, potentially. Suffering from burns is still a property of Life, something that suffers must exist and must somewhat live. There is still something that exists in the burning hell... Even worse than this, for me, is to disappear, gradually, then totally, from Existence. The eternal void is more frightening that any eternal pain. The eternal void does not leave any glimpse of hope for a better future. The eternal void is no future at all. * * *