2012-11-02 10 views
12

Stavo pianificando l'implementazione di Meteor sui miei server Amazon AWS EC2 ma vorrei anche eseguire più istanze del server allo stesso tempo per servire più client. Esiste un modo corretto per farlo in Meteor senza compromettere la possibilità per i clienti di aggiornare gli aggiornamenti delle loro collezioni?Meteor in esecuzione in un cluster e modifiche in tempo reale

risposta

18

Ci sono due problemi principali da considerare quando si eseguono più processi del server Meteor.

  1. Affinità sessione client. I client utilizzano la libreria SockJS per connettersi di nuovo al server Meteor, in genere utilizzando una strategia di polling lunga che si ricollega al server ogni tanto. Il processo del server contiene lo stato associato a ciascun client. Quindi è importante che la connessione di un dato client non rimbalzi tra i server, altrimenti il ​​server penserà che stia parlando con un nuovo client e rinvierà tutto lo stato dell'abbonamento.

  2. Coordinazione di invalidazioni del database. Ogni volta che un client invia una scrittura al database, il processo del server esegue un ricalcolo e invia aggiornamenti a qualsiasi altro client interessato. Ma i client connessi a un server diverso non vedranno la modifica finché quel processo server non eseguirà il loop di polling di 10 secondi. Per alcune applicazioni va bene avere la maggior parte dei client in ritardo di 10 secondi. Se la tua applicazione richiede qualcosa in più in tempo reale, dovrai implementare la tua comunicazione interprocessuale tra i processi del server Meteor.

+2

vedere la mia risposta qui sotto per le invalidazione di database ** di coordinamento * * con [meteor-cluster] (https://github.com/arunoda/meteor-cluster) –

+1

Puoi confermare che (2) non è più un problema postare la versione 0.7.0 che usa tailing oplog? – Doug