2009-07-22 12 views
7

Ich denke, diese Frage wurde viel gefragt. Ich weiß, Schienen können skalieren, weil ich daran gearbeitet habe und es ist super. An den PHP-Frameworks gibt es keinen Zweifel.Kosten der Skalierung Rails vs Kosten der Skalierung PHP vs Python Frameworks

Ich möchte nicht wissen, welche Frameworks besser sind.

Wie viel kostet die Skalierung von Rails und anderen Frameworks (PHP, Python), wenn man von einer großen App mit 1 Million Visits pro Monat ausgeht?

Das ist etwas, was ich oft gefragt werde. Ich kann den Leuten erklären, dass "Rails ziemlich gut skaliert", aber auf lange Sicht, was sind die Ökonomien?

Wenn jemand einige Metriken bereitstellen kann, wäre das großartig.

+2

Ich bin auch irgendwie neugierig, aber ich bezweifle wirklich, dass es eine konkrete Antwort auf diese Frage gibt. Es gibt zu viele Variablen. Site-Design, Wert der Programmiererzeit im Vergleich zur Maschinenzeit, etc. Ich denke, es gibt Beispiele für große Sites für die meisten Plattformen, –

Antwort

5

Ein wichtiger Faktor dabei ist, dass durch die Wahl des Frameworks der Datenbankzugriff nicht beeinflusst wird. Egal, welchen Ansatz Sie wählen, Sie legen Daten wahrscheinlich in eine relationale Datenbank. Dann stellt sich die Frage, wie effizient Sie die Daten aus der Datenbank holen können. Dies hängt hauptsächlich vom RDBMS (Oracle vs. Postgres vs. MySQL) und nicht vom Framework ab - mit der Ausnahme, dass eine Datenmapping-Bibliothek SQL möglicherweise ineffizient nutzt.

Für den reinen "Anzahl der Besuche" -Parameter ist die Frage wirklich, wie schnell Ihr HTML-Vorlagensystem funktioniert. Die Frage ist also: Wie viele Seiten pro Sekunde können Sie rendern? Ich würde dies zu den primären Metriken machen, um zu bestimmen, wie gut ein System skalieren würde.

Natürlich können verschiedene Seiten unterschiedliche Kosten haben; Für einige können Sie Caching verwenden, nicht aber für andere. Messen Sie die Skalierbarkeit so, teilen Sie Ihre 1 Million Besuche in billige und teure Seiten auf und messen Sie sie separat. Zusammen sollten sie eine gute Schätzung der Last geben, die Ihr System aufnehmen kann (oder die Anzahl der Systeme, die Sie benötigen, um die Nachfrage zu befriedigen).

Es gibt auch das Problem der Speichernutzung. Wenn Sie die Daten in SQL haben, sollte dies keine Rolle spielen - aber beim Caching müssen Sie möglicherweise auch die Skalierbarkeit berücksichtigen. Hauptspeicherverbrauch.

4

IMHO Ich denke nicht, dass die Kosten für die Skalierung zwischen diesen dreien unterschiedlich sein werden, weil keine von ihnen "Skalierbarkeitsbatterien" enthalten. Ich sehe nur keine großen architektonischen Unterschiede zwischen diesen drei Möglichkeiten, die einen signifikanten Unterschied in der Skalierung verursachen würden.

Mit anderen Worten, Ihre Anwendungsarchitektur wird dominieren, wie die Anwendung unabhängig von der drei Sprachen skaliert.

Wenn Sie Memory-Caching benötigen, verwenden Sie mindestens memcached (oder etwas Ähnliches, das mit allen drei Sprachen interagiert). Vielleicht helfen Sie Ihrer Skalierbarkeit mit nginx direkt von Memcache zu dienen, aber das wird natürlich nicht die Leistung von PHP/Perl/Python/Ruby ändern.

Wenn Sie MySQL oder PostgreSQL verwenden, müssen Sie Ihre Datenbank immer noch korrekt skalieren, unabhängig von der Sprache Ihrer App, und jedes Tool zum Starten von Clustering/Mirroring wird sich außerhalb Ihrer App befinden.

Ich denke in Bezug auf Speichernutzung Python (mit mod_wsgi Daemon-Modus) und Ruby (Enterprise Ruby mit Passagier/mod_rack) haben ziemlich gute Fußabdrücke mindestens vergleichbar mit PHP unter fcgi und wahrscheinlich besser als PHP unter mod_php (dh Apache MPM Prefork + PHP in allen Apache-Prozessen saugt viel Speicher).Wenn diese Frage interessant sein könnte, wird versucht, diese 3 Sprachen im Vergleich zu etwas wie Erlang zu vergleichen, wo Sie (angeblich) automatisch eingebaute Skalierbarkeit in allen Erlang-Prozessen automatisch haben, aber selbst dann haben Sie einen Engpass in der RDBMS-Datenbank Es sei denn, Ihre App passt gut in eine der Erlang-Datenbank-Möglichkeiten, z Couchdb.

1

Leider kenne ich keinen Kostenvergleich von Rails, PHP und Django. Aber ich kenne einen Kostenvergleich einiger Java Web Frameworks: Spring (9k $), Wicket (59k $), GWT (6k $) und JSF (49k $).

Sie haben die Original-Konferenz hier:

http://www.devoxx.com/display/DV11/WWW++World+Wide+Wait++A+Performance+Comparison+of+Java+Web+Frameworks

Dort finden Sie einen Beitrag über sie haben (kürzer):

http://blog.websitesframeworks.com/2013/03/web-frameworks-benchmarks-192/

Wenn Sie über diese Kosten zu infere versuchen . Sie können diese Daten mit dem von Techempower vorgeschlagen bencharmk überqueren:

http://www.techempower.com/benchmarks/

Also, wenn Sie wissen, Frühling ist ziemlich billig zu vergleichen, um Wicket und Django/Rails haben schlechtere Noten in Benchmarks als Wicket und Spring, ist es wahrscheinlich Mittel Sie werden höhere Kosten darstellen.

Ich hoffe, es hilft.

Verwandte Themen