2010-11-15 11 views
5

Wir möchten eine Echtzeit-Webanwendung erstellen, die eine große Anzahl gleichzeitiger Benutzer verarbeiten kann. Der Echtzeitaspekt würde darin bestehen, neue Nachrichten an den Client zu senden, wie es FriendFeed tut, und auch neue Nachrichten vom Client zu akzeptieren, wie ein Chat-System.Welchen Echtzeitrahmen würden Sie für eine Webanwendung mit hohem Datenverkehr wählen und warum?

Zum Beispiel kann einige Optionen, die wir haben, sind: Führen Sie eine CodeIgniter Anwendung hinter einem nginx-Server der Comet plugin verwendet, verwenden Sie einen Python-Framework wie Twisted oder Tornado, Orbited verwenden, um eine dauerhafte Verbindung mit dem Server zu halten usw.

Welcher Setup würde sich am besten für eine Echtzeitanwendung skalieren lassen und außerdem einfach zu implementieren sein?

Nachtrag: Eine verwandte Frage, ich würde gerne eine Antwort auf - was ist einfacher zu schreiben eine vollständige Echtzeit-Web-Anwendung in - Twisted/TwistedWeb oder Tornado?

Edit: Ballpark-Nummern: Wir planen, mit 10.000 gleichzeitige Verbindungen zu verwalten, sollten aber in der Lage sein, bis zu 1.000.000 später durch Switching-Technologien/Hinzufügen von Servern zu skalieren. Wir werden nur Textnachrichten senden, einschließlich langer Textnachrichten. Wir möchten, dass der Echtzeitaspekt in Echtzeit mit einer Verzögerung von 0 Sekunden bei 5 Sekunden angezeigt wird.

Antwort

3

Nach viel Forschung haben wir uns entschieden, mit Node zu gehen. Es sollte relativ einfach zu implementieren sein und ziemlich gut skalierbar sein. Wenn wir beginnen, Millionen von gleichzeitigen Benutzern zu haben, werden wir nach skalierbaren und komplexen Lösungen suchen.

+6

Es ist ein bisschen später - ich würde mich freuen zu hören, wie sich die Dinge mit Node, Chetan, für Sie entwickelt haben, wenn es Ihnen nichts ausmacht, Erfahrungen zu teilen? – danjah

1

Haben Sie einen Blick auf Zope oder sogar Plone geworfen (alltought dies ist ein CMS)? Ist berühmt für die Handhabung großer Verkehrswebseiten wie NASA und more, aber es läuft unter einer Object-Oriented Database (was der Hauptgrund für eine solche Leistung ist) und ich weiß nicht, ob Sie das wollen.

Zope und Plone sind beide in Python geschrieben.

1

Sie liefern noch nicht genügend Informationen, um eine gute Entscheidung zu treffen. Eine große Anzahl von gleichzeitigen Nutzern, die sich gegenseitig neue Nachrichten schicken, ist einfach nicht genug. Nur Text? Oder auch Video? Nur kurze Texte oder auch lange Texte? Nur jetzt geschrieben oder hochgeladen? 10.000 gleichzeitige Benutzer oder 10.000.000? Sie alle von Anfang an oder haben Sie Zeit, um Technologien zu erweitern/zu wechseln/ein Rechenzentrum aufzubauen? Wie ist Echtzeit gut genug? 1 Sekunde Verzögerung oder ein paar Minuten? Wie viele Nachrichtenabonnements möchten Sie zulassen?

Am oberen Ende dieser Fragen sind Sie allein, nur benutzerdefinierten Code schreiben ist der einzig sinnvolle Weg. Das Entsperren einiger Einschränkungen ermöglicht die Verwendung vorhandener Frameworks

+0

Danke, ich habe einige ballpark Nummern zur Frage hinzugefügt. Hoffentlich sollte das die Entscheidung klarer machen. – Chetan

2

Ich schlage vor, Sie betrachten Planet Framework (Disclaimer, ich bin einer der Entwickler).

Sie bietet eine vollständige Stack-Lösung mit Client- und Server-seitigen Vorlagen, browserübergreifenden Push-Funktionen und Datenbank-Sharing. Basierend auf gevent bietet es eine normale blockierende Semantik (im Gegensatz zu node.js) kombiniert mit der Einfachheit von Python.

Wir sind derzeit nur eingeladen, aber unsere gesamte Dokumentation ist öffentlich verfügbar. Ich schlage vor, dass Sie eine Einladung auf der Website anfordern, da wir fortlaufend neue Nutzer zulassen.

Verwandte Themen