在分布式Erlang系统中,pids可以有两种不同的表示:i)内部; ii)外部。
内部表示具有以下形状:< A.B.C >
例如,当消息必须在不同节点之间传输时使用的外部表示由以下元素组成:< node_id, ID, serial, creation >
,根据官方文件。
其中,node_id
是节点的名称,ID
和serial
标识node_id
上的进程,creation
是一个整数,用于将节点与其自身的过去(崩溃)版本区分开来。
我找不到的是虚拟机如何创建creation
整数。
通过在我的PC上设置一个小实验,我发现如果我多次创建和删除同一个节点,计数器总是增加1,并且通过在不同的机器上创建同一个节点,creation
整数是不同的,但在它们的结构上有一些相似之处,例如:
machine 1 -> creation integer = 1647595383
machine 2 -> creation integer = 1647596018
你们中有谁知道这个整数是如何产生的吗?如果有的话,你能给我解释一下吗?也许可以参考一些(或多或少)官方文档?
1条答案
按热度按时间gstyhher1#
creation
作为epmd
中节点注册响应的一部分发送,请参阅该协议的详细信息。如果您有自定义的
erl_epmd
模块,您还可以提供自己的方法来创建creation
-值。原始的
creation
是具有该名称的节点第一次注册时的本地时间,然后每当重新注册该名称时,它就被迁移一次。