Global Erlang namespace wrecks modularity
Many of the best properties of Erlang systems derive from the architecture of lightweight independent processes without shared memory solving a problem by message passing. Messages are addressed to processes. To send a process a message then the sender needs the destination address (process id) or the recipient.
To avoid the need for the sender to know the address of the recipient system processes register a global name in the erlang runtime system. These processes can then be found by a lookup of the register. A similar situation also arises with applications which again register a globally unique name.
In some situations it would be good to break up our system into disjoint sets of processes each operating in its own context. Consider providing webservices, each customer has its own pages, its own database etc. As soon as a global name is used, like a webserver application, or a mnesia database the structure is compromised. The only answer is separate erlang instances.
No comments:
Post a Comment
Your comments are welcome.