我正计划为我的一个项目构建一个API。但是我正在寻找一种管理它以及管理服务器负载的好方法。
我最好只在一台服务器上创建所有内容,还是应该创建多个服务器?
想法:
如果我创建一台服务器而该服务器崩溃,则整个系统将崩溃。但是,如果我创建多个服务器来处理此问题,并且其中一台崩溃,那么只有那一部分会崩溃。
我如何做到这一点:
1)创建一个API ENDPOINT
2)当用户向该API ENDPOINT发送请求时,ENDPOINT将向包含特殊任务的正确服务器发送另一个请求,当该任务完成时,它将把数据返回给用户。
又名:
User => ENDPOINT => ENDPOINT 1,ENDPOINT 2,ENDPOINT 3,=> ENDPOINT =>用户
这是我应该怎么做吗?
P.S。我不知道这是不是正确的术语,但我正在尝试学习如何扩展ENDPOINTS / API /代码。
答案 0 :(得分:1)
关于负载均衡器,您应该使用特定的Web服务器应用程序来进行此操作,如nginx
或apache
。这种Web服务器工具已经实现了负载平衡机制,您只需要对其进行配置。
此外,我建议您将服务器包装到docker
图片中。这样,您可以使用Docker Swarm或Kubernetes来部署和扩展/缩小您的应用程序。管理服务,检查应用程序状态和部署新版本更加容易。
您可以将docker
与nginx
一起使用,其中每个docker容器都有您的应用程序实例,而nginx
将负责在您的实例之间重定向/分发您的请求。
答案 1 :(得分:0)
您基本上要寻找的是基于微服务的体系结构(或SOA)与整体组件之间的比较。
在微服务中,有多个服务执行特定任务。它们依次又用于执行复杂的任务。另一方面,Monoliths由一台大型服务器组成,该服务器可以完成所有任务,并且也是您指出的单点故障。
人们普遍同意,应在整体架构中构建项目,然后随着复杂性的增长而转移至微服务。 Martin Fowler's article很好地解释了这个概念。
这是因为与该体系结构相关联的某些缺点和折衷-例如不一致和延迟。
TLDR; 如果启动,请坚持使用一台服务器,当服务器变得复杂时,它会中断服务。