2012-03-27 5 views
1

Ich habe oft gehört, dass die Bereitstellung einer traditionellen monolithischen Rails-App (dh keine interne Web-API, keine Nachrichtenwarteschlange, kein Redis/memcached-Server) zu mehreren Servern eine Reihe von Fehlern erzeugen kann sehr schwer zu debuggen, aber ich habe eine harte Zeit, mit einigen konkreten Beispielen trotz ein paar Stunden googelnProbleme mit der Bereitstellung von Rails-Servern auf mehrere Hosts

einige offensichtliche Probleme kommen, die ich denken kann, sind:

Beobachter - wird wahrscheinlich nicht richtig funktionieren da die Beobachtung nur auf einem Server und nicht auf allen Servern erfolgt (vorausgesetzt, es gibt keine Nachrichtenwarteschlange)

Sitzungen - müssten diese wahrscheinlich in der Datenbank speichern, die ihren eigenen Host benötigen würde

Caches - alle Kehrmaschinen würden Probleme haben, die Ungültigkeiten zwischen Servern verbreiten.

Möchte jemand anderes beitragen? Ich würde wirklich alle Artikel schätzen, auf die andere vielleicht gestoßen sind oder nur allgemeine Weisheit :)

Antwort

0

Beobachter sind nur Code-Rückrufe. Sie werden auf jedem Prozess auf jedem Server ausgeführt.

Sitzungen sind in den letzten Jahren standardmäßig im Cookie-Speicher ausgeführt worden. Also mehrere Server sind kein Problem. Wenn Sie nicht genügend Platz in Ihrem Cookie haben, schlage ich vor, dass Sie etwas falsch machen.

Cache-Invalidierung ist in der Tat ein Problem. Aber es ist immer. Eine Lösung besteht darin, Ihren Cache in einen eigenständigen Dienst zu zerlegen. Seiten wie Facebook haben riesige Farmen von Memcache

Ich denke, Skalierung und Clustering ist immer ein hartes Problem. Aber das scheint ein altes Argument gegen Schienen zu sein. In den letzten Jahren haben Schienen in dieser Hinsicht schon etwas Glanz gefunden. Mit ec2, nosql und Serverautomatisierung wird es in der Community zur Normalität.

+0

Ja ich glaube total Rails kann kein Problem heraufskalieren, ich arbeite gerade mit einer alten Rails 2.3 App und versuche andere Leute davon zu überzeugen, kleine Schritte zur Skalierung zu machen :) – Kabal458

+0

Beobachter machen Sinn - das Problem wird aufkommen Wenn Sie erwarten, dass auf jedem Server eine Beobachtung auftritt, ist das Caching ein gutes Beispiel dafür, aber das ist ein anderes Problem. Sitzung ich nicht vollständig folgen. Ich nehme an, Sie sagen, dass alle Sitzungsdaten vollständig im Cookie gespeichert sind - was ein guter Grund ist, sich selbst an den DB Store zu wenden. Ich denke, es würde brechen, wenn Sie etwas wie FileStore verwenden. – Kabal458

+0

Wenn Sie den Cookie-Speicher verwenden, besteht keine Verbindung zwischen Server und Browser. Wenn Ihre Daten klein genug sind, warum verwenden Sie sie dann nicht? –

Verwandte Themen