0

我正在编写一个节点应用程序,它有两个主要任务。假设任务 A(从缓存层读取并响应请求)和 B(操作服务器响应未由任务 A 处理的请求)。将来我知道任务 A 将是更常用的任务,而任务 B 将仅限于新请求(几乎占总负载的 10%)。

鉴于这种情况(以及任务 A(网络密集型)和 B(CPU 密集型)的不同性质),我考虑将任务 A 和任务 B 部署在不同的服务器集上,以便无论另一个。

这种方法对于所描述的场景是否正确?如果是,那么在任务 A 和 B 的不同层之间进行通信的一般做法是什么。假设所有请求都需要立即完成(排除使用队列的延迟执行)。

4

1 回答 1

0

这个问题的答案将取决于很多因素,包括您的技术堆栈、您的负载配置文件(您尝试扩展多高?)以及您的网络基础设施。

我将假设最简单的情况,并且您有一些正在侦听 URL 的任务。/taskA 和 /taskB。您通常通过某种调度层来解决这个问题,它将不同的 URL 请求发送到不同的后端服务器。

例如,将 Apache 或 NGinix 作为反向代理放在应用程序服务器前,并将请求转发到正确的后端服务器进行服务。

于 2016-03-11T19:34:24.210 回答