ABSTRACT
The built-in process registry has proven to be an extremely useful feature of the Erlang language. It makes it easy to provide named services, which can be reached without knowing the process identifier of the serving process.
However, the current registry also has limitations: names can only be atoms (unstructured), processes can register under at most one name, and it offers no means of efficient search and iteration.
In Ericsson's IMS Gateway products, a recurring task was to maintain mapping tables in order to locate call handling processes based on different properties. A common pattern, a form of index table, was identified, and resulted in the development of an extended process registry.
It was not immediately obvious that this would be worthwhile, or even efficient enough to be useful. But as implementation progressed, designers found more and more uses for the extended process registry, which resulted in significant reduction of code volume and a more homogeneous implementation. It also provided a powerful means of debugging systems with many tens of thousand processes.
This paper describes the extended process registry, critiques it, and proposes a new implementation that offers more symmetry, better performance and support for a global namespace.
- Ulf Wiger, "Four-fold Increase in Productivity and Quality", FemSYS, Munich, Germany, 2001 http://www.erlang.se/publications/Ulf_Wiger.pptGoogle Scholar
- Ulf Wiger, "Structured Network Programming", Erlang User Conference, Stockholm, Sweden, 2005 http://www.erlang.se/euc/05/1500Wiger.pptGoogle Scholar
- Mats Cronqvist, "Troubleshooting a Large Erlang System", ACM SIGPLAN Erlang Workshop, Pittsburgh, USA, 2004 http://doi.acm.org/10.1145/1022471.1022474 Google ScholarDigital Library
- Erlang/OTP Design Principles, http://www.erlang.org/doc/design_principles/part_frame.htmlGoogle Scholar
- Thomas Lindgren, "Atom Garbage Collection", ACM SIGPLAN Erlang Workshop, Tallinn, Estonia, 2005 http://doi.acm.org/10.1145/1088361.1088369 Google ScholarDigital Library
- Ulf Wiger, gproc Source Code Repository (Subversion) http://svn.ulf.wiger.net/gprocGoogle Scholar
- Arts, Claessen, Svensson, "Semi-formal Development of a Fault-Tolerant Leader Election Protocol in Erlang" Fourth International Workshop on Formal Approaches to Testing Software, volume 3395 of LNCS, pages 140--154 Linz, Austria, 2004 http://www.ituniv.se/~arts/papers/fates04.pdf Google ScholarDigital Library
- Svensson, Arts, "A New Leader Election Implementation" ACM SIGPLAN Erlang Workshop, Tallinn, Estonia, 2005 http://doi.acm.org/10.1145/1088361.1088368 Google ScholarDigital Library
Index Terms
- Extended process registry for erlang
Recommendations
Riak PG: distributed process groups on dynamo-style distributed storage
Erlang '13: Proceedings of the twelfth ACM SIGPLAN workshop on ErlangWe present Riak PG, a new Erlang process group registry for highly available applications. The Riak PG system is a Dynamo-based, distributed, fault-tolerant, named process group registry for use as an alternative to the built-in Erlang process group ...
Process Bottlenecks within Erlang Web Applications
Erlang is best known for its strong support for concurrency, fault tolerance, and reliability. An important basis for these desirable characteristics is Erlang's process support: an Erlang runtime can easily support hundreds of thousands of very ...
Erlang behaviours: programming with process design patterns
CEFP'09: Proceedings of the Third summer school conference on Central European functional programming schoolErlang processes run independently of each other, each using separate memory and communicating with each other by message passing. These processes, while executing different code, do so following a number of common patterns. By examining different ...
Comments