当前位置: 首页 > news >正文

微服务篇之任务调度

一、xxl-job的作用

        1. 解决集群任务的重复执行问题。

        2. cron表达式定义灵活。

        3. 定时任务失败了,重试和统计。

        4. 任务量大,分片执行。

二、xxl-job路由策略

        1. FIRST(第一个):固定选择第一个机器。

        2. LAST(最后一个):固定选择最后一个机器。

        3. ROUND(轮询)。

        4. RANDOM(随机):随机选择在线的机器。

        5. CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。

        6. LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举。

        7. LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举。

        8. FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度。

        9. BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度。

        10. SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务。

三、xxl-job执行失败

        故障转移+失败重试,查看日志分析----> 邮件告警。

四、处理大量并发任务

        执行器集群部署时,任务路由策略选择分片广播情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务。

        分片参数:1.  index:当前分片序号(从0开始),执行器集群列表中当前执行器的序号。

                          2.  total:总分片数,执行器集群的总机器数量。

         具体代码如下:

@XxlJob("shadingSample")public void shardingJobHandler() throws Exception {// 分片参数int shardIndex = XxlJobHelper.getShardIndex();int shardTotal = XxlJobHelper.getShardTotal();XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);// 业务逻辑List<Integer> list = getList();for (Integer integer : list) {if (integer % shardTotal == shardIndex) {System.out.println("第" + shardIndex + "分片执行,执行数据为:" + integer);}}}

五、面试题

面试官:xxl-job路由策略有哪些?

候选人:xxl-job提供了很多的路由策略,我们平时用的较多就是:轮询、故障转移、分片广播…

面试官:xxl-job任务执行失败怎么解决?

候选人:有这么几个操作:

第一:路由策略选择故障转移,优先使用健康的实例来执行任务。

第二,如果还有失败的,我们在创建任务时,可以设置重试次数。

第三,如果还有失败的,就可以查看日志或者配置邮件告警来通知相关负责人解决。

面试官:如果有大数据量的任务同时都需要执行,怎么解决?

候选人:我们会让部署多个实例,共同去执行这些批量的任务,其中任务的路由策略是分片广播

在任务执行的代码中可以获取分片总数和当前分片,按照取模的方式分摊到各个实例执行就可以。

http://www.lryc.cn/news/304572.html

相关文章:

  • 提取游戏音频文件.bnk
  • React 模态框的设计(三)拖动组件的完善
  • wondows10用Electron打包threejs的项目记录
  • git的master、develop、feature分支分别是做什么用的?有什么区别和联系?
  • 前端基础面试题
  • docker自定义网络实现容器之间的通信
  • NLP_构建GPT模型并完成文本生成任务
  • 使用puppeteer完成监听浏览器下载文件并保存到自己本地或服务器上完成上传功能
  • 软件压力测试:测试方法与步骤详解
  • Oerlikon欧瑞康LPCVD system操作使用说明
  • pyspark统计指标计算
  • 2.22号qt
  • $attrs
  • OS X(MACOS) C/C++ 遍历系统所有的IP路由表配置。
  • 人工智能_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_003---人工智能工作笔记0098
  • 基于JAVA的实验室耗材管理系统 开源项目
  • NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获
  • 左右联动布局效果
  • 【工具类】vscode ssh 远程免密登录开发
  • 【Antd】Form 表单获取不到 Input 的值
  • Encoder-decoder 与Decoder-only 模型之间的使用区别
  • 【STM32备忘录】【STM32WB系列的BLE低功耗蓝牙】一、测试广播配置搜不到信号的注意事项
  • ChatGPT 是什么
  • 4款好用的ai智能写作软件,为写作排忧解难!
  • js设计模式:计算属性模式
  • 2015-2024年考研数学(一)真题练习和解析——选择题
  • Git合并固定分支的某一部分至当前分支
  • Codeforces Round 928 (Div. 4) (A-E)
  • git远程操控gitee
  • 常见面试题:TCP的四次挥手和TCP的滑动窗口