Elastic-Job 事件追踪表结构详解

Elastic-Job 事件追踪表结构详解

shardingsphere-elasticjob Distributed scheduled job shardingsphere-elasticjob 项目地址: https://gitcode.com/gh_mirrors/el/elastic-job

概述

Elastic-Job 作为一款分布式任务调度框架,提供了完善的事件追踪功能。通过配置事件追踪数据源,系统会自动创建两张核心表:JOB_EXECUTION_LOG(作业执行日志表)和 JOB_STATUS_TRACE_LOG(作业状态跟踪日志表)。这两张表记录了作业执行的完整生命周期信息,为开发者提供了强大的监控和诊断能力。

JOB_EXECUTION_LOG 表详解

表结构说明

JOB_EXECUTION_LOG 表主要用于记录每次作业执行的详细历史信息,包含以下字段:

| 字段名称 | 类型 | 必填 | 说明 | |----------------------|----------------|------|----------------------------------------------------------------------| | id | VARCHAR(40) | 是 | 主键,唯一标识一条执行记录 | | job_name | VARCHAR(100) | 是 | 作业名称,对应配置的作业名称 | | task_id | VARCHAR(1000) | 是 | 任务ID,每次作业运行都会生成新的任务ID | | hostname | VARCHAR(255) | 是 | 执行作业的主机名称 | | ip | VARCHAR(50) | 是 | 执行作业的主机IP地址 | | sharding_item | INT | 是 | 当前执行的分片项编号 | | execution_source | VARCHAR(20) | 是 | 执行来源:NORMAL_TRIGGER(正常触发)、MISFIRE(错过触发)、FAILOVER(故障转移) | | failure_cause | VARCHAR(2000) | 否 | 执行失败时的详细原因 | | is_success | BIT | 是 | 执行是否成功,1表示成功,0表示失败 | | start_time | TIMESTAMP | 是 | 作业开始执行的时间 | | complete_time | TIMESTAMP | 否 | 作业完成执行的时间 |

数据记录机制

  1. 初始记录阶段:当作业开始执行时,系统会立即向该表插入一条记录,此时除 failure_cause 和 complete_time 外的所有字段都会被填充。

  2. 更新阶段:当作业执行完成后,系统会更新该记录,设置 is_success 字段表示执行结果,complete_time 字段记录完成时间。如果执行失败,还会记录 failure_cause。

实际应用场景

  • 执行监控:通过查询该表可以了解作业的执行频率和耗时情况
  • 故障排查:通过 failure_cause 字段可以快速定位作业失败原因
  • 性能分析:通过 start_time 和 complete_time 可以计算作业执行耗时

JOB_STATUS_TRACE_LOG 表详解

表结构说明

JOB_STATUS_TRACE_LOG 表记录了作业状态变化的完整轨迹,包含以下字段:

| 字段名称 | 类型 | 必填 | 说明 | |----------------------|----------------|------|----------------------------------------------------------------------| | id | VARCHAR(40) | 是 | 主键,唯一标识一条状态记录 | | job_name | VARCHAR(100) | 是 | 作业名称 | | original_task_id | VARCHAR(1000) | 是 | 原始任务ID,用于故障转移场景 | | task_id | VARCHAR(1000) | 是 | 当前任务ID | | slave_id | VARCHAR(1000) | 是 | 执行作业的服务器标识(通常是IP地址) | | execution_type | VARCHAR(20) | 是 | 执行类型:NORMAL_TRIGGER、MISFIRE、FAILOVER | | sharding_item | VARCHAR(255) | 是 | 分片项集合,多个分片项用逗号分隔 | | state | VARCHAR(20) | 是 | 任务状态:TASK_STAGING(准备)、TASK_RUNNING(运行中)、TASK_FINISHED(完成)等 | | message | VARCHAR(2000) | 是 | 状态变更时的附加信息 | | creation_time | TIMESTAMP | 是 | 记录创建时间 |

状态生命周期

作业状态会经历以下典型生命周期:

  1. TASK_STAGING:任务准备阶段
  2. TASK_RUNNING:任务执行中
  3. TASK_FINISHED:任务成功完成

异常情况下可能出现:

  • TASK_FAILED:任务执行失败
  • TASK_ERROR:任务执行出错
  • TASK_KILLED:任务被手动终止
  • TASK_LOST:任务丢失(通常由于执行节点宕机)

实际应用场景

  • 状态跟踪:通过该表可以完整追溯作业从开始到结束的整个状态变化过程
  • 故障诊断:当作业出现异常时,可以通过状态变化序列分析问题原因
  • 执行分析:了解作业在不同状态停留的时间,优化作业执行效率

最佳实践建议

  1. 定期归档:这两张表会随着时间积累大量数据,建议定期归档旧数据以保持系统性能

  2. 监控告警:可以基于这两张表的数据建立监控系统,当作业失败或异常时及时告警

  3. 查询优化:为常用查询条件(如job_name、task_id等)建立合适的索引

  4. 容量规划:根据作业数量和执行频率预估表数据增长量,提前做好存储规划

  5. 数据分析:可以基于历史数据统计作业执行成功率、平均耗时等关键指标

通过合理利用这两张表提供的信息,开发者可以全面掌握Elastic-Job作业的运行情况,及时发现并解决问题,确保分布式任务调度系统的稳定运行。

shardingsphere-elasticjob Distributed scheduled job shardingsphere-elasticjob 项目地址: https://gitcode.com/gh_mirrors/el/elastic-job

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍辰惟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值