[cluster]Implentation of cluster with Photon?

Options
garric
edited February 2012 in Photon Server
Hi,
For smartfox, it offers solution for cluster through combining itself with Terracotta. All you have to do is just to configure the shared game data in Terracotta.
So is there any docs or refs on cluster using Photon?
To simplify the problem, think about a scene like this. A game server for Room can only hold 2000 players, but 1000 extra players request to join the Room. Usually we employ to add another game server for Room. The question is how we manage the two game server to make the 3000 players 'feel' they are in the same Room.
A ugly implementation maybe like this. We select the game shared data first, and we also need other server, named briefly data server for maintaining these shared data and ensuring data synchronization. Becides, every game server are 'equiped' with an operation queue.Each time a game server request to operate(read, write, ...) the shared data, it first send request to its opeartion queue and then the queue are responsible to send the request to data server one by one. Of course, a queue residing in data server will deal with the request from game servers one by one and return result to game server. (Sorry for this redundant and trivial description :))
The draft solution above is what I can do for cluster so far. Is there anyone who would like to give advice or solution for this problem. :)

P.s. Photon haved offers server API documention. Is there any more deeply docs descripting the macro intended usage of each namespace? :)

Comments

  • gnoblin
    Options
    I seriously doubt you can have a room with 3000 players in it )).
  • dreamora
    Options
    You could have if you did interest area implementations to limit the persons to which the message goes.

    But this is the same independent of which technology you use. Just cause you have terracotta on the Java side, which gives you an 'internode memory bank', does not make it scale automagically, either you implement the whole interest management there or you will kill every payable uplink there too.

    For .NET there are also different options for this kind of internode data memory storage. Additionally .NET has stuff like Entity Frameworks which allow you to handle data storage to DB in a reasonable way to actually make the whole stuff scaleable without 32gb+ of RAM per node as you can rely on a scaleable database backend.
    Yes TerraCotta in ram storage has its benefits too (like handling stuff for you) but it also has its impact on internode traffic (limitation of available bandwidth, if you kill a large part of your 40-50mb / s on a gbit cable with cache exchanges due to all to all node memory updates, you will not scale to 3000 users either) which naturally also limits your number of players again.

    Question here really should be more: What are you savy in? if its Java there is no question where to go, if its C# then there is no question where to go, if you have no experience with either, ask the network engineer thats gonna develop your solution cause you won't be the one doing it, independent of the technology, as such scaling solutions are nothing you can do without some serious expert experience gained from long years of experience or a focused Bsc / master in that direction. (exception is if you happen to have 1-2M on your bankaccount to invest in Big World + a team worth the 6 figure fee for it per title)