2016-11-27 2 views
1

Es gibt Tonnen von Tutorials, wie man Chat-Anwendung mit socket.io und node.js zu entwickeln und ohne Zweifel ereignisgesteuerte Vorteil von Knoten hat den Vorteil, Chat-Anwendung zu tun. Aber vor kurzem kam mir dieser Gedanke in den Sinn. Wie kann ich meine Chat-App aufrechterhalten, wenn ich die App bereitstelle? Stellen Sie sich vor, dass tausende von Benutzern aktiv darin chatten.node.js App-Bereitstellung mit PM2 ohne Ausfallzeiten

in diesem Artikel klar sagen, dass Cluster-Technologie erfordert zusätzliche Sorgen, Hmm gibt es eine Möglichkeit, dieses Problem anzugehen?

Antwort

0

PM2 ist nicht das richtige Werkzeug dafür. Es ist großartig, aber zu begrenzt für diese Art von Orchestrierung.

Die beste Lösung ist, Ihren Server hinter Load Balancer zu strukturieren und parallele Instanzen der Anwendung auszuführen, die abwechselnd die eingehenden Anforderungen verarbeiten. Dies ist einer der häufigsten Anwendungsfälle für Container wie Docker.

Ein gutes Beispiel (das, das ich derzeit in einer Dating-App mit einem Socket.io basierten Chat unter Produktion verwendet) ist die Mesosphäre Marathon und Marathon LB. Wir haben sie in AWS laufen, hinter einem Elastic Load Balancer (ELB).

Sie können tatsächlich so etwas wie dies mit Heroku bekommen, kann aber ein wenig schwieriger sein, weil Sie durch ihre Load Balancer Funktionen beschränkt werden. In socket.io können Sie einen Redis-Sitzungstreiber verwenden, um die verteilten Sitzungen zu behandeln.

+0

Neustart dauert etwa ein paar Sekunden. Ich habe meine Chat-App getestet. es funktionierte wie immer. Ich denke, es wird für einen Bruchteil einer Sekunde Ausfallzeit haben, aber der vorher etablierte Sockel ist nicht zusammengebrochen. –

+0

socket.io mit redis für Sitzung? Sie brauchen eine Sitzung mit socket.io? –

+1

Sie haben Recht, aber wenn Sie die PM2 selbst aktualisieren müssen, ist die Ausfallzeit größer. Wenn Sie das NodeJS-itsel aktualisieren müssen, das gleiche. Wenn Sie den Computer aus irgendeinem Grund neu starten müssen, gehen alle Clustered-Instanzen verloren. Deshalb habe ich gesagt, PM2 ist nicht das beste Werkzeug dafür (und bekam einen Downvote). Es ist ein guter Anfang, aber wie Sie sagten, "Tausende von Benutzern" verlassen sich darauf. Ich würde nie, jemals, PM2 für ein Projekt mit so vielen Benutzern verwenden. Ereignis, wenn es einen Cluster von Knoteninstanzen ausführt, ist es immer noch ein einzelner Fehlerpunkt weg von der vollständigen Ausfallzeit. –

Verwandte Themen