2012-11-02 9 views
12

Ich plante die Bereitstellung von Meteor auf meinen Amazon AWS EC2 Servern, aber ich möchte auch mehrere Instanzen des Servers gleichzeitig ausführen, um mehr Clients zu bedienen. Gibt es einen geeigneten Weg, dies in Meteor zu tun, ohne die Fähigkeit der Kunden zu brechen, über Aktualisierungen ihrer Sammlungen informiert zu werden?Laufender Meteor in einem Cluster und Echtzeitänderungen

Antwort

18

Beim Ausführen mehrerer Meteor-Serverprozesse sind zwei Hauptprobleme zu beachten.

  1. Sitzungsaffinität des Clients. Clients verwenden die SockJS-Bibliothek, um sich mit dem Meteor-Server zu verbinden, normalerweise mithilfe einer langen Abfragestrategie, die sich immer wieder mit dem Server verbindet. Der Serverprozess enthält den Status, der jedem Client zugeordnet ist. Daher ist es wichtig, dass die Verbindung eines bestimmten Clients nicht zwischen Servern hin- und herwechselt, oder dass der Server denkt, dass er mit einem neuen Client kommuniziert und den gesamten Subskriptionsstatus erneut sendet.

  2. Ungültigkeitsfälle der Datenbank koordinieren. Jedes Mal, wenn ein Client einen Datenbank-Schreibvorgang ausführt, führt der Serverprozess eine Neuberechnung durch und sendet Aktualisierungen an jeden anderen betroffenen Client. Clients, die mit einem anderen Server verbunden sind, sehen die Änderung jedoch erst, wenn dieser Serverprozess die 10-Sekunden-Mongo-Abrufschleife ausführt. Für einige Anwendungen ist es in Ordnung, wenn die meisten Clients 10 Sekunden zurückliegen. Wenn Ihre Anwendung etwas mehr Echtzeit benötigt, müssen Sie eine eigene Interprozesskommunikation zwischen Meteor-Serverprozessen implementieren.

+2

siehe meine Antwort unten für die ** Koordinierende Datenbank Ungültigmachungen * * mit [meteor-cluster] (https://github.com/arunoda/meteor-cluster) –

+1

Können Sie bestätigen, dass (2) nach der Version 0.7.0, die Oblog-Tailing verwendet, kein Problem mehr ist? – Doug