erlang module pg2

《轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统》一文里面对“Erlang的分布式进程组(Distributed Named Process Groups)”大吹特吹,就是说的pg2这个module。文档那里虽然写了支持分布式节点,但是并没有说如何如何,只提供了一个join(Name, Pid)。
看了一下openpoker的源码,原来很简单,对于连接上的node,用 which_groups() 多调用几次就可以同步过来了:

主节点先创建一个Group:
[quote](foo@localhost)1> pg2:create(group).
ok
(foo@localhost)2> pg2:get_members(group).
[]
(foo@localhost)3> pg2:join(group, self()).
ok
(foo@localhost)4> pg2:get_members(group).
[<0.35.0>][/quote]

其他节点先连上主节点,然后调用pg2:which_groups().
[quote](bar@localhost)1> net_adm:ping('foo@localhost').
pong
(bar@localhost)2> pg2:which_groups().
[]
(bar@localhost)3> pg2:which_groups().
[group]
(bar@localhost)4> pg2:join(group, self()).
ok[/quote]

已经加入了:
[quote](foo@localhost)5> pg2:get_members(group).
[<4835.35.0>,<0.35.0>][/quote]

使用就是那么简单。但是在pg2的底层实现上,使用了ets,global等模块,下次继续研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值