nginx/node.js/postgres, Skalierbarkeitsprobleme?

nginx/node.js/postgres, Skalierbarkeitsprobleme?

Ich habe eine App laufen mit:

  • eine Instanz von Nginx als Frontend (das statische Dateien bereitstellt)
  • ein Cluster von Node.js-Anwendungen für das Backend (unter Verwendung von Cluster- und ExpressJS-Modulen)
  • eine Instanz von Postgres als DB

Ist diese Architektur ausreichend, wenn die Anwendung Skalierbarkeit benötigt (dies gilt nur für HTTP-/REST-Anfragen) für:

  • 500 Anfragen pro Sekunde (jede Anfrage ruft nur Daten aus der Datenbank ab. Diese Daten können mehrere KB groß sein, und nach dem Abrufen sind keine großen Berechnungen erforderlich).

  • 20000 Benutzer gleichzeitig verbunden

Wo könnten die Engpässe liegen?

Antwort1

Eine Instanz von Nginx kann problemlos Tausende kleiner statischer Dateien pro Sekunde verarbeiten.

Die Skalierbarkeit der App-Ebene hängt mehr von Ihrer App als von node.js ab – wenn Dateien/Sitzungsdaten usw. lokal gespeichert werden, könnte es knifflig werden, aber wenn Sie den gesamten Speicher an einem zentralen Ort wie der Datenbank platzieren (oder vielleicht etwas wie Redis zum Speichern von Sitzungsdaten), sollte die Skalierung der App-Ebene durch Hinzufügen weiterer Knoten einfach sein.

Die Datenbank ist fast immer am schwierigsten zu skalieren. Wenn Sie hauptsächlich Lesevorgänge ausführen, bietet Postgres 9.1 einige wirklich nette Hot-Standby-Funktionen, mit denen Sie eine Masterdatenbank mit Lese-/Schreibzugriff und mehrere schreibgeschützte Slaves haben können, die den Großteil der Lesevorgänge bewältigen können.

Das Erweitern eines schreibintensiven Datenbanksystems ist wahrscheinlich das schwierigste Skalierbarkeitsproblem. Wenn ein extrem leistungsstarker Datenbankserver nicht mithalten kann, müssen die meisten Leute ihre Apps komplett neu überdenken und neu schreiben (es sei denn, das war von Anfang an geplant, aber die Planung mehrerer Masterdatenbanken wird viele Dinge von Anfang an schwieriger und langsamer machen und ist nur sehr selten nötig – das Stackoverflow-Netzwerk basiert meines Wissens vollständig auf einer Datenbank).

verwandte Informationen