【微服务】面试 8、分布式任务调度

分布式任务调度简介

  • 主流工具:在分布式任务调度技术中,XXL - Job 是目前较为主流的工具。
  • 应用场景 :在 Java 后台项目中,任务调度技术应用广泛。以 XXL - Job 为例,它主要解决了以下四个常见问题:
    • 集群任务重复执行:相比 Spring Task 在集群环境下可能出现多个实例执行同一任务的冲突情况,XXL - Job 能有效避免此类问题。
    • Cron 表达式管理:Spring Task 将 Cron 表达式定义在代码中,而 XXL - Job 可在页面上定义,管理和修改更灵活便捷。
    • 定时任务失败处理:提供统一管理页面,能收集错误信息,支持故障转移和邮件告警功能,便于对定时任务失败情况进行处理和监控。
    • 任务量大的分片执行:像支付宝花呗每月通知大量用户还款的场景,任务量巨大时,XXL - Job 的分片执行功能可实现高效任务处理。

XXL - Job 路由策略

  • 策略定义 :路由策略是指在分布式任务调度中,确定任务分配到哪台机器执行的方式。在 XXL - Job 中创建任务时可指定路由策略,常见的有以下多种:
    • 轮询:任务按顺序轮流分配到不同实例执行,例如任务依次分配到实例一、实例二,再循环。
    • 固定选择:可固定选择第一台或最后一台实例执行任务,简单直接。
    • 随机:任务随机分配到某台机器执行,无特定规律。
    • 一致性哈希:依据哈希算法将任务固定分配到某台机器,且能保证任务均匀分布在不同机器上。
    • 最不经常使用:优先选择使用频率较低的机器执行任务,有助于均衡机器负载。
    • 最近最久未使用:优先选择最久未执行任务的机器,提高资源利用率。
    • 故障转移:当任务执行实例出现故障时,自动将任务转移到健康实例执行,保障任务顺利进行,在实际应用中使用较多。
    • 忙碌转移:若某实例太忙无法执行当前任务,会将任务转移到空闲实例执行,优化任务分配。
    • 分片广播:适用于大数据量任务,会广播触发集群中所有机器执行一次任务。例如在大规模用户通知场景中,可确保所有用户都能被及时通知到。

XXL - Job 任务执行失败的解决办法

  • 初步设置:首先可设置路由策略为故障转移,并在创建任务时设置失败重试次数。当任务执行失败时,系统会按照设置进行重试,增加任务成功执行的概率。
  • 进一步处理 :若上述设置后任务仍失败,可查看调度日志分析原因。调度日志详细记录了任务执行过程,有助于定位问题所在。同时,可设置邮件告警通知相关负责人。在创建任务页面可设置告警邮件及指定接收邮箱,并且在部署调度中心代码时,需在 spring.mail 配置相关邮箱信息,确保邮件能正常发送,以便负责人及时知晓任务失败情况并进行处理。

XXL - Job 大数据量任务执行方案

  • 策略选择:对于大数据量任务,需采用分片广播路由策略。通过这种策略,能充分利用集群资源,提高任务执行效率。
  • 执行逻辑 :在任务执行时,按照取模方式(任务项取模总分片数)将任务分配到对应的机器。例如,若有三台机器(总分片数为 3),任务 1、4、7 会分配到分片一的机器执行,任务 2、5、8 分配到分片二的机器,任务 3、6 分配到分片零的机器。在具体代码中,可获取两个关键参数:index(当前分片号)和 total(总分片数),利用这两个参数按照取模规则执行任务代码,从而实现将大数据量任务分摊到多个实例同时执行,确保任务快速完成。
相关推荐
金州饿霸1 小时前
Apache Hadoop YARN框架概述
大数据·hadoop·分布式
牛马baby2 小时前
Java高频面试之SE-11
java·python·面试
晨辉软件2 小时前
晨辉面试抽签和评分管理系统之六:面试答题倒计时
面试·职场和发展
晨辉软件3 小时前
晨辉面试抽签和评分管理系统之七:面试成绩核算的三种方式
面试·职场和发展
ThisIsClark4 小时前
【后端面试总结】ES和MySQL对比技术探讨
mysql·elasticsearch·面试
凡许真6 小时前
Hadoop3.3.4伪分布式环境搭建
hadoop·分布式·伪分布式·hadoop3.3.4
未命名冀6 小时前
多线程面试相关
java·面试·多线程
移知7 小时前
备战春招—FPGA 2024年的面试题库
fpga开发·面试·职场和发展
王子良.7 小时前
Spring Boot 和微服务:快速入门指南
spring boot·后端·微服务
@小匠8 小时前
微服务的CAP定理与数据一致性抉择
微服务·云原生·架构