2016-11-27 52 views
1

有大量教程如何使用socket.io和node.js開發聊天應用程序,毫無疑問事件驅動的優點是節點具有做聊天應用程序的優勢。但是最近這種想法浮現在我的腦海裏,當我部署應用程序時,如何維持我的聊天應用程序?想象有成千上萬的用戶正在積極聊天。node.js應用程序部署使用pm2無宕機

本文中https://futurestud.io/tutorials/pm2-cluster-mode-and-zero-downtime-restarts明確指出集羣技術需要特別小心,嗯有什麼辦法可以解決這個問題嗎?

回答

0

PM2不適合這個。這很棒,但對於那種協調來說太有限了。

最好的解決方案是在負載均衡器後面架構您的服務器,並運行應用程序的並行實例輪流處理傳入的請求。這是容器Docker最常見的用例之一。

一個很好的例子(我目前正在一個基於socket.io聊天的約會應用程序中使用的例子)是中間層的MarathonMarathon LB。我們讓它們在AWS中運行,位於Elastic Load Balancer(ELB)之後。

實際上,您可以通過Heroku獲得類似的內容,但可能會稍微困難一些,因爲您將受到Load Balancer功能的限制。在socket.io中,您可以使用Redis會話驅動程序來處理分佈式會話。

+0

重新啓動需要幾秒鐘。我測試了我的聊天應用。它照常工作。我認爲它會有分秒的停機時間,但之前建立的套接字並未崩潰。 –

+0

使用redis進行會話的socket.io?你需要使用socket.io進行會話? –

+1

您是對的,但如果您需要更新PM2本身,停機時間會比此更長。如果您需要更新NodeJS itsel,則相同。如果您因任何原因需要重新啓動機器,則會丟失所有羣集實例。這就是爲什麼我說PM2不是這個最好的工具(並得到了一個downvote)。這是一個很好的開始,但正如你所說的,「成千上萬的用戶」依賴於它。我永遠不會,永遠,用PM2的一個項目與這麼多的用戶。事件如果它正在運行一個節點實例集羣,它仍然是完全停機的單點故障。 –

相關問題