Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSpring引导微服务中的调度器_Java_Spring Boot_Scheduler_Microservices - Fatal编程技术网

JavaSpring引导微服务中的调度器

JavaSpring引导微服务中的调度器,java,spring-boot,scheduler,microservices,Java,Spring Boot,Scheduler,Microservices,我们有一个使用SpringBoot编写的微服务,它有自己的NoSQL数据存储。我们正在开发功能,希望删除一些旧数据(数量为50万个文档),并希望根据数据存储中存在的特定类型的记录定期(每天一次)删除这些数据 是否有一个每天运行一次的调度程序,并执行删除操作,这是一种正确的方法?此外,由于它是一项微服务,并且将运行多个实例,我们如何控制此计划程序仅在一个实例上运行?我现在可以想到多个选项: 如果部署了一个micro服务实例,您可以使用类似quartz的工具来计时作业 创建一个用于清理的RESTfu

我们有一个使用SpringBoot编写的微服务,它有自己的NoSQL数据存储。我们正在开发功能,希望删除一些旧数据(数量为50万个文档),并希望根据数据存储中存在的特定类型的记录定期(每天一次)删除这些数据


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

我现在可以想到多个选项:

  • 如果部署了一个micro服务实例,您可以使用类似quartz的工具来计时作业
  • 创建一个用于清理的RESTful API,使用脚本调用它,例如,请参阅。这将确保只有一个服务实例可以进行清理
  • 如果存在主从副本,则要求主副本仅分配给1个实例
  • 使用quartz之类的工具创建计划作业,然后检查该作业是否已被zookeeper/redis/db或任何其他存储中的其他计划程序占用

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

    此外,由于它是一个微服务,并且将运行多个实例,我们如何控制此调度程序仅在一个实例上运行?这里的实例是什么意思?每个微服务都将作为单独的应用程序运行,并拥有自己的数据库。这里的链接实例表示相同应用程序/微服务的不同JVM,并且在每个JVM中应用程序连接到相同的数据库实例。是的。。您可以提供以上提到的所有备选方案options@LovaChittumuri我建议的备选方案可以根据场景/需求应用。当我们完成需求时,我可能会提出另一个建议。在我看来,根据目前提供的信息,选择4似乎更合适。