• xxl-job一致性


                                                    xxl-job一致性

    xxl-job调度中心为了高可用是分布式部署,即中心化,那么如何保证调度的一致性,不会出现多台机器 同时触发某一个任务同时执行

    请尊重作者劳动成果,转载请标明原文链接:

    https://www.cnblogs.com/wanghongsen/p/12504490.html

     

    一 如何保证xxl-job一致性

    什么是一致性问题:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行

    为了避免多个服务器同时调度任务, 通过mysql悲观锁实现分布式锁(for update语句) 

     

    二 具体过程:

    (可以参看JobScheduleHelper类代码,关键代码截图如下)

    如上图所示

    1 setAutoCommit(false)关闭隐式自动提交事务,

    2 启动事务select lock for update(显式排他锁) 

    3 读db任务信息 -> 拉任务到内存时间轮 -> 更新db任务信息

    4 commit提交事务,同时会释放for update的排他锁(悲观锁)

    当任务处理完毕后,释放 悲观锁,准备等待下一次循环。

  • 相关阅读:
    python-socket1
    python-网络编程
    linux-常用指令3
    linux-vim/编辑器
    linux-常用指令2
    linux-常用指令1
    MySQL 练习题
    33 python 并发编程之IO模型
    32 python 并发编程之协程
    31 python下实现并发编程
  • 原文地址:https://www.cnblogs.com/wanghongsen/p/12504490.html
Copyright © 2020-2023  润新知