我想为Erlang编译一个合理完整的分布式进程注册库的列表。Erlang有哪些分布式过程注册表?
此类库需要支持基本操作,如register_name(Pid, Name)
和whereis_name(Name)
(理想情况下为registered_names/0
)。名称不应仅限于原子,并且这些注册/查找操作需要在多个节点参与注册表的情况下合理可靠地工作(现在忽略分区)。
到目前为止,我已经拿出global
,gproc
和nprocreg
。其他人可用?
我想为Erlang编译一个合理完整的分布式进程注册库的列表。Erlang有哪些分布式过程注册表?
此类库需要支持基本操作,如register_name(Pid, Name)
和whereis_name(Name)
(理想情况下为registered_names/0
)。名称不应仅限于原子,并且这些注册/查找操作需要在多个节点参与注册表的情况下合理可靠地工作(现在忽略分区)。
到目前为止,我已经拿出global
,gproc
和nprocreg
。其他人可用?
我会认为riak_core就是这样。我使用它的分区环+一致性散列查找节点,以及本地gproc实例以查找确切的进程。因此,我在容错,可用性和速度之间取得了非常好的平衡。
如果你链接到一个github项目,我会给你投票:)但是对于我的目的,我并不是非常感兴趣的是什么_could_被用来实现一个,我对公开可用的工作实现感兴趣。 – archaelus 2012-04-01 01:24:43
对不起,这是一个商业项目,属于我的雇主:(。 但是,根据你对“公开可用的工作实施”的要求,我认为你运气不错(就像我一样),因为我敢说,没有好的分布式进程注册表可用,而且不要误解我的意思,我绝不会说Ulf Wieger的工作是废话!相反,这是一个巨大的贡献,但它没有“足够”地用于任何实际生产系统,至少不需要在大型集群中需要速度和可用性。 – loxs 2012-04-03 17:31:37
关于PG了Riak:
它主要被认为是“正在进行的工作”,因为它是一些研究,这不是在生产测试的结果。这是一个链接到Erlang Workshop 13 paper。
如果任何人有任何关于Core的问题,或者特别使用了PG,我会很乐意帮助我做到。
你钉了明显的。我认为很多Erlang系统在代码中也包含它们自己的变体,但它们通常不适用于一般设置。 – 2011-03-16 16:25:55
如果源代码可用,我很乐意查看自定义注册表。我已经在ejabberd上做了一堆工作,所以除此之外:) – archaelus 2011-03-16 17:56:02
我想gen_leader上的自定义内容(如gproc)。一般来说,注册是一个数据库..所以寻找一些强大的一致性数据库。 – user425720 2011-03-16 23:17:36