2014-07-24 4 views
2

Je suis développeur de serveur de jeux. J'utilise noisette pour mon serveur de jeu (SmartfoxServer 2x) pour éviter directement la requête db. Mais je me demande comment utiliser Hazelcast pour obtenir les meilleures performances:Mettre en œuvre Hazelcast avec SmartFoxServer

  1. Toujours créer une nouvelle instance client Hazelcast lorsque le cache d'accès, puis l'arrêt il. Ou
  2. Créez un pool d'instance de client hazelcast et réutilisez-le. Ne jamais éteindre jusqu'à la fin de l'application. Ou
  3. Créer une seule instance client hazelcast, ne jamais arrêter jusqu'à la fin de l'application. Ou
  4. Rendre mon serveur en temps réel en tant que membre de la noisette.

Quelle est la bonne façon? Mon système sert pour environ 5000 CCU.

Mon jeu est une sorte de jeu de cartes. Chaque partie se déroule en environ 2 minutes, avec un maximum de 4 joueurs. Lorsque cela se termine, je dois enregistrer toutes les transactions (changement d'argent), et la nouvelle valeur monétaire pour l'utilisateur. Avec 5000 ccu, dans le pire des cas, en même temps il y a (5000/4) * (4 + 4) = 10000 entrées doivent être enregistrées. Cela ne peut pas être fait avec les requêtes mysql directement (lent), mais avec noisette, c'est possible, non? Mais je suis un novice en technique Hazelcast, donc je ne sais pas quelle est la bonne façon de résoudre mon problème.

Merci à l'avance,

Répondre

5

La meilleure réponse est 3 ou 4. Pendant que je travaillais à l'industrie du jeu je Hazelcast non pas comme un cache, mais pour distribuer/regrouper les serveurs de jeu lui-même. C'est pourquoi mes serveurs de jeu faisaient partie du cluster. Si vous voulez avoir un cluster db-cache dédié, utilisez un seul client, lancez-le avec le serveur de jeu et maintenez-le en vie pendant que le serveur de jeu lui-même est actif. Il est regroupé en interne et le client est assez intelligent pour router les demandes vers le bon nœud de cluster dans presque tous les cas. Si vous voulez l'utiliser pour plus que juste la mise en cache, j'irais faire du serveur de jeu un nœud du cluster lui-même. Rappelez-vous que chaque nœud contient une partie des données, ce qui pourrait ne pas être ce que vous voulez pour un serveur de jeu agissant comme un db-cache.

+0

Merci beaucoup. Je vais utiliser le quatrième, comme vous l'avez mentionné. ma réputation n'est pas suffisante pour voter votre réponse, désolé. – bachden