2011-02-03 4 views
4

Certains amis et moi-même avons écrit un jeu pour Facebook sans vraiment réfléchir à l'architecture réelle du jeu - et imaginons notre surprise lorsque nous avons atteint plus de 300 000 joueurs uniques par mois et que nos serveurs fondaient .Architecture de serveur pour un jeu Facebook évolutif

Maintenant, nous travaillons sur la refonte de tout le côté serveur du jeu afin de le rendre beaucoup plus évolutif et capable de supporter des centaines de milliers voire des millions d'utilisateurs.

Actuellement, je suis nouveau à l'ensemble du concept de mise à l'échelle, mais de ce que je compris plus ou moins c'est ce que nous avons besoin: 1. Un équilibreur de charge 2. Un serveur web par 20.000 utilisateurs simultanés ~ (Nous avons contacté une 3ème partie développeur Comet qui prétend qu'ils peuvent supporter jusqu'à 20.000 connexions simultanées par nœud) 3. un cluster de cache 4. Base de données de cluster

maintenant, tout cela est très abstraite évidemment, mais suis-je manque quelque chose? Si nous développons ceci dans .NET, quelqu'un peut-il recommander une bonne technologie de serveur de cache de cluster?

Gardez à l'esprit que:

  1. Notre objectif est d'atteindre des millions de joueurs
  2. Notre objectif est d'atteindre 10s/100s de milliers d'utilisateurs simultanés
  3. Nous devons garder autant que les données possibles sur cachez-le et jetez-le dans le DB à chaque période de temps
  4. Nous avons des interactions entre les joueurs (obtenir les mises à jour des scores des joueurs, etc.) et nous avons besoin d'un cache centralisé ou répliqué pour travailler (ce qui signifie essentiellement que nous avons besoin du cache données que tous les serveurs web accèdent pour être complètement synchronisé)

Répondre

1

Qu'en est-il du déploiement dans le cloud Azure? Croyant ce qu'ils disent, l'évolutivité ne sera plus votre préoccupation. Au lieu de créer un cluster de base de données, que diriez-vous de diviser les joueurs en différents "serveurs", "mondes" ou comme vous pourriez l'appeler dans votre jeu. Je ne sais pas de quel type de jeu vous parlez, mais la plupart des jeux sur navigateur que je joue le font pour gérer la charge.

+0

OK, mais le cloud Azure nous permet-il d'utiliser ce qui suit? * Clusters de base de données * Clusters de cache De plus, gardez à l'esprit que nous visons 100 000/1 000 000 d'utilisateurs simultanés, et que certaines actions requièrent des informations immédiates et synchronisées sur différents lecteurs. –

+0

Azure gère l'équilibrage de charge pour vous, donc ajouter plus d'instances sous un rôle redirigera automatiquement les joueurs vers différentes instances (serveurs). Qu'est-ce que vous utilisez pour une base de données? Il y a beaucoup d'options différentes pour gérer cela en azur. – njebert

Questions connexes