J'ai été un développeur d'applications Web Ruby / PHP depuis un certain temps et je suis habitué à l'idée de l'échelle horizontale des instances de serveur pour gérer plus de demandes. Échelle horizontale - ce qui signifie des cas séparés d'une application assise derrière un équilibreur de charge qui ne partait rien et ne sont pas au courant de l'autre. P>
La question principale que j'ai est, puisque nœud.js et l'accent mis sur eFeed-io permet une seule case exécutant un serveur nœud.js pour gérer les "milliers de personnes" de demandes simultanées - est l'équilibrage de charge / horizontale utilisée pour Échelle des applications NODEJS? Est une mise à l'échelle d'une application de nœud limitée à la mise à l'échelle verticale (jeter plus de puissance de bélier / de traitement au problème)? P>
Ma deuxième question concerne avec node.js Scalification horizontale et WebSockets. J'ai vu assez quelques tutoriels de «chat» de nœuds qui utilisent des webockets. (Favorite: http://martinikora.com/nodejs-and-websocket-simple- Tutoriel de chat ) P>
Depuis que les webkockets conservent efficacement une ligne ouverte ouverte entre un navigateur et un serveur, une architecture à l'échelle horizontalement typique du monde PHP / RUBY entraîne une application de discussion comme celle expliquée dans le lien à la rupture de la rupture - en tant que nouvelle connexion Websocket Les demandes seraient attribuées à différents processus / serveurs et il n'y aurait pas de ressource centrale suivant tous les clients connectés? P>
3 Réponses :
nœud.js prend en charge la mise à l'échelle horizontale dans la manière dont vous décrivez via l'intégré cluster < / code>
module. p>
En ce qui concerne votre deuxième question sur l'utilisation de WebSockets / Socket.io dans cet environnement, vous devez utiliser quelque chose comme ReDIS pour stocker l'état partagé sur plusieurs instances de votre application, comme décrit ICI . P>
C'est une ancienne question mais j'utilise Mongodb pour stocker et récupérer toutes mes données d'application de chat. Puisque je souhaite faire échec horizontalement ma demande car mon application de discussion ne fonctionne pas lorsque j'ai plusieurs serveurs. Que dois-je faire dois-je supprimer complètement mongodb et utiliser Redis? Ou bien y a-t-il une meilleure solution.
La fonctionnalité de cluster de nœud.js est limitée au serveur unique avec plusieurs processeurs. Principalement, il exploite le nombre de processeurs dans le serveur. Je pense que la question de savoir si plus sur le scénario lorsque nous voulons échouer horizontalement avec plusieurs serveurs avec une façade d'équilibreur de charge. p>
Et pour répondre à la question à propos de la prise, tout comme n'importe quel appel de serveur, l'appel de la création de socket sera chargé d'équilibrer et indique que le nœud NX, pour la durée de vie de la prise Web Cette connexion TCP est maintenue ouverte. I.e. Toutes les communications du navigateur au serveur, le serveur vers le navigateur Thru Web Socket sera toujours desservie par NX.
Si vous avez des instances nœud.js réparties sur plusieurs serveurs (échelle horizontale), elle aura le même objectif, vous devez le programmer correctement pour prendre en charge ce type de configuration. p>