定时任务系统
定时任务系统是井云平台的支撑服务系统,负责定时任务调度、数据过期处理、数据统计等功能。
🎯 系统概述
核心功能
- 定时任务调度: 管理和执行定时任务
- 点数过期处理: 自动处理过期点数
- 分销等级检查: 自动检查和升级用户分销等级
- 数据统计: 定期统计数据
- 数据清理: 清理过期数据
服务端口
- gRPC服务: 9008
🏗️ 架构设计
系统架构
┌─────────────────────────────────────────┐
│ Cron Service (9008) │
├────────────────────────────── ───────────┤
│ Task Scheduler │
│ - Cron Scheduler │
│ - Task Executor │
│ - Task Monitor │
├─────────────────────────────────────────┤
│ Scheduled Tasks │
│ - Points Expiration Task │
│ - Distribution Level Check Task │
│ - Data Statistics Task │
│ - Data Cleanup Task │
├─────────────────────────────────────────┤
│ Data Layer │
│ - Point Repository │
│ - Distribution Repository │
│ - PostgreSQL │
│ - Redis │
│ - RabbitMQ │
└─────────────────────────────────────────┘
⏰ 定时任务
点数过期处理
- 执行时间: 每天凌晨2点
- 处理逻辑:
- 查询所有过期的点数账本
- 将过期点数状态设置为expired
- 生成点数过期交易记录
- 通知用户点数过期
- 数据范围: 所有租户的所有用户
分销等级检查
- 执行时间: 每天凌晨3点
- 处理逻辑:
- 查询当天有支付的用户
- 查询新注册用户的邀请人
- 检查邀请人是否符合更高等级条件
- 自动升级符合条件的用户等级
- 优化策略: 只处理有变更的用户,不处理全量用户
数据统计
- 执行时间: 每天凌晨4点
- 统计内容:
- 用户注册统计
- 订单统计
- 分销统计
- 点数统计
- 存储位置: 统计数据表
数据清理
- 执行时间: 每天凌晨5点
- 清理内容:
- 过期的临时文件
- 过期的日志
- 过期的缓存数据
- 软删除的数据
📊 任务调度
Cron表达式
- 点数过期:
0 2 * * *(每天凌晨2点) - 分销检查:
0 3 * * *(每天凌晨3点) - 数据统计:
0 4 * * *(每天凌晨4点) - 数据清理:
0 5 * * *(每天凌晨5点)
任务执行流程
任务监控
- 执行状态: 记录任务执行状态
- 执行时间: 记录任务执行时间
- 执行结果: 记录任务执行结果
- 错误日志: 记录任务错误日志
- 告警机制: 任务失败告警
💎 点数过期处理
过期逻辑
点数过期处理步骤:
- 定时任务查询数据库中所有过期的点数账本
- 数据库返回过期账本列表
- 对每个过期账本执行以下操作:
- 更新账本状态为 expired
- 创建点数过期交易记录
- 发布点数过期事件到消息队列
- 消息队列将过期事件传递给用户服务
- 用户服务消费过期事件
- 用户服务处理过期逻辑
- 用户服务通知用户点数已过期
过期处理步骤
- 查询过期账本: 查询所有
expires_at小于当前时间的账本 - 更新状态: 将账本状态从
active更新为expired - 创建记录: 创建点数过期交易记录
- 发布事件: 发布点数过期事件到消息队列
- 通知用户: 通过用户服务通知用户
🎁 分销等级检查
检查逻辑
升级条件
- 消费总额: 累计消费金额达到要求
- 下线数量: 直推下线数量达到要求
- 等级要求: 满足目标等级的所有条件
优化 策略
- 增量处理: 只处理有变更的用户
- 批量处理: 批量更新用户等级
- 缓存优化: 缓存等级配置
📈 数据统计
统计内容
- 用户统计:
- 新增用户数
- 活跃用户数
- 用户增长趋势
- 订单统计:
- 订单数量
- 订单金额
- 订单成功率
- 分销统计:
- 分销用户数
- 佣金总额
- 提现金额
- 点数统计:
- 点数发放总额
- 点数消费总额
- 点数过期总额
统计存储
- 统计表: 专门的统计数据表
- 时间维度: 按天、周、月统计
- 维度聚合: 支持多维度聚合
🧹 数据清理
清理内容
- 临时文件: 清理上传的临时文件
- 过期日志: 清理过期的日志文件
- 过期缓存: 清理过期的缓存数据
- 软删除数据: 清理软删除的数据(超过保留期)
清理策略
- 保留期: 不同类型数据有不同的保留期
- 分批清理: 分批清理避免影响性能
- 清理记录: 记录清理日志
🔌 API 接口
任务管理接口
ListTasks: 获取定时任务列表GetTask: 获取定时任务详情UpdateTask: 更新定时任务ExecuteTask: 手动执行任务GetTaskLogs: 获取任务执行日志
📊 监控指标
任务执行指标
- 任务执行次数: 任务执行总次数
- 任务成功率: 任务执行成功率
- 任务执行时间: 任务平均执行时间
- 任务失败次数: 任务失败次数
数据处理指标
- 过期点数数量: 过期点数数量
- 升级用户数量: 升级用户数量
- 统计数据量: 统计数据量
- 清理数据量: 清理数据量
🔒 安全特性
任务安全
- 权限控制: 任务执行权限控制
- 审计日志: 任务执行审计日志
- 异常告警: 任务异常告警
数据安全
- 数据备份: 清理前备份数据
- 数据验证: 清理前验证数据
- 恢复机制: 数据恢复机制