What We Talk About When We Talk About Distributed Systems
A nice survey of the topic can be found in <i>Total Order Broadcast and Multicast Algorithms: Taxonomy and Survey</i>, Xavier Défago, André Schiper, Péter Urbán, 2004[1]. Interestingly, the unexpected fame of the CAP theorem and especially its various misinterpretations has done some harm to this field of distributed systems when people started believing that eventual consistency is the only way to achieve the scalability requirements of their applications.<p>On the JVM, the best group communication infrastructure is the terrific JGroups library[2]. On .NET (and soon the JVM, too) there's Vsync (Isis 2)[3]. For C/C++ (with Java and Python binding), there's Spread[4]. All three are heavily inspired by the work of (or, in the case of Vsync/ISIS, directly created by) Ken Birman of Cornell, and implement group membership and leader election, atomic multicast, failure detection and more.<p>[1]: <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.102.3146" rel="nofollow">http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.102....</a><p>[2]: <a href="http://jgroups.org/" rel="nofollow">http://jgroups.org/</a><p>[3]: <a href="http://vsync.codeplex.com/" rel="nofollow">http://vsync.codeplex.com/</a><p>[4]: <a href="http://www.spread.org/" rel="nofollow">http://www.spread.org/</a>