<div dir="ltr">Hey,<div><br></div><div>You might want to check out riak_core [1] which looks like it will suit your needs. With it, you can partition your users, games and whatnot and distribute work between the nodes. It will also handle node memberships to the "ring" for you, so you don't have to worry about nodes dropping out and such. It's actually quite easy to integrate into an existing OTP application.</div>
<div><br></div><div>[1] - <a href="https://github.com/basho/riak_core">https://github.com/basho/riak_core</a></div><div><br></div><div><div><br class="">Cheers,</div><div>alex</div></div></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Fri, Mar 7, 2014 at 3:09 AM, Cary Cherng <span dir="ltr"><<a href="mailto:ccherng@gmail.com" target="_blank">ccherng@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
What is the idiomatic way to create a fault tolerant poker service with Erlang?<br>
<br>
One could use a single server type, a bunch of machines for a<br>
fragmented mnesia table that stores the state of each game. This<br>
ensures that state is replicated to guard against machine failures.<br>
<br>
<br>
But it still leaves questions open:<br>
<br>
* How are games created so that they are load balanced across the<br>
servers so that cpu usage is relatively even? If game creation goes<br>
through some special server that also keeps track of where all games<br>
are so it knows loads on the backends, then that special server is a<br>
potential single failure point.<br>
<br>
* And a similar problem. If a user is disconnected, how does it find<br>
which games it is part of when it reconnects without some special<br>
server to track games.<br>
<br>
<br>
I am aware that others have made poker services with Erlang such as<br>
OpenPoker. But what would be the right idiomatic way of architecting a<br>
poker service to be resistant to machine failures assuming you were<br>
starting from scratch?<br>
<br>
The questions I asked above imply features that I would expect many<br>
distributed systems would need. That is a kind of abstract pattern.<br>
Are there maybe design patterns for these kinds of distributed<br>
systems?<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>a lex 13 x<br><a href="http://a13x.net" target="_blank">http://a13x.net</a> | @a13xnet
</div>