使用 NodeJS 和 Socket.io 的 CPU 密集型任务的架构
Architecture for CPU intensive tasks with NodeJS & Socket.io
我目前正在考虑一个 NodeJS 应用程序,我想在其中使用 socket.io 在多个客户端之间进行通信。
该应用程序将包含数百个客户端,这些客户端在 google 地图上都有一个位置。我希望服务器为每个客户端进行处理,这些客户端彼此之间的半径为 200 米。如果我在 nodeJS 中的 javascript 中做这一切,这会给服务器带来巨大的负载,我担心这会导致服务器在处理这个巨大的任务时暂停所有其他任务,这会导致当服务器正在执行 cpu 密集型任务时,所有通信都将停止。
我的问题是,如何将 NodeJS 与 Socket.io 纯粹用于客户端之间的通信,并将更 CPU 密集的任务转移到其他地方,以便客户端之间的通信不会停止,同时服务器正在执行 cpu 密集型任务?
提前致谢,请原谅我的英语!
布拉姆
考虑使用 pub/sub 工作队列模型,其中 socket.io 服务器仅与客户端交互并将其数据持久保存到数据库(redis 或其他)和一个单独的工作进程集群拉取计算作业离开队列,计算结果,并将它们写回,客户端服务器可以将它们传输给客户端。
我目前正在考虑一个 NodeJS 应用程序,我想在其中使用 socket.io 在多个客户端之间进行通信。
该应用程序将包含数百个客户端,这些客户端在 google 地图上都有一个位置。我希望服务器为每个客户端进行处理,这些客户端彼此之间的半径为 200 米。如果我在 nodeJS 中的 javascript 中做这一切,这会给服务器带来巨大的负载,我担心这会导致服务器在处理这个巨大的任务时暂停所有其他任务,这会导致当服务器正在执行 cpu 密集型任务时,所有通信都将停止。
我的问题是,如何将 NodeJS 与 Socket.io 纯粹用于客户端之间的通信,并将更 CPU 密集的任务转移到其他地方,以便客户端之间的通信不会停止,同时服务器正在执行 cpu 密集型任务?
提前致谢,请原谅我的英语!
布拉姆
考虑使用 pub/sub 工作队列模型,其中 socket.io 服务器仅与客户端交互并将其数据持久保存到数据库(redis 或其他)和一个单独的工作进程集群拉取计算作业离开队列,计算结果,并将它们写回,客户端服务器可以将它们传输给客户端。