与gen_服务器相关的Erlang可伸缩性问题:call()

与gen_服务器相关的Erlang可伸缩性问题:call(),erlang,otp,Erlang,Otp,在erlang otp中,当进行gen_server:call()调用时,必须输入要进行调用的节点的名称 假设我有这个用例: 我有两个节点:“node1”和“node2”正在运行。我可以使用这些节点彼此进行gen_server:call()调用 现在让我们假设我又添加了两个节点:“node3”和“node4”,并相互ping,以便所有节点都可以看到并进行genu服务器:相互调用 erlang pros如何处理这样的动态添加新节点,以便它们知道要输入gen_服务器调用的新节点名称,还是需要事先知道

在erlang otp中,当进行gen_server:call()调用时,必须输入要进行调用的节点的名称

假设我有这个用例:

我有两个节点:“node1”和“node2”正在运行。我可以使用这些节点彼此进行gen_server:call()调用

现在让我们假设我又添加了两个节点:“node3”和“node4”,并相互ping,以便所有节点都可以看到并进行genu服务器:相互调用

erlang pros如何处理这样的动态添加新节点,以便它们知道要输入gen_服务器调用的新节点名称,还是需要事先知道所有节点的名称,以便它们在sys.config之类的地方进行硬编码?

您可以使用:
erlang:nodes()
获取节点列表的“现在”视图

此外,您还可以使用:
net\u内核:监视节点(true)
在节点进出时收到通知(通过ping/crash/etc)

要查看模块是否在该节点上运行,可以使用某种ping回调调用gen_服务器

或者您可以使用rpc模块在外部节点上调用erlang:whereis(name)