【问题标题】:Scheduler on multiple server instances多个服务器实例上的调度程序
【发布时间】:2020-10-11 00:11:01
【问题描述】:

您好,我有每小时运行一次的 Java 调度程序,我有 16 个服务器实例,这将部署在所有 16 个服务器实例中。 我如何确保这些调度程序任务不会相互冲突。我们不想引入 Spring 批处理。

【问题讨论】:

    标签: spring scheduler


    【解决方案1】:

    其实有一些办法。

    1. 你可以使用分布式锁(例如:hazelcast的分布式锁)。

    2. 您可以在数据库中使用悲观锁。(为每个请求锁定表并将状态设置为 IN_PROGRESS)

    3. 使用quartz进行调度。(需要Db持久化)

    【讨论】:

    • 我在寻找选项 1。
    【解决方案2】:

    基本上,您可以采用 2 种方法:

    1. 确保每个实例都管理自己的数据(不与任何其他实例共享)。
    2. 确保每次只有一个实例可以访问信息。

    第一点取决于您自己的业务逻辑,第二点有一些工具可以帮助您,与 Spring 轻松集成:

    Quartz

    Shedlock(比 Quartz 更简单,但功能更少)

    【讨论】:

    • 目前我不是在寻找数据库选项。但这些都是不错的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多