2016-11-27 61 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的一个项目与这么多的用户。事件如果它正在运行一个节点实例集群,它仍然是完全停机的单点故障。 –

相关问题