2010-11-15 4 views
5

Nous voulons créer une application Web en temps réel qui devrait être capable de gérer un grand nombre d'utilisateurs simultanés. L'aspect en temps réel serait d'envoyer de nouveaux messages au client, comme le fait FriendFeed, et aussi d'accepter de nouveaux messages du client, comme un système de discussion.Quel cadre en temps réel choisiriez-vous pour une application Web à fort trafic et pourquoi?

Par exemple, certaines options dont nous disposons sont: exécuter une application CodeIgniter derrière un serveur nginx en utilisant le Comet plugin, utilisez un cadre de Python tels que Twisted ou Tornado, utilisez Orbited pour maintenir une connexion permanente avec le serveur, etc.

Quelle configuration serait la meilleure pour une application en temps réel et facile à implémenter?

Addendum: Une question connexe J'aimerais une réponse à - ce qui est plus facile d'écrire une application Web en temps réel complet dans - Twisted/TwistedWeb ou Tornado?

Édition: Chiffres approximatifs: Nous prévoyons commencer par pouvoir gérer 10 000 connexions simultanées, mais nous devrions être en mesure d'augmenter jusqu'à 1 000 000 plus tard en changeant de technologies/en ajoutant des serveurs. Nous ne ferons que pousser les messages texte, y compris les longs messages texte. Nous voulons que l'aspect en temps réel soit vraiment en temps réel, avec un délai de 5 secondes.

Répondre

3

Après beaucoup de recherches, nous avons décidé d'aller avec Node. Il devrait être assez facile à mettre en œuvre, et devrait bien évoluer, et si nous commençons à avoir des millions d'utilisateurs simultanés, nous étudierons des solutions plus évolutives et plus complexes.

+6

C'est un peu plus tard maintenant - je serais intéressé d'entendre comment les choses se sont déroulées pour vous avec Node, Chetan, si cela ne vous dérange pas de partager des expériences? – danjah

1

Avez-vous jeté un oeil à Zope ou même Plone (altought celui-ci est un CMS)? Est célèbre pour la gestion des grands sites de trafic tels que la NASA et more, mais il fonctionne sous un Object-Oriented Database (qui est la principale raison d'une telle performance) et je ne sais pas si vous le souhaitez. Zope et Plone sont tous deux écrits en Python.

1

Vous ne fournissez pas encore suffisamment d'informations pour prendre une bonne décision. Un grand nombre d'utilisateurs simultanés poussant de nouveaux messages les uns aux autres n'est tout simplement pas suffisant. Seul le texte? Ou aussi vidéo? Seulement des textes courts, ou aussi de longs textes? Seulement écrit maintenant, ou téléchargé? 10.000 utilisateurs simultanés ou 10.000.000? Tous depuis le début ou avez-vous le temps de monter en puissance/de changer de technologie/de créer un centre de données? Comment le temps réel est-il suffisant? 1 s de retard ou quelques minutes? Combien d'abonnements de messages souhaitez-vous autoriser? À l'extrémité supérieure de ces questions vous êtes seul, écrire simplement du code personnalisé est la seule manière raisonnable. Détendre certaines contraintes permet d'utiliser les frameworks existants

+0

Merci, j'ai ajouté quelques chiffres approximatifs à la question. J'espère que cela devrait rendre la décision plus claire. – Chetan

2

Je vous suggère de jeter un oeil à Planet Framework (avertissement, je suis l'un des développeurs).

Il offre une solution de pile complète avec des modèles côté client et côté serveur, des fonctions de poussée inter-navigateurs et un découpage de base de données. Basé sur gevent, il offre une sémantique de blocage normale (par opposition à node.js) combinée à la simplicité de Python.

Nous sommes actuellement sur invitation seulement, mais toute notre documentation est disponible publiquement. Je vous suggère de demander une invitation sur le site car nous approuvons continuellement de nouveaux utilisateurs.

Questions connexes