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

时间:2017-10-30 14:34:41

标签: java spring-boot scheduler microservices

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

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

1 个答案:

答案 0 :(得分:1)

我现在可以想到多种选择:

  1. 如果部署了单个微服务实例,您可以使用石英之类的东西来计算工作时间。
  2. 创建一个RESTful API进行清理,使用脚本调用它,请参考https://stackoverflow.com/a/15090893/2817980。这将确保只有一个服务实例可以进行清理。
  3. 如果有主从复制副本,请要求主服务器仅分配1个实例
  4. 使用quartz之类的东西创建一个预定作业,然后检查作业是否已经被zookeeper / redis / db中的其他调度程序或任何其他存储占用。
  5. 我可以就此进行更多讨论。