Some friends and I wrote the game for Facebook without thinking about the real architecture of the game, and imagine our surprise when we reached more than 300,000 unique players per month and as our servers melted.
Now we are working on redesigning the entire server side of the game to make it much more scalable and able to support hundreds of thousands, if not millions of users.
I'm currently new to the whole concept of scaling, but from what I understood more or less, this is what we need: 1. A load balancer 2. A web server for every 20,000 ~ simultaneous users (we contacted a third-party developer comets, which claims to support up to 20,000 simultaneous connections per node). 3. Caching cluster 4. Database cluster
Now this is all very abstract, but am I missing something? If we are developing this in .NET, can anyone recommend a good cluster cache server technology?
Keep in mind that:
- We strive to reach millions of players.
- We strive to reach 10/100 thousand users at a time.
- We need to store as much data about the cache as possible and upload them to the database every time period.
- We have some kind of interaction between the players (get player point updates, etc.), and we need a centralized or replicated cache to work (basically this means that we need the cache data that all web servers get for the full sync)
source share