分布式定时任务系列7:XXL-job源码分之任务触发

传送门

分布式定时任务系列1:XXL-job安装

分布式定时任务系列2:XXL-job使用

分布式定时任务系列3:任务执行引擎设计

分布式定时任务系列4:任务执行引擎设计续

分布式定时任务系列5:XXL-job中blockingQueue的应用

分布式定时任务系列6:XXL-job触发日志过大引发的CPU告警

Java并发编程实战1:java中的阻塞队列

为何要看源码

在上一节,谈到了由于XXL-job触发日志过大引发了CPU告警,主要是由于XXL-job将触发日志记录到了Mysql数据库,xxl_job_log表中:

sql 复制代码
CREATE TABLE `xxl_job_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
  `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
  `trigger_msg` text COMMENT '调度-日志',
  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
  `handle_code` int(11) NOT NULL COMMENT '执行-状态',
  `handle_msg` text COMMENT '执行-日志',
  `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
  PRIMARY KEY (`id`),
  KEY `I_trigger_time` (`trigger_time`),
  KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

但是理论上,这个设计是有一定的隐患:

  • 从时间纬度上:随着程序运行,周期性任务对应的触发日志数据量会不断的增大
  • 从数量纬度上:业务可能会不断丰富,增加许多新任务

而众所周知,Mysql对于单表的数据量是有一定限制的,超过Kw数据级性能会严重下降,甚至会影响正常的运行(这个可以参考实操测试章节)。而阿里巴巴开发手册也有Mysql使用规范:

相关推荐
9***Y481 天前
Java开发工具IntelliJ IDEA技巧
java·开发语言·intellij-idea
Java爱好狂.1 天前
2025全年Java面试真题总结!
java·jvm·高并发·多线程·java面试·后端开发·java八股文
Charles_go1 天前
C#中级39、什么是依赖注入设计模式
java·设计模式·c#
ComplexPy1 天前
ZKMall-B2B2C Redission延时队列
java·redis
q***96581 天前
深入解析Spring Boot中的@ConfigurationProperties注解
java·spring boot·后端
java1234_小锋1 天前
讲讲Mybatis的一级、二级缓存?
java·开发语言·mybatis
e***87701 天前
记录 idea 启动 tomcat 控制台输出乱码问题解决
java·tomcat·intellij-idea
发现你走远了1 天前
2025 idea 指定配置环境运行springboot 设置active和env启动端口,多端口启动 (保姆级图文)
java·spring boot·intellij-idea
sanggou1 天前
Java秒杀系统设计与实现
java
情怀姑娘1 天前
面试题---------------场景+算法
java·算法·mybatis