java spring boot 微服务中的调度程序

use*_*421 2 java scheduler spring-boot microservices

我们有一个使用 Spring boot 编写的微服务,它有自己的 NoSQL 数据存储。我们正在开发一些功能,我们希望删除一些旧数据(50 万份文档),并希望根据数据存储中特定类型记录的存在情况定期(每天一次)执行此操作。

是否有一个每天运行一次并删除的调度程序,这是一种正确的方法吗?此外,由于它是一个微服务并且它的多个实例将运行,我们如何控制此调度程序仅在 1 个实例上运行?

Sha*_*ank 5

我现在能想到的有多种选择:

  1. 如果部署了单个微服务实例,您可以使用诸如quartz 之类的东西来计时。
  2. 创建用于清理的 RESTful API,使用脚本调用它,例如请参考/sf/answers/1056362541/。这将确保只有一个服务实例进行清理。
  3. 如果有主从副本,要求master只分配1个instance
  4. 使用诸如quartz 之类的东西创建一个计划作业,然后检查该作业是否已被zookeeper/redis/db 或任何其他存储中的其他调度程序占用。

我可以就此进行更多讨论。