Являются ли ссылки erlang уникальными между узлами/перезапусками ВМ?

В документации сказано, что

make_ref() -> ref()

Возвращает почти уникальную ссылку.

Возвращенная ссылка повторится примерно через 2 82вызовов; поэтому он достаточно уникален для практических целей.

Но мои глаза говорят мне, что между перезапусками ВМ я мог бы легко получить ту же самую ссылку:

[~] erl
Erlang R14B04 (erts-5.8.5)
1> make_ref().
#Ref<0.0.0.33>
2> make_ref().
#Ref<0.0.0.37>
^C

[~] erl
Erlang R14B04 (erts-5.8.5)
1> make_ref().
#Ref<0.0.0.33>

Итак, насколько уникальны ссылки Erlang? Подходят ли они для использования в качестве генератора уникальных «тегов», когда теги сохраняются в mq или db и могут генерироваться разными сеансами виртуальной машины.

Я знаю, что для этого можно использовать UUID. Также хорошо известно, что pids() являются повторяемыми, повторно используемыми и ни в коем случае не уникальными, если они сериализованы, а затем загружены из постоянного хранилища.

Вопрос в том, что такое refs() — больше похоже на UUID или больше на pids()? Являются ли refs() уникальными между узлами? Между перезапусками? Есть ли какая-либо официальная информация по этой теме?

6
задан Cœur 19 August 2017 в 12:55
поделиться