在erlang otp中进行gen_server:call()时,你必须发送要拨打电话的节点的名称。
假设我有这个用例:
我有两个节点:'node1'和'node2'正在运行。我可以使用这些节点来生成gen_server:call()。
现在假设我添加了2个节点:'node3'和'node4'并相互ping通,以便所有节点都可以看到并使gen_server:相互调用。
erlang专业人员如何处理这样的新节点的动态添加,以便他们知道要输入gen_server调用的新节点名称,或者是否需要事先知道所有节点的名称以便它们是在像sys.config这样的地方硬编码?
答案 0 :(得分:0)
你可以使用:
erlang:nodes()
得到一个"现在"节点列表的视图
另外,您可以使用:
net_kernel:monitor_nodes(true)
在节点进出时通知(通过ping / crash / etc)
要查看您的模块是否在该节点上运行,您可以使用某种ping回调调用gen_server
那,或者您可以使用rpc模块在外部节点上调用erlang:whereis(name)。