【问题标题】:do multiple web dynos make sense in a real-time socket.io node.js app?多个网络测功机在实时 socket.io node.js 应用程序中有意义吗?
【发布时间】:2015-04-17 18:20:06
【问题描述】:

我正在为 heroku 上的实时聊天应用程序开发 node.js 后端。当我正在研究 dyno 和扩展 node.js 后端的方法时,我可以看到 dyno 在 http 服务器上的优势,因为每个 dyno 都可以独立于其他 dyno(这在大多数情况下都可以)。

我的问题是:如何扩展和处理实时 socket.io 应用程序的负载平衡?从我正在阅读的内容来看,测功机是“沙盒化”的容器:每个测功机都运行自己的进程,独立于其他测功机..那么处理问题的最佳方法是什么?

我正在考虑一个解决方案,但它一点也不优雅或漂亮:

我可以有多个后台作业,其中包含可以检查该实例上连接的用户的新消息的 crons。但我认为必须有更好的解决方案。

【问题讨论】:

    标签: node.js heroku socket.io load-balancing dyno


    【解决方案1】:

    这个问题可以概括为如何让多个节点进程共享数据,无论它们在同一个服务器还是不同服务器上。据我所知,传统观点是让所有进程使用一个通用数据库(Postgres、Mongo、Redis)来读写它们的数据。只需根据您的需要使用正确的数据库即可。

    另一个选项是MessengerJS,它允许进程间通信。我不知道这对您的应用程序是否是个好主意,因为这样您的所有测功机最终都会包含聊天数据的副本。然后由您来确保所有内容在测功机之间同步和一致。我更倾向于将数据库作为单一的事实来源。

    【讨论】:

      猜你喜欢
      • 2016-07-08
      • 1970-01-01
      • 2013-04-04
      • 2017-04-06
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多