考拉定时任务框架kSchedule

此文已由作者杨凯明授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。


1.背景

目前项目中使用的定时任务框架存在下面这些问题

  • 没有统一的定时任务管理平台

目前项目中使用定时任务的方式比较混乱,有部分系统使用了cron插件,有部分系统直接使用的spring task注解配置,没有一个统一的管理平台。使用cron插件的定时任务的配置集成在ms后台,管理页面比较简陋,需要一个更加友好、功能更加完善的管理系统,专门负责定时任务的管理,包括定时任务的创建、修改、删除、触发、查看历史等

  • 对每个定时任务没有完善的监控

目前项目中没有对定时任务的监控,无法知道定时任务的执行情况和执行时间;当定时任务没有触发时没有告警;没法查看定时任务的执行历史情况

  • 单点问题

目前使用spring task或quartz来做定时任务的系统,都需要手动指定运行定时任务的机器,这样会导致某台机器负载很高,并且如果这台机器宕机了则定时任务都不会执行

  • 重复执行问题

有些定时任务本身不是幂等的,如果重复执行的话会有很多问题,比如短信的定时发送等;目前cron出现过zk断开后,导致定时任务被重复执行的情况

针对这些问题,需要设计一种能解决上述问题的新框架


2.设计

设计目标:

  1. 定时任务统一配置、统一管理

  2. 支持动态修改任务状态,动态暂停/恢复任务,即时生效

  3.  减少使用方的限制依赖

  4.  定时任务不遗漏、不重复的被执行

  5. 支持任务分片并发执行

  6. 完善的监控、统计功能


整个框架分为四部分:

  1. 调度服务器管理平台:负责定时任务的配置和管理,并定时进行任务的分配;获取每次任务执行的结果进行统计

  2. 任务执行器:通过心跳更新服务器信息;获取配置的任务信息定时执行任务,并根据任务执行情况上报执行结果

  3.  zk集群:存储任务配置信息和服务器节点信息;提供分布式协调服务

  4. 数据库:记录任务的每次执行情况,用于监控和统计

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值