如何处理每秒1000个请求在春季启动休息API?



我是Spring boot的新手。我们正在实现一个spring启动微服务应用。

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

那么增加处理1000个请求的能力的最佳方法是什么呢?我们需要让它异步还是?

欢迎您的参与。

提前感谢。

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

要处理高流量,您应该设置Load Balancer与多个节点/实例。

最好使用自动缩放在云服务器上。它将根据高负载(请求数)增加实例,并在请求数较低时再次减少实例。

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

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

所以,在现实生活中,这一切都取决于很多因素(上面没有提到),这些因素由软件架构来处理,而软件架构又会处理你的功能需求和非功能需求。因此,即使您的请求数量从1000更改为10000,如果您的架构是可伸缩的,它也会处理好。

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

是不是太简单了?应用程序响应每个请求的时间少于200毫秒就足够了吗?(理论上)由于我们有200个线程,我们可以并行处理200个请求。得到1000rps/200 = 5。因此,每个线程需要在一秒钟内处理5个请求,即响应<= 200ms

最新更新