首页 > 其他分享 >一种轻量级定时任务实现 | 京东云技术团队

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

时间:2023-08-02 14:32:31浏览次数:74  
标签:降级 实现 任务 京东 定时 轻量级 TBSchedule

现在市面上有各式各样的分布式定时任务,每个都有其独特的特点,我们这边的项目因为一开始使用的是分布式开源调度框架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.提供可视化界面监控任务的运行情况

作者:京东零售 马成龙

来源:京东云开发者社区

标签:降级,实现,任务,京东,定时,轻量级,TBSchedule
From: https://blog.51cto.com/u_15714439/6938201

相关文章

  • 分布式服务高可用实现:复制 | 京东物流技术团队
    1\.为什么需要复制我们可以考虑如下问题:当数据量、读取或写入负载已经超过了当前服务器的处理能力,如何实现负载均衡?希望在单台服务器出现故障时仍能继续工作,这该如何实现?当服务的用户遍布全球,并希望他们访问服务时不会有较大的延迟,怎么才能统一用户的交互体验?这些问题其实都能通过......
  • 南京东路社区--社区信息
    http://www.njjd.gov.cn:8088/njd/text.jsp?id=19&aid=238 直属单位和居委会街道所属居委和直属单位南京东路街道居委会一览表居委职务姓名办公地址云中书记朱蕙娟贵州路131弄16号主任何瑞琼贵州书记方皖瑾北京东路830弄22号主任刘佩娟厦门书记宋雁亮厦门路136弄84号主任曹红娟龙......
  • 使用轻量级 CDC debezium-server-databend 构建实时数据同步
    作者:韩山杰DatabendCloud研发工程师https://github.com/hantmacDebeziumServerDatabend是一个基于DebeziumEngine自研的轻量级CDC项目,用于实时捕获数据库更改并将其作为事件流传递最终将数据写入目标数据库Databend。它提供了一种简单的方式来监视和捕获关系型数......
  • [MySQL] 调用定时器时event_scheduler是Off问题解决
    永久解决方法:修改MySQL配置文件,设置event_scheduler=ONvi/etc/my.cnf在[mysqld]下添加一行重启mysql服务event_scheduler=ON临时方法执行mysql语句1、查看事件调度器状态showVARIABLESlike'event_scheduler'......
  • Windows下Oracle11G定时备份
    首先我们先编写定时备份用到的脚本文件 我们新建txt文本文件,输入下列内容并保存为Oracle_bak.bat 把Oracle_bak.bat文件放到oracle的目录下(其他目录也可以)@echooffecho开始备份数据库#设置备份时间格式(使用cmd输入date查看服务器时间格式,按需设置)setvar=%date:~......
  • 京东又开源一个新框架,用起来真优雅!
    DripTable是京东零售推出的一款用于企业级中后台的动态列表解决方案,项目基于React和JSONSchema,旨在通过简单配置快速生成页面动态列表来降低列表开发难度、提高工作效率。DripTable目前包含以下子项目:drip-table、drip-table-generator。各个子项目具体介绍如下:drip-tab......
  • 请求示例curl获取淘宝1688京东等电商平台商品详情数据API接口,批量采集
    获得页面使用命令:curlhttp://curl.haxx.se这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将只显示文件头部,即HTML文档的header。要全部显示,请加参数......
  • 如何用python语言获得淘宝1688京东商品详情数据API 返回值说明
    前言item_get-获得商品详情搜索商品接口,可以通过关键词请求接口拿到商品列表页面的商品标题,商品价格,商品优惠价,商品视频,商品图片,商品sku属性,商品sku属性描述,发货地,库存,商品销量,店铺优惠券,店铺促销信息等页面上有的数据均可以拿到,以上的数据可以用于行业数据分析,商品搬家业务,商品......
  • 淘宝天猫1688拼多多京东API接口,亲测有效
    Api接口也就是所谓的应用程序接口,api接口的全称是ApplicationProgramInterface,通过API接口可以实现计算机软件之间的相互通信,开发人员可以通过API接口程序开发应用程序,可以减少编写无用程序,减轻编程任务,API同时也是一种中间件,为各种不同平台提供数据共享。根据单个或分布式平台......
  • 多种语言请求【淘宝京东1688拼多多API】平台数据的方式
    首先我们以taobao商品页面采集商品详情数据为例:请求方式:HTTPS POST GET请求地址:API接口请求参数请求参数:num_iid=669646899650&is_promotion=1参数说明:num_iid:淘宝商品IDis_promotion:是否获取取促销价请求示例Python#coding:utf-8"""Compatibleforpython2.xandpyt......