Java Spring boot API-如何随着用户的增长扩展应用程序
我正在用Spring boot制作一个API,它可能会有请求峰值 让我们进入最坏的情况。想象一下,突然我有200万个API请求 我能做些什么来处理这个问题? 我读了一些关于排队和工人的文章,但我不知道这是否是最好的方法Java Spring boot API-如何随着用户的增长扩展应用程序,java,spring,spring-boot,scale,Java,Spring,Spring Boot,Scale,我正在用Spring boot制作一个API,它可能会有请求峰值 让我们进入最坏的情况。想象一下,突然我有200万个API请求 我能做些什么来处理这个问题? 我读了一些关于排队和工人的文章,但我不知道这是否是最好的方法 有什么办法可以用AWS实现吗?您的问题非常广泛,因为有很多不同的解决方案: 1) 使用负载平衡器并拥有多个应用程序实例 2) 根据当前负载,使用docker和kubernetes等容器化工具来增加实例数量。您基本上可以根据需要进行扩展 3) 我们不知道你的应用程序到底做了什么:它
有什么办法可以用AWS实现吗?您的问题非常广泛,因为有很多不同的解决方案: 1) 使用负载平衡器并拥有多个应用程序实例 2) 根据当前负载,使用docker和kubernetes等容器化工具来增加实例数量。您基本上可以根据需要进行扩展 3) 我们不知道你的应用程序到底做了什么:它是读重还是写重?用户会下载内容吗?这个问题的答案可能会改变具体解决方案是否可行 4) 您可以使用RabbitMQ之类的信使队列来帮助跨不同服务分配负载。您可以让多个服务从该队列读取数据并同时执行操作……但这取决于您的应用程序实际执行的操作
查看AWS EC2和Elastic Beanstalk。您还可以使用nginx启动并运行一个简单的负载平衡器。祝你好运你的问题非常广泛,因为有很多不同的解决方案: 1) 使用负载平衡器并拥有多个应用程序实例 2) 根据当前负载,使用docker和kubernetes等容器化工具来增加实例数量。您基本上可以根据需要进行扩展 3) 我们不知道你的应用程序到底做了什么:它是读重还是写重?用户会下载内容吗?这个问题的答案可能会改变具体解决方案是否可行 4) 您可以使用RabbitMQ之类的信使队列来帮助跨不同服务分配负载。您可以让多个服务从该队列读取数据并同时执行操作……但这取决于您的应用程序实际执行的操作
查看AWS EC2和Elastic Beanstalk。您还可以使用nginx启动并运行一个简单的负载平衡器。祝你好运这总是一个棘手的问题。首先,你的应用程序真的需要在峰值时扩展到200万个API请求吗?我这样问是因为很容易过度设计一个“处理未来规模”的解决方案,结果导致有点问题,甚至不能很好地处理当前规模 但是,假设您真的会有大量的请求高峰,那么当前的微服务方法(或流行语?)是处理这些高需求时期的一种非常流行的方法。基本上,您可以将应用程序拆分为更小、自包含的服务(“微服务”),这些服务可以根据需要更容易地进行扩展 然后,可以使用或之类的工具放大或缩小单个微服务以匹配负载 关于Spring与此的关系,Spring有一套方便的技术,称为——你也会注意到Spring Cloud AWS(尽管Spring Cloud通常也可以在裸机服务器、Docker、Kubernetes等上正常工作)。一年前,我在Github上做了一个简单的演示,展示了不同的Spring驱动的微服务如何组合在一起,您可能会发现这很有用 微服务的另一个好处是,您可以相当轻松地交换编写特定服务的语言,特别是如果微服务以通用格式(如通过REST请求的JSON)相互“交谈”的话。因此,如果你有10种不同的微服务,都是由Spring Boot提供动力的,但是你发现其中有两种是用另一种语言编写的,你可以重写它们:只要它们以相同的方式发送和接收数据,那么系统的其他部分就不必在意 好吧,这是很多流行语和新概念。如果我能澄清任何问题,请随时提问,但microservices+kubernetes/AWS是一种流行的解决方案 然而,其他可能同样有效的方法有:
这总是一个很难回答的问题。首先,你的应用程序真的需要在峰值时扩展到200万个API请求吗?我这样问是因为很容易过度设计一个“处理未来规模”的解决方案,结果导致有点问题,甚至不能很好地处理当前规模 但是,假设您真的会有大量的请求高峰,那么当前的微服务方法(或流行语?)是处理这些高需求时期的一种非常流行的方法。基本上,您可以将应用程序拆分为更小、自包含的服务(“微服务”),这些服务可以根据需要更容易地进行扩展 然后,可以使用或之类的工具放大或缩小单个微服务以匹配负载 关于Spring与此的关系,Spring有一套方便的技术,称为——你也会注意到Spring Cloud AWS(尽管Spring Cloud通常也可以在裸机服务器、Docker、Kubernetes等上正常工作)。一年前,我在Github上做了一个简单的演示,展示了不同的Spring驱动的微服务如何组合在一起,您可能会发现这很有用 微服务的另一个好处是你可以