XXL-JOB的阻塞处理策略-单机串行机制

这篇具有很好参考价值的文章主要介绍了XXL-JOB的阻塞处理策略-单机串行机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XXL-JOB的阻塞处理策略-单机串行机制

问题

默认的单机串行策略,是指的是在xxl-job调度时串行,还是指具体的执行器串行?文章来源地址https://www.toymoban.com/news/detail-543077.html

  • 纠结这个问题的起源是在使用xxl-job的时候,配置了两台执行器,这两台执行器的代码是一样的,且JOB的工作是拉取表中特定状态的数据进行处理
  • 结果发现部分数据被重复处理,原因是xxl-job在执行器a未执行完毕的情况下,启动了执行器b,此时执行器a中未被修改状态的数据就同时被两台执行器处理

结论

  • xxl-job的默认处理策略是单机串行,这里串行指的是具体执行器上面的同一个任务串行
  • 如果配置了多个执行器(即多节点),且没有通过入参控制job获取的处理数据,则最好调整路由策略为
    hash一致性,这种路由会均匀的将job分散在不同的执行器,且同一个任务永远在一台服务器上执行

验证过程

  • 编写两个执行器,代码相同,具体逻辑为线程休眠20s,同时使用xxl-job配置这两台执行器,调度频率为每10s一次,单机串行-轮询
  • 发现在执行未执行完毕的情况下,xxl-job到了下次执行时间,直接调度执行器b,此时该定时任务实际在两个执行器并行
执行器代码
public class JobHandler {

    @XxlJob("jobTest")
    public ReturnT<String> jobTest(String param) throws InterruptedException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        simpleDateFormat.applyPattern("YYYY-MM-DD HH:mm:ss");
        log.info("====job===   begin!"+simpleDateFormat.format(new Date()));
        Thread.sleep(20000);
        log.info("====job===   end!"+simpleDateFormat.format(new Date()));
        return ReturnT.SUCCESS;
    }
}
执行器配置
xxl:
  job:
    admin:
      # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
      addresses: 
    executor:
      # 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
      appname: 
      address:
      # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
      ip:
      # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
      port: 
      # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: #日志路径也需要区分开,默认的日志文件命名规则会让两个执行器同时操作一个文件,出现错误
      logretentiondays: 30
    # 执行器通讯TOKEN [选填]:非空时启用;
    accessToken: 
参考官方文档

到了这里,关于XXL-JOB的阻塞处理策略-单机串行机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【 XXL-JOB】 XXL-JOB任务分片

    xxl-job 是一个分布式任务调度平台,支持定时任务和分片任务。其中,分片任务可以将一个大任务拆分成多个小任务,分布式地执行,提高任务的执行效率和可靠性。分片任务中,有一种特殊的任务类型叫做分片广播任务,可以将一个任务广播到所有的执行器节点上执行,本

    2024年02月09日
    浏览(38)
  • 【xxl-job】分布式任务调度系统xxl-job搭建

    XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。 更多介绍,请访问官网:分布式任务调度平台XXL-JOB 前提条件:任务调度中心(xxl-job admin)依赖于 mysql,所以必须要安装mysql才行!安装mysql有2种方式:docker部署或

    2024年02月16日
    浏览(47)
  • Xxl-job安装部署以及SpringBoot集成Xxl-job使用

    1、安装Xxl-job: 可以使用docker拉取镜像部署和源码编译两种方式,这里选择源码编译安装。 代码拉取地址: 官方开发文档: 2、打开项目 使用Maven打开项目,下载相关的jar包依赖。配置相关配置文件 这里可以参考官方开发文档进行配置。 3、初始化数据库 项目中包含数据库

    2023年04月25日
    浏览(41)
  • xxl-Job基础配置

    介绍: XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 几个特性: 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改

    2024年02月09日
    浏览(36)
  • XXL-JOB任务分片

    单个任务:一个任务实例便可完成 单机单任务:单机模式下任何路由模式都只有一个实例执行 集群单任务:由路由策略(广播模式除外)选择其中一个实例完成 分片任务:集群部署,每个实例都同时执行一部分数据。分片方式:取模分片,范围分片 单机多任务分片:单机模式

    2024年02月08日
    浏览(59)
  • XXL-JOB详细说明

    单机:Timer、ExectorService、spring@scheduled 分布式:xxl-job、quartz、elastic-job 由调度中心和执行器组成,调度中心提供一个web管理配置任务和执行器,调度中心通过rpc触发执行器 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状

    2024年02月10日
    浏览(68)
  • Docker-compose搭建xxl-job(并配置Python3环境xxl-job执行器)

    注意:a.文件内IP替换成自己本机IP; b.数据库连接、用户密码根据自己情况修改; 注意:根据自己Python脚本需要添加python3第三方包; 注意:xxl-job-executor-sample-springboot-2.2.0.jar 为xxl-job的执行器jar包 可从github上拉取源码打包成jar 这里提供该文件csdn下载地址:https://download.csdn.

    2024年02月14日
    浏览(41)
  • 【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目

                                    💧 分布式任务调度平台 X X L − J O B 急速入门:从零开始将 X X L − J O B 接入到自己的项目 color{#FF1493}{分布式任务调度平台 XXL-JOB 急速入门:从零开始将 XXL-JOB 接入到自己的项目} 分布式任务调度平台 XX L − J OB 急速入门:从零

    2024年02月14日
    浏览(44)
  • xxl-job架构原理讲解

    调度中心是一个单独的Web服务,主要是用来触发定时任务的执行 它提供了一些页面操作,我们可以很方便地去管理这些定时任务的触发逻辑 调度中心依赖数据库,所以数据都是存在数据库中的 调度中心也支持集群模式,但是它们所依赖的数据库必须是同一个 所以同一个集群

    2024年02月21日
    浏览(35)
  • xxl-job-架构及原理

    分布式调度框架 服务端 1、根据执行器创建任务, 2、底层通过netty发起调度。 客户端 1、注册到服务端成为执行器 2、注册任务类,任务类需要实现JobHandler这个接口的类 2、接受调度请求,找到对应的bean,并把bean放到线程池(最大200个线程)中执行,不需要等待结果,请求

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包