Apache ShardingSphere ElasticJob 事件追踪表结构详解

Apache ShardingSphere ElasticJob 事件追踪表结构详解

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

概述

Apache ShardingSphere ElasticJob 作为一款分布式任务调度解决方案,提供了强大的事件追踪功能。通过配置事件追踪数据源,系统会自动创建两张核心表: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,每次作业运行都会生成新的task_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 | 可选 | 作业完成执行的时间戳 |

数据记录机制

JOB_EXECUTION_LOG 表的数据记录分为两个阶段:

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

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

这种设计确保了即使作业执行过程中出现异常,也能保留作业开始执行的记录,便于问题排查。

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 | 必填 | 记录创建时间 |

状态生命周期

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

  1. TASK_STAGING:任务准备阶段
  2. TASK_RUNNING:任务执行中
  3. 最终状态可能是:
    • TASK_FINISHED:成功完成
    • TASK_FAILED:执行失败
    • TASK_ERROR:发生错误
    • TASK_KILLED:被手动终止
    • TASK_LOST:任务丢失(通常由于执行节点宕机)

实际应用场景

作业执行分析

通过JOB_EXECUTION_LOG表,可以:

  • 统计作业执行成功率
  • 分析作业执行耗时分布
  • 识别执行失败频率高的作业
  • 追踪特定分片的执行情况

故障排查

结合两张表的数据,可以:

  • 通过task_id关联查询完整的执行轨迹
  • 分析故障转移过程
  • 定位执行超时的环节
  • 查看详细的错误堆栈信息

性能优化

基于历史数据可以:

  • 识别执行时间异常的作业
  • 发现分片不均衡问题
  • 优化作业调度策略

最佳实践建议

  1. 定期归档历史数据,避免表数据量过大影响查询性能
  2. 为常用查询字段(如job_name、task_id、creation_time等)建立索引
  3. 监控表空间增长,确保有足够的存储空间
  4. 考虑实现自定义的事件追踪处理器,将数据同步到其他分析系统

通过合理利用这两张表的数据,可以全面掌握分布式作业的执行情况,为系统稳定运行提供有力保障。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

计纬延

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

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

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

打赏作者

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

抵扣说明:

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

余额充值