一个简单的定时任务调度中心设计方案

本文介绍了在微服务环境中,一个简单的定时任务调度中心设计方案,旨在解决分布式环境中定时任务的管理、执行和监控问题。通过服务注册中心记录带有定时任务标签的接口,并简化定时任务配置为两类:每隔N秒执行和每日定点执行。调度中心仅保留最近执行记录,以保持轻量化。同时,通过接口返回错误码自动卸载生命周期结束的定时任务。
摘要由CSDN通过智能技术生成

在日常开发中除了给前端开发接口,还要写一些定时处理任务,比如一个活动需要每天定时给所有用户派发奖励。一个成熟服务框架需要一个全局的定时任务调度中心,通过定时任务调度中心可以查看服务有哪些定时任务以及定时任务的执行情况,对于执行失败的定时任务可以手动执行等。

我们公司的微服务架构没有定时任务调度中心,每个服务通过类似crontab定时任务配置来管理自身的定时任务,为了保证每个服务高可用,我们给每个服务都部署了两个节点,对于一些不能并发执行的定时任务我们往往需要给定时任务加一个分布式锁,有时甚至需要修改服务的crontab定时任务配置,保证一组服务只一个服务能执行定时任务,对于定时任务执行情况没有一个统一地方可以查看,需要查看每个服务日志才能确认定时任务是否执行成功,对于执行失败的定时任务需要写额外的重做代码。所以我们需要一个定时任务调度中心来管理每个服务的定时任务,这个定时任务调度中心需要有以下功能:

  1. 可以查看服务有哪些定时任务以及任务的执行状态。
  2. 对于执行失败的定时任务可以在管理界面手动发起重做。
  3. 每个定时任务都抽象成接口,由定时任务调度中心负责调度。
  4. 定时任务什么时候执行应由具体业务服务配置,定时任务调度中心可获取这些配置进行定时调度。

既然决定开发一个定时任务调度中心,那么问题来了,我们是否需要开发一个新的服务?我的答案是不需要,我们把定时任务当作服务接口,我们所有服务的接口信息都登记到服务注册中心,我们可以给接口添加一个定时任务标签,注册中心将打上定时任务标签的服务接口放到一个定时任务执行队列中,由定时任务执行队列管理每个服务定时任务接口的调度,同时将各个服务的定时任务接口与执行情况记录到数据库中,然后在注册中心添加

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值