基于线程池状态扩展 Spring Boot App

Scale SpringBoot App based on Thread Pool State

我们有一个 Spring 引导微服务,它应该从旧/遗留系统中获取一些数据。此微服务公开了外部现代 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 指标编写水平 pod 自动缩放器 (HPA):

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