在erlang中注册全局主管和本地主管有啥区别
Posted
技术标签:
【中文标题】在erlang中注册全局主管和本地主管有啥区别【英文标题】:What the difference between registering a global and local supervisor in erlang在erlang中注册全局主管和本地主管有什么区别 【发布时间】:2018-06-23 04:07:21 【问题描述】:我是 erlang 的新手,我正在查看一些关于启动主管的文档http://erlang.org/doc/man/supervisor.html#start_link-3
start_link/3 函数可能返回
local, Name :: atom() |
global, Name :: atom() |
文档说:
If SupName=local,Name, the supervisor is registered locally as Name using register/2.
If SupName=global,Name, the supervisor is registered globally as Name using global:register_name/2.
在本地注册和在全球注册是什么意思?
【问题讨论】:
【参考方案1】: local:仅为本地节点注册您的 pid,如果您有 Erlang 集群,您可以在其他节点上使用相同的名称。 global:为你所有的 Erlang 集群注册这个名字,并提醒每个节点这个名字。来自global:register_name/3:
当新节点被添加到网络时,它们会被告知已经存在的全局注册名称。网络还被告知新连接节点中的任何全局名称。如果发现任何名称冲突,则调用函数 Resolve。它的目的是决定哪个 pid 是正确的。如果函数崩溃,或返回除其中一个 pid 之外的任何内容,则该名称将被取消注册。每次名称冲突都会调用一次此函数。
此功能适用于您启动流程时的所有标准 OTP 行为。
【讨论】:
我想我会在弄清楚分布式 erlang 之后了解更多。以上是关于在erlang中注册全局主管和本地主管有啥区别的主要内容,如果未能解决你的问题,请参考以下文章