global_group

global_group

模块

global_group

模块摘要

将节点分组到全局名称注册组。

描述

该模块可以将系统的节点划分为全局组。每个全局组都有自己的全局名称空间,请参阅global(3)

将系统划分为全局组的主要优点是背景负载减少,而在操作全局注册名称时,要更新的节点数量减少。

内核配置参数global_groups定义了全局组(参见kernel(6)config(4)):

{global_groups, [GroupTuple :: group_tuple()]}

要使用全局组功能顺利运行进程和节点,必须满足以下条件:

  • 全局组服务器的实例global_group必须在每个节点上运行。当一个节点启动时,这些进程会自动启动并同步。

  • 所有涉及的节点必须同意全局组定义,否则系统的行为是不确定的。

  • 系统中的所有节点必须属于一个全局组。在以下描述中,组节点是属于与本地节点相同的全局组的节点。数据类型group_tuple()=

  • 在某个节点与其全局组中的其他节点失去连接但与其他全局组中的节点有连接的情况下,来自另一个全局组的请求可能会产生错误或误导性结果。例如,孤立节点可能在其全局组中包含有关注册名称的不准确信息。

  • 功能send/2,3不安全。

  • 应用程序的分布高度依赖于全局组定义。不建议将应用程序分发到多个全局组上,因为注册的名称可以在故障转移/接管时移动到另一个全局组。没有什么可以阻止这种情况,但是应用程序代码必须处理这种情况。

扩展内容

global(3)erl(1)