Sunday, June 15, 2008 5:57 PM
Eventual consistency. Given enough time, the system will become consistent.
When no updates occur for a 'long' period of time eventually all updates will propagate through the system and all of the replicas will be consistent.
Where I work the app that was driving me nuts at work was our General Ledger. It would take up to three days to become consistent. It wasn't until I started to explore the topic of EC that I started to build a mental model that could handle the GL being inconsistent.
It can be very helpful to talk to your users about consistency, and what does it mean when they say they need it now. Is half a second acceptable? This is where the 'long' from before can be a bit funny. To a computer half a second is a long time 500 milliseconds (a 2 gigahertz processor cycles about 2,000,000,000 instructions a second, 0.5 seconds is 1,000,000,000 instructions [the math may not be exactly right, but the I think the point is still made])
Another interesting question for me is "What if I can give you consistency today but for yesterdays data?" At work, we have a lot of processes that aren't quite ready for messaging, so some of our processes will be upgraded and others will be quite legacy. So its interesting to see how these two styles come together. Users also have a hard time seeing the shift that can be made by embracing more of this Event Driven style.
-d