Mise à l'échelle Node.JS à travers de multiples noyaux / serveurs
Ok, donc j'ai une idée que j'ai envie de lire, mais avant que je le fais j'ai besoin de comprendre un peu les choses pleinement.
Tout d'abord la façon dont je pense que je vais aller de l'avant avec ce système c'est d'avoir du Serveur 3 qui sont décrits ci-dessous:
La Premier Serveur sera mon web Avant la Fin de, c'est le serveur qui sera à l'écoute de connexion et de répondre aux clients, ce serveur va avoir 8 coeurs et 16 go de Ram.
La Deuxième Serveur sera le Serveur de Base de données, assez explicites vraiment, se connecter à l'hôte et set /get données.
La Troisième Serveur sera mon serveur de stockage, ce sera le lieu où les fichiers téléchargeables sont stockées.
Ma première question est:
- Sur mon serveur frontal, j'ai 8 cœurs, quelle est la meilleure manière de faire évoluer le nœud de sorte que la charge est répartie sur les cœurs?
Ma deuxième question est:
- Un système est-il sorti de là, je peux laisser tomber dans mon cadre d'application qui me permettra de parler à l'autre cœurs et faire passer des messages autour d'enregistrer I/O.
et dernière question:
- Est-il un système que je peux utiliser pour aider à déplacer le contenu de mon serveur de stockage à la demande sur le serveur frontal avec aussi peu de frais généraux que possible, la vitesse est une préoccupation que nous aurions plus de 500 clients télécharge simultanément aux heures de pointe.
J'ai enfin convaincu mon employeur node.js est extrêmement rapide et son la plus récente dans la technologie de programmation, et nous devrions investir dans une plate-forme pour notre système Intranet, mais il a demandé une documentation détaillée sur la façon dont cela pourrait être mise à l'échelle à travers le matériel actuel nous avons.
OriginalL'auteur RobertPitt | 2011-03-22
Vous devez vous connecter pour publier un commentaire.
Essayer de le regarder node.js cluster module qui est un multi-core gestionnaire de serveur.
OriginalL'auteur yojimbo87
Tout d'abord, je ne dirais pas que le programme d'installation vous proposer comme "scaling", c'est plus comme "diffusion". Vous n'avez qu'un serveur d'application desservant les demandes. Si vous ajoutez plus d'application des serveurs dans l'avenir, alors vous aurez un problème de montée en charge ensuite.
Je comprends que node.js est mono-thread, ce qui implique qu'il ne peut utiliser qu'une seule base. Mon domaine d'expertise sur la façon de/si vous pouvez mettre à l'échelle, va quitter la partie à quelqu'un d'autre.
Je dirais NFS montage d'un répertoire sur le serveur de stockage de l'application serveur. NFS a relativement peu de frais généraux. Ensuite, vous pouvez accéder aux fichiers comme s'ils étaient locaux.
OriginalL'auteur gubby
Concernant votre première question: l'utilisation cluster (nous l'utilisons déjà dans un système de production, fonctionne comme un charme).
Quand il s'agit de travailleurs de messagerie, je ne peux pas vraiment vous aider. Mais votre meilleur pari est de cluster. Il y aura peut-être quelques fonctionnalités qui fournit des "inter-core" de la messagerie à travers tous les travailleurs du cluster dans l'avenir (je ne connais pas la feuille de route de cluster, mais il semble comme une idée).
Pour votre troisième exigence, je voudrais utiliser une faible charge du protocole comme NFS ou (si vous pouvez aller vraiment fou quand il s'agit de l'infrastructure) d'une haute vitesse de SAN backend.
Autre conseil: utiliser MongoDB que votre base de données back-end. Vous pouvez commencer avec bas de gamme, le matériel et l'échelle de votre instance de base de données avec facilité à l'aide de MongoDB sharding/réplication de l'ensemble des fonctionnalités (si c'est une sorte d'exigence).
OriginalL'auteur schaermu