如何在 Spring Boot Rest API 中处理每秒 1000 个请求?

ash*_*shu 5 java spring spring-boot

我是 Spring Boot 的新手。我们正在实现一个 Spring Boot 微服务应用程序。

由于spring boot使用嵌入式tomcat服务器,默认线程池为200。

那么增加处理 1000 个请求的能力的最佳方法是什么?

我们需要使其异步吗?

任何意见都将受到赞赏。

提前致谢。

Rak*_*oni 9

有硬件容量(RAM、CPU 等),因此您不能在池中设置任何数量的线程(例如您的情况为 1000)。它还取决于每个请求的执行时间。

为了处理高流量,您应该设置具有多个节点/实例的负载均衡器

最好在云服务器上使用Auto Scaling 。它将根据高负载(请求数量)增加实例,并在请求数量较少时再次减少实例。这是具有成本效益的。


小智 8

没有一个参数可以确保您的应用程序能够并行处理 1000 个请求。
这取决于很多因素,例如:

  1. 您的请求的平均执行时间是多少?例如,如果您的请求只需要纳秒返回,那么 X 个线程就足以满足 Y 个并行请求(即使 X<Y)。
  2. 可用资源:有时即使线程数大于并行请求数(X>Y),如果资源有限(例如RAM、处理能力、最大数据库连接数)等,也可能无法同时处理它们。

因此,在现实生活中,这一切都取决于许多因素(上面未涵盖),这些因素由软件架构负责,而软件架构又会照顾您的功能和非功能需求。因此,即使您的请求数量从 1000 更改为 10000,如果您的架构是可扩展的,它也会处理它。

知道现在要调整哪个参数可能就足够了,但对于未来,请查看软件架构中的质量属性https://en.wikipedia.org/wiki/List_of_system_quality_attributes