【问题标题】:Communicating between different application servers in a multi tiered application在多层应用程序中的不同应用程序服务器之间进行通信
【发布时间】:2016-03-11 19:18:18
【问题描述】:

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

鉴于这种情况(以及任务 A(网络密集型)和 B(CPU 密集型)的不同性质),我想将任务 A 和任务 B 部署在不同的服务器集上,以便可以扩大两者的规模或下不顾对方。

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

【问题讨论】:

    标签: web-applications architecture n-tier-architecture multi-tier


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的建议。但这里的情况是客户端永远不会直接访问 taskB。它总是通过taskA。在这种情况下,我不确定应用程序服务器前面的 Apache/Nginx 是否是正确的方法。需要你的建议。此外,这两个服务器都将用 NodeJS 编写(截至目前)。
    • 那么这很简单,在另一台服务器上公开 TaskB 作为 url,并使用 JSON 作为来自 TaskA 的有效负载通过 HTTP 调用它。在 NodeJS 中使用 JSON 很容易。
    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2014-06-25
    • 1970-01-01
    相关资源
    最近更新 更多