[Haskell-cafe] Looking for architecture/infrastructure advice on coping with thousands of concurrent clients
wojtek at power.com.pl
Wed Jul 9 18:52:05 UTC 2014
On 09.07.2014 19:40, Isak Hansen wrote:
Thousands of connections, your smartphone wouldn't handle, not to
mention a server.
> #1 - What's a good way to set up and maintain compressed and encrypted
> connections from the clients to my cluster? I've been wanting to try
> out websockets, think that'll do?
http://caniuse.com/websockets - WebSockets browser compatibility, caveat
> #2 - I'm new to Haskell and would appreciate thoughts on how to store
> and process game state. Imagine a plain application managing 1000
> tables of poker, responding to player input (that magically appears)
> and timer events (e.g. folding players that fail to take action). What
> data structures and libraries should I be looking at here? Thoughts on
> concurrency and how I organize program flow?
I would spawn a process for each game, and a process for each player.
> #3 - I'm thinking of ZMQ to wire components together. Would I be
> better off basing my cluster on Cloud Haskell or some other library
> for distributed work?
Erlang/OTP is great, but I have a feeling that something was 'lost in
translation' to Haskell, and that thing is simplicity. For example, I do
not understand why such a small cabal package has been split into
multiple tiny cabal packages. This is the fuel that cabal hell fire
burns on. Despite this, I would give Cloud Haskell a try. If you don't
you, will have to rediscover things like supervision hierarchy, not to
mention timeouts as the first line of defense againtst all kinds of
concurrency problems. Erlang/OTP really does get certain things right.
More information about the Haskell-Cafe