当应用程序复制到 Kubernetes pod 中时,在 Spring boot 中同步 @Scheduled 方法

问题描述 投票:0回答:1

示例场景: 我有两个 API(帐户 API 和向用户公开的 API),其中帐户 API 将为我提供帐户列表(最小大小大约为 500,并且当添加更多帐户时可能会增加)。我想根据过滤器获取帐户并将其他 API 中的数据公开给用户。

我正在使用 Spring @scheduled 来安排每 30 分钟获取一次帐户 API 的作业。

在单个 Pod 中,调度程序将轻松执行作业。

当应用程序复制到 Kubernetes 中的三个 Pod 时,所有调度程序将同时唤醒,这是调度程序作业的重复。

预期行为:

我希望调度程序以同步方式工作,如果一个帐户正在由一个调度程序处理,则另一个调度程序应该处理下一个帐户。基本上,我希望调度程序像多线程程序一样工作。

比如调度程序 1 处理 200 个帐户,调度程序 2 处理 200 个帐户,调度程序 3 处理 100 个帐户。

我是Spring boot应用程序开发的新手,想知道是否可以完成上面的事情。

我读到了 Shedlock,但它一次只能运行一个调度程序。但我喜欢使用所有调度程序并更快地处理帐户

spring spring-boot synchronization spring-scheduled shedlock
1个回答
0
投票

我们必须实现一个轻量级的 cron 服务来处理数据平衡(您的案例中的帐户)并使用所需的信息调用 pod。

© www.soinside.com 2019 - 2024. All rights reserved.