【问题标题】:Architecture for CPU intensive tasks with NodeJS & Socket.io使用 NodeJS 和 Socket.io 处理 CPU 密集型任务的架构
【发布时间】:2015-06-12 03:22:36
【问题描述】:

我目前正在考虑一个 NodeJS 应用程序,我想在其中使用 socket.io 在多个客户端之间进行通信。

该应用程序将由数百个客户端组成,这些客户端都在谷歌地图上拥有一个位置。我希望服务器为每个客户端处理,这些客户端彼此相距 200 米。如果我要在 nodeJS 中使用纯 JavaScript 来完成这一切,这会给服务器带来巨大的负载,而且我担心这会导致服务器在处理这个巨大的任务时暂停所有其他任务,这会导致所有通信在服务器执行 cpu 密集型任务时停止。

我的问题是,如何将 NodeJS 与 Socket.io 一起用于客户端之间的通信,并将更多 CPU 密集型任务移动到其他地方,以便在服务器执行 CPU 密集型任务时客户端之间的通信不会停止?

先谢谢了,请原谅我的英语!

布拉姆

【问题讨论】:

  • 我觉得这个问题对于一个有用的答案来说可能有点宽泛。也许如果您在 Node 中进行测试,您可以对多任务处理进行基准测试和评估您的担忧,并就您的方法提出一些更具体的问题?
  • 可能值得(也)研究优化的数据结构,这将使您想要执行的查询减少 CPU 密集度(对于地理空间查找,R-Tree's 非常常见且非常快)。

标签: javascript node.js sockets socket.io cpu


【解决方案1】:

考虑使用 pub/sub 工作队列模型,其中 socket.io 服务器只与客户端交互并将它们的数据持久化到数据库(redis 或其他),并且一个单独的工作进程集群将计算作业从队列中拉出,计算结果,并将它们写回,客户端服务器可以将它们传输到客户端。

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 2017-04-10
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多