This module makes it possible to partition the nodes of a
system into global groups. Each global group has its own
global namespace, see
The main advantage of dividing systems into global groups is that the background load decreases while the number of nodes to be updated is reduced when manipulating globally registered names.
The Kernel configuration parameter
{global_groups, [GroupTuple :: group_tuple()]}
For the processes and nodes to run smoothly using the global group functionality, the following criteria must be met:
An instance of the global group server,
All involved nodes must agree on the global group definition, otherwise the behavior of the system is undefined.
All nodes in the system must belong to exactly one global group.
In the following descriptions, a group node is a node belonging to the same global group as the local node.
A
A node started with command-line flag
A global group defined with
A registered name.
Returns a tuple containing the name of the global group that
the local node belongs to, and the list of all other known
group names. Returns
Returns a list containing information about the global groups. Each list element is a tuple. The order of the tuples is undefined.
If the local node is part of a global group,
The name (atom) of the group that the local node belongs to.
A list of node names (atoms), the group nodes.
A list of node names, the group nodes currently synchronized with the local node.
A list of node names, the group nodes with which the local node has failed to synchronize.
A list of node names, the group nodes to which there are currently no connections.
A list of pids, specifying the processes that have
subscribed to
Depending on
A process that has subscribed receives the messages
Returns the names of all group nodes, regardless of their current status.
Returns a list of all names that are globally registered on the specified node or in the specified global group.
Searches for
If
Synchronizes the group nodes, that is, the global name servers on the group nodes. Also checks the names globally registered in the current global group and unregisters them on any known node not part of the group.
If synchronization is not possible, an error report is sent
to the error logger (see also
Returns
Searches for
If
In the situation where a node has lost its connections to other nodes in its global group, but has connections to nodes in other global groups, a request from another global group can produce an incorrect or misleading result. For example, the isolated node can have inaccurate information about registered names in its global group.
Function
Distribution of applications is highly dependent of the global group definitions. It is not recommended that an application is distributed over many global groups, as the registered names can be moved to another global group at failover/takeover. Nothing prevents this to be done, but the application code must then handle the situation.