2012-06-07 8 views
7

Ich arbeite derzeit mit DerbyJS, weil es sauber, DRY Client/Server-Code fördert. Der Nebeneffekt (Hauptgrund, warum die meisten Leute das Framework verwenden) ist, dass es Socket.IO verwendet, um Echtzeit-Apps zu erstellen. In diesem Fall brauche ich nicht Echtzeit, aber es ist eine nette Ergänzung.Socket.IO - sind die offenen Verbindungen ein Problem?

Meine Frage ist - opfere ich Skalierbarkeit/Leistung mit Socket.IO und all diesen offenen Verbindungen, die es unterhält? Würde Backbone + ExpressJS Ressourcen freigeben, da keine offenen Verbindungen bestehen?

Antwort

10

Eine Reihe von offenen Verbindungen zu halten, hat natürlich einige Kosten in Bezug auf den Server-Overhead, aber ich würde mir keine Sorgen machen, es sei denn, Sie haben ein offensichtliches Skalierungsproblem. Sobald Sie ein offensichtliches Skalierungsproblem haben, sollten Sie genügend Einnahmen haben, um mehr Serverressourcen zu kaufen. Server sind sehr billig und Ihre Zeit ist sehr teuer. Mach dir keine Sorgen über die Optimierung der kleinen Dinge.

+0

Im Allgemeinen denke ich, dass dies mäßig gute Faustregeln sind, aber sie sind sehr geschäftsorientiert. Nicht alle Software ist in einem Geschäftskontext geschrieben. Weiter, sagen "frag diese Frage nicht, weil X und Y" ist nur ein bisschen besser als nur zu sagen "frag diese Frage nicht." –

5

Ich opfere Skalierbarkeit/Leistung mit Socket.IO, und alle diese offenen Verbindungen verwaltet es?

Wenn Sie Ihre Seite (dynamische Seite) sofort aktualisieren möchten, wenn neue Informationen verfügbar sind. Dann die Verbindung offen zu halten mit nicht-Blockierung io ist der effizienteste Weg, dies zu tun. Glücklicherweise verwendet node.js nicht blockierendes io. Das ist einer der Gründe, warum node.js so beliebt ist (und dass Sie in JavaScript programmieren können, welches die populärste Programmiersprache ist). Wenn Sie es wirklich (auch in der Zukunft) nicht benötigen, weil Ihre Website eher statisch ist (nicht in Echtzeit, wie Sie gesagt haben), dann spart das Schließen der Verbindung Ressourcen.

Würde die Verwendung von Backbone + ExpressJS Ressourcen freigeben, da keine offene Verbindungen vorhanden sind?

Ich würde die Kosten (Entwicklungszeit) betrachten, um Ihre Website mit Backbone/Express-Kombination gegen Derbyjs zu entwickeln.

Dann wieder wie Nate erwähnt Socket.io kann viele (1000+) gleichzeitige Verbindungen problemlos behandeln. Wenn es einfacher ist, mit derbyJS zu entwickeln, dann würde ich das verwenden. Wenn Sie diese Straße überqueren, können Sie immer beschließen, weitere Server hinzuzufügen oder Ihre Website neu zu gestalten, um die Express/Backbone-Kombination zu verwenden. Versuchen Sie zunächst, an einem Punkt zu kommen, an dem Nutzer Ihre Website mit dem geringsten Aufwand (Zeit zur Entwicklung) wertvoll finden.

PS: Ich denke, Sie sollten versuchen, Ihr System so modular wie möglich zu halten, so dass der Austausch von Derby.js für etwas anderes mit der geringsten Zeit erledigt werden kann.