May 26, 2018
Clustering, registration, and distribution for Elixir
Swarm is both a global distributed registry, like gproc, and a clustering utility. It was designed for the use case where large numbers of persistent processes are created for things like devices, and are unique across a cluster of Erlang nodes, and messages must be routed to those processes, both individually, and in groups. Additionally, Swarm is designed to distribute these processes evenly across the cluster based on a consistent hashing algorithm, and automatically move processes in response to cluster topology changes, or node crashes.