Erlang -创建整数(分布式pid表示的一部分)实际上是如何创建的?

6pp0gazn  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(153)

在分布式Erlang系统中,pids可以有两种不同的表示:i)内部; ii)外部。
内部表示具有以下形状:< A.B.C >
例如,当消息必须在不同节点之间传输时使用的外部表示由以下元素组成:< node_id, ID, serial, creation >,根据官方文件。
其中,node_id是节点的名称,IDserial标识node_id上的进程,creation是一个整数,用于将节点与其自身的过去(崩溃)版本区分开来。
我找不到的是虚拟机如何创建creation整数。
通过在我的PC上设置一个小实验,我发现如果我多次创建和删除同一个节点,计数器总是增加1,并且通过在不同的机器上创建同一个节点,creation整数是不同的,但在它们的结构上有一些相似之处,例如:

machine 1 -> creation integer = 1647595383   
machine 2 -> creation integer = 1647596018

你们中有谁知道这个整数是如何产生的吗?如果有的话,你能给我解释一下吗?也许可以参考一些(或多或少)官方文档?

gstyhher

gstyhher1#

creation作为epmd中节点注册响应的一部分发送,请参阅该协议的详细信息。
如果您有自定义的erl_epmd模块,您还可以提供自己的方法来创建creation-值。
原始的creation是具有该名称的节点第一次注册时的本地时间,然后每当重新注册该名称时,它就被迁移一次。

相关问题