Call me maybe: RabbitMQ
If you didn't read the article, the first part is related to this blog post:<p><a href="http://www.rabbitmq.com/blog/2014/02/19/distributed-semaphores-with-rabbitmq/" rel="nofollow">http://www.rabbitmq.com/blog/2014/02/19/distributed-semaphor...</a><p>That post talks about how to build a distributed semaphore using RabbitMQ in the "clustered" configuration option.<p>Aphyr's post is good but RabbitMQ make it pretty clear that this setup is not resilient to network partitions.  They even mention it at the end of the blog post. That is also clear in the documentation.<p><a href="https://www.rabbitmq.com/distributed.html" rel="nofollow">https://www.rabbitmq.com/distributed.html</a><p>The big general question is how likely are you to encounter network partitions?<p>Aphyr believes they are very dangerous and likely to happen to you at some point and should be taken more seriously by the programming world.<p>I tend to take a more of "it depends" on your environment. Recently with VM and cloud deployment network partitions are quite likely. So they should be at the top of your "things to worry about" list.  But, I haven't seen it happen on a local LAN. During testing I have induced it by hand (but pulling the network cable out from a switch), but I just haven't seen it happen otherwise. I probably got lucky. Now I have seen other things come like memory corruption, memory leaks in software, and so on. So many other things that worry me more than network partition on a LAN.<p>All that said, it is great to see these experiments run. Please read and study all the other "Call me maybe" series. They are just very good. It turns out most products with a "distributed" component will fall over in the face of a partition. And keep in mind that it is best to have Aphyr discover these issues than your customers ;-)