[erlang-questions] gproc and gen_event

Michael Truog <>
Sat May 19 02:52:13 CEST 2012


Hi Andrew,

gen_event is an OTP behavior for responding to events, like logging, database drivers, etc. (http://www.erlang.org/doc/design_principles/events.html).  The only different part is the supervisor wants "dynamic" in the child spec (http://www.erlang.org/doc/design_principles/sup_princ.html#id71666).

gproc is a way of having centralized storage among Erlang nodes.  However, if you read here http://erlang.org/pipermail/erlang-questions/2010-April/051030.html , you will discover:
"As stated before, gen_leader is a bit clumsy in environments where nodes are dynamically added and removed. Changing the participants of a gen_leader cluster is fairly difficult. The gen_leader_revival project tries to merge a number of existing modifications to gen_leader to make it more flexible." (i.e., where gen_leader is the guts behind gproc).  So, if you don't have netsplits, then gproc should be fine, but I believe mnesia fits into that category as well.

pg2 is one you have ignored, which replicates process groups among the collected nodes, storing them in ETS.  I chose an approach based on pg2, but without ETS in CloudI (http://cloudi.org), here: https://github.com/okeuday/CloudI/blob/master/src/lib/cloudi/src/list_pg.erl .  This makes more sense with CloudI focusing on the AP part of the CAP theorem, whereas gproc is more focused on CA.  I find the approach in CloudI better, since it avoids global state and that is the main point of using Erlang (with its Actor model).  However, I am very biased, since I wrote it.

Regards,
Michael

On 05/17/2012 05:14 PM, Andrew Berman wrote:
> Hello,
>
> I am trying to set up a pub-sub type situation where I have a function called which does some stuff and at the end broadcasts a message.  I would like for multiple handlers to be able to receive that message and do something with it.  I'm currently using gen_event, but have been reading about gproc as well.  Can anyone explain why they'd use one over the other for pub/sub?
>
> Thanks,
>
> Andrew
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120518/c4af74cd/attachment.html>


More information about the erlang-questions mailing list