2012-11-02 42 views
12

我打算將Meteor部署到我的Amazon AWS EC2服務器,但我還想同時運行服務器的多個實例以爲更多客戶端提供服務。在沒有破壞客戶更新其集合更新的能力的情況下,是否有適當的方式在Meteor中做到這一點?在集羣中運行流星和實時更改

回答

18

運行多個Meteor服務器進程時需要考慮兩個主要問題。

  1. 客戶端會話關聯性。客戶端使用SockJS庫連接回Meteor服務器,通常使用長輪詢策略,每隔一段時間重新連接到服務器。服務器進程保存與每個客戶端關聯的狀態。因此,給定客戶端的連接不會在服務器之間反彈是非常重要的,否則服務器會認爲它正在與新客戶端通話並重新發送所有訂閱狀態。

  2. 協調數據庫失效。無論何時客戶端發出數據庫寫入,服務器進程都會運行重新計算並將更新推送到任何其他受影響的客戶端。但連接到不同服務器的客戶端在該服務器進程運行10秒的Mongo輪詢循環之前不會看到更改。對於某些應用程序來說,讓大多數客戶端落後10秒是可以的。如果您的應用程序需要更實時的東西,那麼您必須在Meteor服務器進程之間實現您自己的進程間通信。

+2

看到我的回答如下的**協調數據庫廢票* *與[meteor-cluster](https://github.com/arunoda/meteor-cluster) –

+1

你能否證實(2)在使用oplog拖尾的0.7.0發佈後不再是一個問題? – Doug