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

server/2025/1/15 17:54:09/

在这里插入图片描述

分布式任务调度简介

  • 主流工具:在分布式任务调度技术中,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(总分片数),利用这两个参数按照取模规则执行任务代码,从而实现将大数据量任务分摊到多个实例同时执行,确保任务快速完成。

在这里插入图片描述


http://www.ppmy.cn/server/158220.html

相关文章

WPF中如何在MVVM模式下跨线程更新UI

WPF中如何在MVVM模式下跨线程更新UI 在WPF应用程序中,使用MVVM(Model-View-ViewModel)模式是常见的开发实践。通过MVVM模式,我们能够将UI界面与业务逻辑解耦,达到更高的可维护性和扩展性。然而,WPF应用程序…

Java(五十)java-IO流-缓冲流(BufferedInputStream和BufferedOutputStream)

接下来我们学习一下java缓冲流中的读取和写入类BufferedInputStream(缓冲字节输入流)和BufferedOutputStream(缓冲字节输出流)类,这个两个类的使用方法和IO流中的FileOutputStream和FileInputStream类是差不多的。但是…

java 查询树结构数据,无限层级树结构通用方法

1、数据库表数据 2、controller层TestTree简单测试 RestController RequestMapping("/test") public class testTreeController {Autowiredprivate TestTreeService testTreeService;GetMapping("/list")public List<TestTree> List(TestTree tree)…

WPF系列八:图形控件Path

简介 Path控件支持一种称为路径迷你语言&#xff08;Path Mini-Language&#xff09;的紧凑字符串格式&#xff0c;用于描述复杂的几何图形。这种语言通过一系列命令字母和坐标来定义路径上的点和线段&#xff0c;最终绘制出想要的图形。 绘制任意形状&#xff1a;可以用来绘…

RPC调用初识

什么是RPC远程调用&#xff1f; 远程调用会遇到的问题&#xff1a; 1.call id 的映射 2.序列化和反序列化 3.网络传输 为什么一个函数&#xff0c;要放在另一台服务器上面&#xff0c;在本地跑不是更好吗&#xff1f; 当电商系统&#xff0c;有一段逻辑是扣减库存了&#x…

上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天探底回升&#xff0c;沪指盘中跌超1.6%&#xff0c;创业板指一度跌逾3%&#xff0c;午后集体拉升翻红…

爬虫基础之爬取歌曲宝歌曲批量下载

声明&#xff1a;本案列仅供学习交流使用 任何用于非法用途均与本作者无关 需求分析: 网站:邓紫棋-mp3在线免费下载-歌曲宝-找歌就用歌曲宝-MP3音乐高品质在线免费下载 (gequbao.com) 爬取 歌曲名 歌曲 实现歌手名称下载所有歌曲 本案列所使用的模块 requests (发送…

JAVA之单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。在软件设计中&#xff0c;单例模式常用于控制对资源的访问&#xff0c;例如数据库连接、线程池等。以下是单例模式的详…