1.立项背景和目标
原有业务系统定时任务分散部署在各个微服务中,缺少统一可视化管控平台,任务执行异常无告警、失败无自动重试机制,故障排查效率低,运维成本居高不下。本项目目标是搭建分布式统一任务调度中台,集中托管全业务定时、异步、分片任务,实现可视化配置、分布式执行、异常自动重试与多渠道告警,大幅降低开发运维工作量,保障任务稳定准时执行。
2.软件功能、核心功能模块
平台分为五大核心模块:执行器注册中心、任务配置管理、分布式调度引擎、执行日志监控、告警与权限管理。支持可视化 CRON 表达式配置、分片广播任务、延迟任务、一次性任务;支持多服务节点分布式负载均衡调度;完整留存每一次任务运行日志,提供企业微信、短信、邮件三类异常告警渠道。
3.业务流程、功能路径描述
管理员登录后台后,在权限模块分配各业务线执行器接入权限;业务开发人员注册服务执行器,新建任务并配置调度周期、执行参数;调度中心按照设定时间规则下发任务至对应业务节点执行;执行结果实时回传平台,运行成功则归档日志,执行失败自动触发多次重试,重试仍失败则推送告警通知运维人员,可在日志页面追溯完整调用链路排查问题。
1.整体架构和设计思路,不同模块使用的技术栈
采用前后端分离微服务架构,后端基于 SpringCloud、SpringBoot 搭建,Eureka 作为注册中心,MySQL 持久化任务配置,Redis 缓存任务调度状态,RabbitMQ 削峰处理任务下发消息;前端使用 Vue3+ElementPlus 实现管理后台页面。拆分注册中心、调度引擎、日志存储、告警推送四大服务模块,实现服务解耦、水平扩容。
2.我的负责模块和结果(量化)
独立负责调度引擎、日志监控、告警推送三大核心模块开发;设计分布式分片调度算法;优化日志存储方案。
3.遇到的难点、坑,和解决方案
难点 1:高峰期大量任务同时下发造成消息堆积、调度延迟。解决方案:引入 RabbitMQ 分层队列削峰,为任务设置优先级权重,配置消息死信队列存储失败任务,后台定时补偿执行;
难点 2:海量执行日志存储查询缓慢。解决方案:采用 MySQL 按月份分表存储日志,搭配 ES 做全文检索,热点当日日志存入 Redis 缓存,大幅提升检索速度。