首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring引导API --如何随着用户的增长而扩展应用程序

Spring引导API --如何随着用户的增长而扩展应用程序
EN

Stack Overflow用户
提问于 2019-05-03 18:56:07
回答 2查看 2.4K关注 0票数 1

我正在用Spring引导创建一个API,这个API可能会有请求峰值。

所以让我们进入最坏的情况。想象一下,突然间我有了200万个API请求。

,我能做什么才能处理这件事?

我读过一些关于排队和工人的文章,但我不知道这是否是最好的方法。

有什么方法可以用AWS?来做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-03 19:40:41

这是一个很难回答的问题。首先,您的应用程序真的需要在峰值时扩展到200万个API请求吗?我之所以这么问,是因为它很容易设计出一个“处理未来规模”的解决方案,它最终会有一点小问题,甚至无法很好地处理当前的规模。

但假设您真的会有大量的请求高峰,目前的微服务方法(或流行词?)是处理这些高需求时期的一种很流行的方法。基本上,您可以将应用程序分成更小的、独立的服务(“microservices”),这些服务可以更容易地按需要进行缩放。

然后,可以使用诸如库伯内斯亚马逊ECS之类的工具,将单个微服务向上或向下缩放,以匹配负载。

关于Spring与此相关的地方,Spring有一组名为春云的方便的技术--您也会注意到Spring (虽然Spring一般也可以在裸金属服务器、Docker、Kubernetes等上很好地工作)。一年前,我将一个简单的Spring云/微服务演示放在Github上,它展示了不同的Spring驱动的微服务是如何结合在一起的,您可能会发现这是有用的。

使用microservices的另一个好处是,您可以很容易地交换特定服务所用的语言,特别是如果微服务以通用格式(例如通过REST请求进行JSON )彼此“对话”的话。因此,如果您有10个不同的微服务,都是由Spring Boot提供的,但是您发现其中有几个更好地用另一种语言编写,您可以重写它们:只要它们以相同的方式发送和接收数据,那么系统的其他部分就不需要关心了。

好吧,这是很多时髦的词和新的概念。如果我能澄清任何问题,请随意提问,但是microservices + kubernetes/AWS是一个流行的解决方案。

然而,其他可能同样奏效的办法是:

  1. Serverless --在这里,您可以使用大量云提供商的工具和解决方案来支持您的webapp,包括lambdas,而不是将您的应用程序托管在传统的服务器/VM上。本媒体教程给出了关于无服务器的简单介绍。
  2. Monoliths --这是一个传统的web应用程序,它是一个单一的、庞大的、扩展的代码库,但这并不意味着您只能运行它的一个实例(即仍然可以缩放它)。这个网站就是是一个成功的可伸缩的独角兽。
票数 3
EN

Stack Overflow用户

发布于 2019-05-03 19:33:16

你的问题非常广泛,因为有许多不同的解决方案:

1)使用负载均衡器,并具有应用程序的多个实例

2)使用容器化工具(如docker和kubernetes )根据当前负载增加实例数量。您基本上可以按需进行缩放。

3)我们不知道你的应用程序到底做了什么:是读重,写重吗?用户会下载内容吗?这个问题的答案会改变一个特定的解决方案是否可行。

4)您可以使用像RabbitMQ这样的信使队列来帮助在不同的服务之间分配负载。您可以让多个服务从这个队列中读取,并在同一个time...but上再次执行操作,这取决于您的应用程序实际将做什么。

检查AWS EC2和弹性豆柄。您还可以使用nginx获得一个简单的负载均衡器并运行。祝好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55975674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档