基于线程池状态扩展SpringBoot App

问题描述

我们有一个Spring Boot微服务,应该从旧/旧系统中获取一些数据。此微服务公开了外部现代REST API。有时,我们必须向旧系统发出7-10个请求,以获取单个API调用所需的所有数据。不幸的是,我们不能使用Reactor / WebClient ,而必须坚持使用 webservicetemplate 发出这些“旧版”调用。我们也不能使用Reactive Spring WebClient - Making a SOAP call

在Kubernetes中扩展此类微服务的最佳方法是什么?我们非常担心用于并行 webservicetemplate 调用的线程池将很快耗尽,但是我不确定基于活动线程数创建和公开自定义指标/线程池大小是个好主意。

任何建议都会有所帮助。

解决方法

  1. 启用Prometheus exporter in Spring

  2. 确保已删除指标。您将要注意threadpool_size指标。请参阅您的k8s / prometheus发行文档,以获取适合您的prometheus服务发现。

  3. 根据Prometheus指标编写水平容器自动缩放器(HPA):

根据您使用的k8s发行版,您可能有不同的方式来获取Prometheus和Prometheus发现: