TBSchedule

分布式调度任务

有些话、适合烂在心里 提交于 2020-10-29 06:01:41
1什么是分布式任务调度 1.1任务举例-定时任务 1.1.1实际案例 1.1.1.1网贷-日终任务 1.1.1.2其它业务-全日频繁 1.1.1.3 Crontab、shell 1.2产生问题 PK 解决问题 1.2.1迎面遇到第一个问题:集群重复执行 每台虚机在同一时间都会执行定时任务: Tomcat Nginx Tomcat 尝试解决:将任务单独拆出放入一台虚机(TASK)。 Nginx Tomcat TASK Tomcat 产生新的问题: 1.即便TASK 100%可靠永远不宕。也有极大的停机风险,不确定在停机期间是否有任务被遗漏( misfire )。 2.任务更多,更复杂,占越来越多的资源,性能问题凸显,任务队列阻塞风险。 1.2.2Quartz集群 Nginx Tomcat Tomcat DB(quartz) 之后看了眼quartz官方logo,感觉自己萌萌的。 1.2.3管理、调度任务产生问题 萌不过三天。发现这个定时任务策略要修改, 同样,下面这个任务不需要做,取消掉 也无法及时监控:报错了吗,运行成功了吗? 随着业务发展暴露出越来越多的问题: 例如: ---- 截图摘自沈建林“分布式调度系统介绍”中的五个问题 1.2.4解决问题 解决问题 解决问题 集思广益造轮子: Quartz,Xxl-job,elastic-job,tbschedule,uncode

房价网是怎么使用分布式作业框架elastic-job

泄露秘密 提交于 2020-08-04 14:15:54
长按二维码,关注我们 老文章,由于之前手误被删除了,重新发出来 Elastic-Job是什么? Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。 官网地址: http://elasticjob.io/ Github: https://github.com/elasticjob/elastic-job 为什么要使用Elastic-Job 目前我们公司用的是基于Linux Crontab的定时任务执行器。 存在如下问题: 无法集中管理任务 不能水平扩展 无可视化界面操作 存在单点故障 除了Linux Crontab在java这块的方案还有 Quartz,但 Quartz缺少分布式并行调度的功能。 存在的问题也很明显: 当我的项目是一个单体应用时,在里面基于Quartz起一个定时任务,可以很愉快的运行 当我的项目做了负载,扩充到3台节点时,3个节点上的任务会同时执行,数据乱了 同时执行要保证数据没问题需要引入分布式锁来调度,难度增大 怎么解决? 1.自研框架

阿里巴巴分布式调度引擎tbschedule实战三tbschedule的调度原理

那年仲夏 提交于 2019-12-20 02:11:58
大家好,在讲tbschedule使用之前,我们先了解下tbschedule的调度原理,不然大家对tbschedule的配置会不太理解 任务分片,调度器/线程组!我们前面对这些名词做一个大概的解释! 今天针对这些名词我们来深入的讲解下tbschedule的调度原理。 第一张图 还是我们前面讲过的分布式多线程多主机复杂模式。其实这是参照tbschedule的原理画出的一张模式图! 我们看课件的 第二张图 ! 这张图是tbschedule的调度原理图!下面我们来讲下这张图!首先是我们最原始的大任务!将a表数据备份到b表去!总数据量是100万条!tbschedule会把copyTask这个任务做拆分。具体拆分出多少个小任务出来。这些在我们的管控台都是可配置的。图中是将大任务总共拆分出了10个小任务!每个小任务处理10w条数据。这样就分给多台机器执行就不会产生重复数据了。针对这个大任务!我们需要创建多少个线程来运行!这一点是在管控台去配置的!比如说我们需要创建25工作个线程来执行这10歌小任务!在tbschedule里面每5个线程被分为一组!这一组线程称为一个调度器!能明白这个意思吧!tbschedule里配置创建多少个线程来执行任务!它配置的单位是调度器!图中总共配了点5个调度器。那么tbschedule会创建25个线程来完成这些小任务!每个调度器被分到了2个小任务

TBSchedule应用实战(零)—— 前言

◇◆丶佛笑我妖孽 提交于 2019-12-03 06:48:06
TaoBaoSchedule(以下简称tbs)是国产市面上最早开源得一款“分布式定时任务调度”框架。开源之初因其卓越的性能、近乎零侵入的api设计、去中心化的设计思想、故障自动转移等等特性,几乎是一经推出便受到国内外无数企业的关注与青睐,直接推动了后续一众开源任务调度软件的出现。只可惜,2014年tbs早期作者空玄、玄难、huijin在发布3.2.18-SNAPSHOT版本后该项目陷入长达近2年的停更,官方最后一次更新是由署名zzllkk2003发布的3.3.3.2正式版(仍有BUG)。 作者混迹于官方tbs技术讨论群(89558542)已久,帮助解决问题无数,现应一众朋友邀请将tbs再一次做一个全面的介绍。虽然tbs源码层次分明,结构清晰,但涉及线程池与并发编程知识点较多,为面向各个开发龄的朋友快速上手,作者故意反其道而行之由浅到深进行《TBSchedule应用实战》系列课程。请各位对tbs感兴趣的朋友耐心、仔细地读完每一节课程,希望哪怕只有一年java开发经验的朋友看完该系列之后,也能够对tbs有一个全面地认识以及较强的应用能力。 另外,tbs目前已得到华序授权由本人( https://github.com/lujiang-wed/ )负责后期更新及维护。在严格遵守“Apache 2.0”以及“Anti 996”开源协议下已更名为《wed-job》并更新至1.0.1正式版