Process group in erlang: some thoughts about the pg module by Paolo D’Incau.
From the post:
One of the most common ways to achieve fault tolerance in distributed systems, consists in organizing several identical processes into a group, that can be accessed by a common name. The key concept here is that whenever a message is sent to the group, all members of the group receive it. This is a really nice feature, since if one process in the group fails, some other process can take over for it and handle the message, doing all the operations required.
Process groups allow also abstraction: when we send a message to a group, we don’t need to know who are the members and where they are. In fact process groups are all but static. Any process can join an existing group or leave one at runtime, moreover a process can be part of more groups at the same time.
Fault tolerance is going to be an issue if you are using topic maps and/or social media in an operational context.
Having really “cool” semantic capabilities isn’t worth much if the system fails at a critical point.