Erlang有哪些分布式进程注册中心可用?

12
我想编制一个相当完整的Erlang分布式进程注册表库列表。
这些库需要支持基本操作,例如register_name(Pid, Name)whereis_name(Name)(还应该支持registered_names/0)。名称不应仅限于原子,而且在多个节点参与注册表时,这些注册/查找操作需要能够实现合理可靠的工作(暂不考虑分区)。
到目前为止,我已经列出了globalgprocnprocreg。还有哪些可用的库呢?

你已经掌握了显而易见的部分。我认为许多Erlang系统也在代码中包括它们自己的变体,但它们通常不适用于一般情况。 - I GIVE CRAP ANSWERS
如果源代码可用的话,我很乐意查看自定义注册表。 我已经做了大量关于ejabberd的工作,所以请除此之外提供其他内容 :) - archaelus
我猜gen_leader上有一些自定义的东西(比如gproc)。通常来说,register是一个数据库..所以寻找一些具有强一致性的数据库。 - user425720
3个回答

4

我认为riak_core就是这样的一个技术。我使用它的分区环和一致性哈希来查找节点,再结合本地gproc实例来查找确切的进程。这样我可以在容错性、可用性和速度之间获得非常好的平衡。


如果你能提供一个 Github 项目的链接,我会给你点赞 :) 但是对于我的目的来说,我并不是特别关心可以用什么来实现它,我更关心公开可用的工作实现。 - archaelus
抱歉,这是我雇主的商业项目 :(。 但是关于您对“公开可用的工作实现”的要求,我认为您很不幸(就像我一样),因为我敢说,没有好的分布式进程注册表可用。并且请别误解,我绝不是在说Ulf Wieger的工作很糟糕!相反,这是一个巨大的贡献。但它不够“分布式”,不能在任何真正的生产系统中使用。至少在需要速度和大型集群的可用性时不行。 - loxs

3

Lockerwooga 的多个项目中用于注册进程。

Riak PG 是一个正在进行中的 pg2 替代品。源代码也是使用 riak_core 的好例子。


1

关于Riak PG:

它主要被认为是“正在进行中的工作”,因为它是一些未在生产环境中测试的研究结果。这里有一个链接Erlang Workshop 13 paper

如果有人对Core或特别是使用PG方面有任何问题,我很乐意尽我所能提供帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接