首页 > 其他分享 >XXLjob分片策略、阻塞处理策略知识汇总

XXLjob分片策略、阻塞处理策略知识汇总

时间:2023-06-27 17:55:36浏览次数:36  
标签:执行器 策略 处理 调度 job 任务 分片 XXLjob

一、路由策略-分片策略场景描述
一般在集群环境下,我们job被部署了多个节点,xxl-job需要做到只要有一个节点去执行job,这时候需要依赖xxl-job的任务路由策略进行分配节点。xxl-job提供的路由策略有:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移、分片广播。对于简单的任务,我们选择轮询、随机、故障转移都是可以的,但是对于执行时间长的任务,我们希望能分散到各个节点上执行,从而加快完成的速度,这时候就需要用到分片广播。jobhandler代码如下所示,要取出要更新的id,然后判断取模是不是本台机器处理,如果是本台机器需要处理的,再根据id查询数据,处理数据。这就是分片的逻辑,主要是目的提高速度。

/**
 * 分片广播任务
 */
@XxlJob("shardingJobHandler")
public void shardingJobHandler() throws Exception {

    // 分片参数
    int shardIndex = XxlJobHelper.getShardIndex();
    int shardTotal = XxlJobHelper.getShardTotal();

    XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);
    //获取需要处理的所有门店列表
    List<StoreInfo> storeInfoList = storeInfoMapper.selectList(new QueryWrapper<StoreInfo>().lambda().orderByDesc(StoreInfo::getStoreCode));

    //当前分片需要处理的门店列表
    List<StoreInfo> shardStoreInfoList = new ArrayList<>();
    // 业务逻辑
    for (int i = 0; i < storeInfoList.size(); i++) {
        if (i % shardTotal == shardIndex) {
            //将当前分片需要处理的门店加入list
            shardStoreInfoList.add(storeInfoList.get(i));
        }
    }
    //处理业务逻辑...
    service.doBusiness(shardStoreInfoList);
}

二、XLL-JOB阻塞处理策略类型
1、单机串行(默认)
调度进入单机执行器后,调度请求进入FIFO队列中并以串行方式运行
2、丢弃后续调度(推荐)
调度请求进入单机执行器,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败
3、覆盖之前调度(不推荐)
调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度

单机串行情况下:如果一个任务没有执行完毕,第二次任务执行又开始了,那么第二次会一直等待直到第一次执行完毕才会执行第二次任务调度,这样如果任务频率比较高,同时执行时间长,不建议使用这种方式,这样会导致阻塞i的任务越来越多。

参考文档:
https://blog.csdn.net/weixin_45427648/article/details/129655126
https://blog.csdn.net/dongdong199033/article/details/129759364
https://www.jianshu.com/p/281972cd7b5b
https://www.xuxueli.com/xxl-job/#/

 

标签:执行器,策略,处理,调度,job,任务,分片,XXLjob
From: https://www.cnblogs.com/jelly12345/p/17509582.html

相关文章

  • 关于在大模型战略资源储备的不同阶段,B端开发者的行动策略的一些思考
    一、大模型产业链的终态猜想我们先定义理想状态下,大模型应该具备哪些综合性能:指令理解能力:能够理解并遵循指令,并按照指令完成相应的逻辑推理、知识抽取、概念总结、API调用等任务多语言理解能力:能够同时理解包括中文、英文等主流语言逻辑推理能力:能够将复杂任务分解为相互串......
  • 实践讲解强化学习之梯度策略、添加基线、优势函数、动作分配合适的分数
    摘要:本文将从实践案例角度为大家解读强化学习中的梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)。本文分享自华为云社区《强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)》,作者:汀丶。1策略梯度算法如图......
  • 大类资产轮动策略
    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。大类资产轮动的概念大类资产轮动,从定义上来说,就是债券、股票、商品的轮动。从典型的学院派理论来讲,上述资产之间的轮动顺序往往是债券先走牛,然后股票牛市,股票走牛之后商品开始火爆,等商品行情结......
  • 解读2016年后小米的强势回归和创新的DTC策略
    小米通过在爆品体系打造、贴地的新媒体策略及小米之家新零售模式上的努力,成功地克服了低潮,在经历了两年的震荡后,在软件、硬件和新零售的增长飞轮上实现了新的外延,并在2015年至2021年期间持续增长。小米的多元化爆品和创新的零售模式也为未来公司的估值插上了更多的想象空间,为未......
  • python代码-基于深度强化学习的微能源网能量管理与优化策略研究
    python代码-基于深度强化学习的微能源网能量管理与优化策略研究关键词:微能源网;能量管理;深度强化学习;Q-learning;DQN内容::面向多种可再生能源接入的微能源网,提出一种基于深度强化学习的微能源网能量管理与优化方法。该方法使用深度Q网络(deepQnetwork,DQN)对预测负荷、风光等可......
  • WIN11 INTEL 12-13代大小核默认调度策略
    WIN11INTEL12-13代大小核默认调度策略  生效的异类策略:使用异类策略0.异类线程调度策略:自动。异类短运行线程调度策略:自动。......
  • 算法——暴力、贪心策略
    暴力贪心算法是一种基于贪心思想的算法,它的主要思想是在问题求解的过程中,尽可能地采取局部最优策略,从而得到全局最优解。暴力贪心算法的技巧包括:确定问题的最优解结构:对于一个问题,如果它具有最优子结构的性质,那么就可以使用贪心算法来求解。最优子结构的性质是指问题的最优解可......
  • Git分支策略
    团队如何选择合适的Git分支策略? 合集-DevOps实践之路(6) 1.都说DevOps落地难,到底难在哪里?也许你还没找到套路05-132.DevOps落地实践点滴和踩坑记录-(2)-聊聊企业内部DevOps平台建设2022-08-163.DevOps落地实践点滴和踩坑记录-(1)-迷茫与焦虑2022-06-124.聊聊DevOps制......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我......
  • 强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函
    强化学习从基础到进阶-常见问题和面试必知必答[5]::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)1.核心词汇策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输入,输出演员现在应该要执行的动作。一般地,我们......