2011-03-16 21 views
11

我想为Erlang编译一个合理完整的分布式进程注册库的列表。Erlang有哪些分布式过程注册表?

此类库需要支持基本操作,如register_name(Pid, Name)whereis_name(Name)(理想情况下为registered_names/0)。名称不应仅限于原子,并且这些注册/查找操作需要在多个节点参与注册表的情况下合理可靠地工作(现在忽略分区)。

到目前为止,我已经拿出global,gprocnprocreg。其他人可用?

+0

你钉了明显的。我认为很多Erlang系统在代码中也包含它们自己的变体,但它们通常不适用于一般设置。 – 2011-03-16 16:25:55

+0

如果源代码可用,我很乐意查看自定义注册表。我已经在ejabberd上做了一堆工作,所以除此之外:) – archaelus 2011-03-16 17:56:02

+0

我想gen_leader上的自定义内容(如gproc)。一般来说,注册是一个数据库..所以寻找一些强大的一致性数据库。 – user425720 2011-03-16 23:17:36

回答

4

我会认为riak_core就是这样。我使用它的分区环+一致性散列查找节点,以及本地gproc实例以查找确切的进程。因此,我在容错,可用性和速度之间取得了非常好的平衡。

+0

如果你链接到一个github项目,我会给你投票:)但是对于我的目的,我并不是非常感兴趣的是什么_could_被用来实现一个,我对公开可用的工作实现感兴趣。 – archaelus 2012-04-01 01:24:43

+0

对不起,这是一个商业项目,属于我的雇主:(。 但是,根据你对“公开可用的工作实施”的要求,我认为你运气不错(就像我一样),因为我敢说,没有好的分布式进程注册表可用,而且不要误解我的意思,我绝不会说Ulf Wieger的工作是废话!相反,这是一个巨大的贡献,但它没有“足够”地用于任何实际生产系统,至少不需要在大型集群中需要速度和可用性。 – loxs 2012-04-03 17:31:37

3

Lockerwooga的几个项目中用于注册过程。

Riak PG是pg2的“工作进行中”替代方案。源代码也是如何使用riak_core的一个很好的例子。

1

关于PG了Riak:

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

如果任何人有任何关于Core的问题,或者特别使用了PG,我会很乐意帮助我做到。