[erlang-questions] Help creating distributed server cache

Steve Davis steven.charles.davis@REDACTED
Fri Dec 7 01:42:05 CET 2012


>From what you've said, I would guess that the correct answer is:
2) memcached protocol

Since 

Your solution (1) starts with "When a client requests data on a player, 
spawn 1 player process." If that had been "when a client requests data on 
themselves from another game" then it could have been in the running...

A memcached implementation will sort out LRU without you having to reinvent 
(stabilize, test) a wheel.

Not sure why there's a REST requirement. If this MUST be HTTP then I see 
it, otherwise what does it do for you?

My 2c,
/s

On Thursday, December 6, 2012 3:43:22 PM UTC-6, David Fox wrote:
>
> I'm currently developing a gaming server which stores player information 
> that can be accessed from any of our games via a REST API. 
>
> So far I've thought of two ways to structure and cache player data: 
>
> 1. When a client requests data on a player, spawn 1 player process. This 
> process handles: all subsequent requests from clients for this player, 
> retrieving the player data from the DB when created and periodically 
> updating the DB with any new data from clients. If the player is not 
> requested by another client within... say 30 minutes, the player process 
> will terminate. 
>
> 2. Just keep previously requested data in a distributed LRU cache (e.g., 
> memcached, redis, mnesia) 
>
> Out of the two, I prefer #1 since it would allow me to separate the 
> functionality of different "data types" (e.g., player data, game data). 
>
> There are just 2 problems with doing it this way that I'd like your 
> thoughts and help with: 
> I. I would have to implement some sort of "LRU process cache" so I could 
> terminate processes to free memory for new ones. 
> II. If a load balancer connects a client to node #1, but the process for 
> the requested player is on node #2, how can the player process on node 
> #2 send the data to the socket opened for the client on node #1. Is it 
> possible to somehow send an socket across nodes? The reason I ask, is 
> that I'd like to prevent sending big messages across nodes. 
>
> Thanks for the help! 
> _______________________________________________ 
> erlang-questions mailing list 
> erlang-q...@REDACTED <javascript:> 
> http://erlang.org/mailman/listinfo/erlang-questions 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121206/a13fc9a5/attachment.htm>


More information about the erlang-questions mailing list