Какие распределенные регистраторы процессов доступны для Erlang?
Я хотел бы скомпилировать достаточно полный список библиотек реестра распределенных процессов для Erlang.
Такие библиотеки должны поддерживать базовые операции, такие как register_name(Pid, Name)
и whereis_name(Name)
(и идеально registered_names/0
). Имена не должны ограничиваться только атомами, и эти операции регистрации/поиска должны работать надежно надежно с несколькими узлами, участвующими в реестре (игнорируя разделы на данный момент).
До сих пор я придумал global
, gproc
и nprocreg
. Какие другие доступны?
Ответы
Ответ 1
Я бы сказал, что riak_core таков. Я использую его кольцо разделов + согласованное хеширование, чтобы найти node вместе с локальным экземпляром gproc, чтобы найти точный процесс. Таким образом, я получаю очень точный баланс между отказоустойчивостью, доступностью и скоростью.
Ответ 2
Locker используется в нескольких проектах wooga для регистрации процессов.
Riak PG является "незавершенной работой", альтернативной pg2. Исходный код также служит хорошим примером использования riak_core.
Ответ 3
Относительно Riak PG:
В основном это считалось "незавершенным", потому что это было результатом некоторых исследований, которые не были протестированы на производстве. Здесь ссылка на Erlang Workshop 13 paper.
Если у кого-то есть вопросы относительно Core или, в частности, с помощью PG, я был бы рад помочь любым возможным способом.