2010-07-13 5 views
4

J'ai besoin de créer un formulaire Web pour collecter des données utilisateur (enquête) qui devrait atteindre 100-200k utilisateurs simultanés, peut-être plus. Je suis plus expérimenté avec Java & solutions PHP avec RDBMS pour la persistance, et avec ces plates-formes, j'ai besoin d'une tonne de machines virtuelles et de distribution de charge matérielle sérieuse pour gérer ce genre de trafic.Formulaires Web pour 100-200k utilisateurs simultanés avec node.js

Comme cela peut ne pas être rentable, je flirte avec l'idée de node.js et éventuellement une file d'attente de messages ou un magasin de données NoSQL.

Est-ce que quelqu'un a fait face à ce problème et a essayé une solution similaire?

+0

Je ne pense pas que les utilisateurs simultanés soient la statistique dont vous avez besoin, sauf si vous avez besoin de stocker des données de session (ce qui piquerait). Avez-vous une idée de ce que peuvent être les pics de vues de pages et de formulaires soumis par seconde? –

+0

100-200k utilisateurs simultanés semble outrageusement élevé. Est-ce que les connexions/secondes, combien d'utilisateurs utiliseront l'enquête sur une période de temps ou une autre mesure? –

+0

Il est également possible avec, par exemple, Java 7 et Tomcat 7. Certaines sociétés de télécommunications exécutent des périphériques simultanés 80k + par hôte. Mais cela demande beaucoup d'ajustement et de réflexion. En outre, impliquerait AsyncContext, NIO etc. Décharger toutes les ressources statiques au CDN, augmenter les ulimits et les poignées de fichier maximum dans le système d'exploitation et probablement vous serez limité par l'infrastructure de réseau local, pas votre hôte. En outre, il est important d'avoir une infrastructure de test en premier, et de commencer petit et simple - comme le service d'écho pour les utilisateurs 50k. Node.js est tout aussi bien, et a besoin de la même approche. –

Répondre

2

Node.js serait le bon choix pour ce poste. Node.js alloue seulement un petit tas par connexion et c'est beaucoup plus rapide que de créer un thread pour chaque connexion client, plus Node.js est non-bloquant et orienté événement.

0

Une solution de nuage semble viable pour ce problème spécifique. AWS offre des «serveurs moins puissants», vous pouvez par exemple laisser le traitement du formulaire Web gérer par la «passerelle API» d'AWS où vous pouvez télécharger votre script node.js qui traite les données. Avec la passerelle API, vous n'avez pas besoin de vous soucier des serveurs ou de la mise à l'échelle horizontale. En gros, vous payez un petit montant pour le temps d'exécution. Ensuite, vous pouvez insérer les données dans une base de données nosql telle que dynamodb qui peut être mise à l'échelle de presque toutes les opérations d'écriture arbitraires par seconde.

Voici comment je le manipulerais. Pour la quantité de concurrence, vous pouvez facilement descendre et monter en gamme et ne pas être dérangé par les coûts structurels d'infrastructure; peut-être que d'autres fournisseurs de cloud fournissent des fonctionnalités similaires, mais je n'ai aucune expérience en la matière.

Questions connexes