I hesitate to call Mark McKeown's \<a href="http://betathoughts.blogspot.com/2007/06/brief-history-of-consensus-2pc-and.html"" target="_blank" rel="noopener noreferrer">Brief History of Consensus, 2PC, and Transaction Commit (via just about everyone, but let's say Bill de h?ra) a "blog post." It reads much more like a darn good professional article.
If you're interested in having an informed opinion about concurrency (as opposed to waiting half-a-decade and accepting what the market has decided is "good enough"), the article is a must-read. As we get to the manycore era, the amount of asynchronicity within a single machine will be significant. We're already seeing hints of this with Non-Uniform Memory Access (NUMA), in which different cores can access main memory asynchronously.
So in order to think knowledgeably about what concurrent programming ought to be like, the best crude model is distributed programming. With a huge caveat, which is that you can't think just about the network messages as "the system," you have to think about keeping the local processor busy. So don't think about Google Maps, think about Forza 2 on XBox Live. (Mmmm... Forza 2 on XBox Live ... )