写点什么

一种轻量级定时任务实现 | 京东云技术团队

  • 2023-08-02
    北京
  • 本文字数:770 字

    阅读完需:约 3 分钟

一种轻量级定时任务实现 | 京东云技术团队

现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架 TBSchedule,但是这个框架依赖 ZK,由于 ZK 的不稳定性和项目老旧无人维护,导致我们的定时任务会偶发出现异常,比如:任务停止、任务项丢失、任务不执行等;


每逢 618 大促,在单量很大的情况下,如果出现定时任务异常,会导致订单的积压,进而导致订单的履约时效,严重影响商家的履约效率,造成订单取消、客户投诉等;


为了保障整体的稳定性,在改动成本比较小的情况下,达到快速实现,稳定运行,预防这种偶发异常,我们实现了一种轻量级定时任务来进行无缝隙降级;

我们使用的 TBSchedule 特性:

1.支持集群、分布式


2.灵活的任务分片


3.动态的服务扩容和资源回收


4.支持单个任务线程数的设置和实时调整

我们要实现的功能

1.为了保障单个系统的稳定性,我们去中心化,单独调度自己的系统的任务


2.为了避免 ZK 的不稳定性,我们通过 redis 实现注册中心和动态分片功能


3.避免使用 timer,改用线程池来控制线程


4.为了减少改造成本,不需要业务系统改动代码,我们自动实现 TBSchedule 内部方法,保持原来的入参


5.为了支持更多任务,支持动态调整线程数,增加系统的处理能力

方案实现

结果:

1.通过 xml 配置,引入 jar 包方式,实现快速接入


2.基本实现 TBSchedule 主要功能,基础方法和 TBSchedule 保持一致,无切换成本


3.通过 ducc 配置,配合应急预案,支持手动或者自动进行降级,无缝衔接,可随时随地操作,为大促保驾护航


4.线上已运行,动态分片稳定,心跳检查及时,随时可降级,帮助订单系统避免多次 zk 波动带来的影响


通过轻量级的降级,搭配应急预案触发,保障大促的稳定运行!!!!!

后续计划:

1.改用 Quartz 作为定时任务的触发器(也可搭配 easyjob),支持更多形式的定时配置,完美替代 TBSchedule;


2.提供可视化界面监控任务的运行情况


作者:京东零售 马成龙

来源:京东云开发者社区

发布于: 刚刚阅读数: 3
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
一种轻量级定时任务实现 | 京东云技术团队_定时任务_京东科技开发者_InfoQ写作社区