在多个服务器之间分配API的负载

时间:2019-05-13 17:41:47

标签: node.js api express server endpoint

我正计划为我的一个项目构建一个API。但是我正在寻找一种管理它以及管理服务器负载的好方法。

我最好只在一台服务器上创建所有内容,还是应该创建多个服务器?

想法:

如果我创建一台服务器而该服务器崩溃,则整个系统将崩溃。但是,如果我创建多个服务器来处理此问题,并且其中一台崩溃,那么只有那一部分会崩溃。

我如何做到这一点:

1)创建一个API ENDPOINT

2)当用户向该API ENDPOINT发送请求时,ENDPOINT将向包含特殊任务的正确服务器发送另一个请求,当该任务完成时,它将把数据返回给用户。

又名:

User => ENDPOINT => ENDPOINT 1,ENDPOINT 2,ENDPOINT 3,=> ENDPOINT =>用户

这是我应该怎么做吗?

P.S。我不知道这是不是正确的术语,但我正在尝试学习如何扩展ENDPOINTS / API /代码。

2 个答案:

答案 0 :(得分:1)

关于负载均衡器,您应该使用特定的Web服务器应用程序来进行此操作,nginxapache 。这种Web服务器工具已经实现了负载平衡机制,您只需要对其进行配置。

此外,我建议您将服务器包装docker图片中。这样,您可以使用Docker Swarm或Kubernetes来部署和扩展/缩小您的应用程序。管理服务,检查应用程序状态和部署新版本更加容易。

您可以将dockernginx一起使用,其中每个docker容器都有您的应用程序实例,而nginx将负责在您的实例之间重定向/分发您的请求。

答案 1 :(得分:0)

您基本上要寻找的是基于微服务的体系结构(或SOA)与整体组件之间的比较。

在微服务中,有多个服务执行特定任务。它们依次又用于执行复杂的任务。另一方面,Monoliths由一台大型服务器组成,该服务器可以完成所有任务,并且也是您指出的单点故障。

您应该转向微服务吗?

人们普遍同意,应在整体架构中构建项目,然后随着复杂性的增长而转移至微服务。 Martin Fowler's article很好地解释了这个概念。

这是因为与该体系结构相关联的某些缺点和折衷-例如不一致和延迟。

TLDR; 如果启动,请坚持使用一台服务器,当服务器变得复杂时,它会中断服务。