多个服务器实例上的调度程序
Scheduler on multiple server instances
您好,我有 Java 调度程序,每小时 运行,我有 16 个服务器实例,这将部署在所有 16 个服务器实例中。
我如何确保这些调度程序任务不会相互冲突。我们不想引入 Spring 批处理 .
其实还是有一些办法的
你可以使用分布式锁(例如:hazelcast 的分布式锁)。
你可以在数据库中使用悲观锁。(为每个请求锁定table并将状态设置为IN_PROGRESS)
使用quartz进行调度。(需要Db持久化)
基本上你可以遵循两种方法:
- 确保每个实例都管理自己的数据(不与任何其他实例共享)。
- 确保每次只有一个实例可以访问信息。
第一点取决于您自己的业务逻辑,对于第二点,有一些工具可以帮助您,可以轻松集成 Spring:
Shedlock(比 Quartz 更简单,但功能较少)
您好,我有 Java 调度程序,每小时 运行,我有 16 个服务器实例,这将部署在所有 16 个服务器实例中。 我如何确保这些调度程序任务不会相互冲突。我们不想引入 Spring 批处理 .
其实还是有一些办法的
你可以使用分布式锁(例如:hazelcast 的分布式锁)。
你可以在数据库中使用悲观锁。(为每个请求锁定table并将状态设置为IN_PROGRESS)
使用quartz进行调度。(需要Db持久化)
基本上你可以遵循两种方法:
- 确保每个实例都管理自己的数据(不与任何其他实例共享)。
- 确保每次只有一个实例可以访问信息。
第一点取决于您自己的业务逻辑,对于第二点,有一些工具可以帮助您,可以轻松集成 Spring:
Shedlock(比 Quartz 更简单,但功能较少)