说明:

tbschedule项目其实可以分为两部分:
1)schedule管理控制台。负责控制、监控任务执行状态2)实际执行job的客户端程序。在实际使用时,首先要启动zookeeper, 然后部署tbschedule web界面的管理控制台,最后启动实际执行job的客户机器。这里zookeeper并不实际控制任务调度,它只是负责与N台执行job的客户端通讯,协调、管理、监控这些机器的运行信息。实际分配任务的是tbschedule管理控制台,控制台从zookeeper获取job的运行信息。tbSchedule通过控制ZNode的创建、修改、删除来间接控制Job的执行,执行Job的客户端会监听它们对应ZNode的状态更新事件,从而达到通过tbSchedule控制Job执行的目的。

解决项目依赖:

下载源码tbschedule 源码(使用svn 直接checkout)

进入到 D:\tbschedule\trunk 目录(根据自己下载的源码目录),运行打包命令:
>mvn clean install -Dmaven.test.skip=true
运行后tbscheduling.jar 被install 到本地仓库(也可以安装到私服),搭建项目即可依赖。(注意打包的版本)

[html] view plain copy

  1. <dependency>
  2. <groupId>com.taobao.pamirs.schedule</groupId>
  3. <artifactId>tbschedule</artifactId>
  4. <version>3.3.3.2</version>
  5. </dependency>

启动schedule管理控制台:

源码中 console/ScheduleConsole.war 包提制到tomcat,启动即可。(要提前安装zookeeper,这里使用的本机的zookeeper。多个ZKServer可以使用逗号分隔。)
访问schedule管理控制台,配置zookeeper:http://localhost:8080/ScheduleConsole/schedule/config.jsp

配置完后,可以访问“管理页面”
http://localhost:8080/ScheduleConsole/schedule/index.jsp?manager=true
TbSchedule Console Web站点对应的两个地址
[监控页面]       http://localhost:8081/ScheduleConsole/schedule/index.jsp
[管理页面]       http://localhost:8081/ScheduleConsole/schedule/index.jsp?manager=true
如果以上地址能正常访问则TbSchedule Console的部署配置完成。

tbscheduling.jar接口说明:
包含三个业务接口:
1、IScheduleTaskDeal 调度器对外的基础接口,是一个基类,并不能被直接使用
2、IScheduleTaskDealSingle 单任务处理的接口,继承 IScheduleTaskDeal
3、IScheduleTaskDealMulti 可批处理的任务接口,继承 IScheduleTaskDeal
IScheduleTaskDeal 调度器对外的基础接口

[java] view plain copy

  1. public interface IScheduleTaskDeal<T> {
  2. /**
  3. * 根据条件,查询当前调度服务器可处理的任务
  4. * @param taskParameter 任务的自定义参数
  5. * @param ownSign 当前环境名称
  6. * @param taskQueueNum 当前任务类型的任务队列数量
  7. * @param taskQueueList 当前调度服务器,分配到的可处理队列
  8. * @param eachFetchDataNum 每次获取数据的数量
  9. * @return
  10. * @throws Exception
  11. */
  12. public List<T> selectTasks(String taskParameter,String ownSign,int taskQueueNum,List<TaskItemDefine> taskItemList,int eachFetchDataNum) throws Exception;
  13. /**
  14. * 获取任务的比较器,只有在NotSleep模式下需要用到
  15. * @return
  16. */
  17. public Comparator<T> getComparator();
  18. }

IScheduleTaskDealSingle 单任务处理的接口

[java] view plain copy

  1. public interface IScheduleTaskDealSingle<T> extends IScheduleTaskDeal<T> {
  2. /**
  3. * 执行单个任务
  4. * @param task Object
  5. * @param ownSign 当前环境名称
  6. * @throws Exception
  7. */
  8. public boolean execute(T task,String ownSign) throws Exception;
  9. }

IScheduleTaskDealMulti 可批处理的任务接口

[java] view plain copy

  1. public interface IScheduleTaskDealMulti<T>  extends IScheduleTaskDeal<T> {
  2. /**
  3. *  执行给定的任务数组。因为泛型不支持new 数组,只能传递OBJECT[]
  4. * @param tasks 任务数组
  5. * @param ownSign 当前环境名称
  6. * @return
  7. * @throws Exception
  8. */
  9. public boolean execute(Object[] tasks,String ownSign) throws Exception;
  10. }

配置说明:

任务名称:用于标识“任务”和策略的关联关系;

任务名称:对应调度策略中的任务名称,标识任务和策略的关联关系;

任务处理的SpringBean:对应代码中调度任务的bean

每次获取数据量:调度任务中selectTasks方法中 eachFetchDataNum参数接收

自定义参数:调度任务中selectTasks方法中 taskParameter 参数接收

任务分隔:就是“TaskItem任务项”的说明,参考:http://code.taobao.org/p/tbschedule/wiki/index/  中的“TaskItem任务项”

处理模式:Sleep模式和NotSleep模式的区别
1、ScheduleServer启动的工作线程组线程是共享一个任务池的。
2、在Sleep的工作模式:当某一个线程任务处理完毕,从任务池中取不到任务的时候,检查其它线程是否处于活动状态。如果是,则自己休眠;
   如果其它线程都已经因为没有任务进入休眠,当前线程是最后一个活动线程的时候,就调用业务接口,获取需要处理的任务,放入任务池中,
   同时唤醒其它休眠线程开始工作。
3、在NotSleep的工作模式:当一个线程任务处理完毕,从任务池中取不到任务的时候,立即调用业务接口获取需要处理的任务,放入任务池中。
4、Sleep模式在实现逻辑上相对简单清晰,但存在一个大任务处理时间长,导致其它线程不工作的情况。
5、在NotSleep模式下,减少了线程休眠的时间,避免大任务阻塞的情况,但为了避免数据被重复处理,增加了CPU在数据比较上的开销。
   同时要求业务接口实现对象的比较接口。
6、如果对任务处理不允许停顿的情况下建议用NotSleep模式,其它情况建议用sleep模式。

测试代码:http://code.taobao.org/svn/tbschedule-test/

参考:

http://code.taobao.org/p/tbschedule/wiki/index/

http://www.111cn.NET/jsp/Jsp-Servlet/72059.htm

转载于:https://my.oschina.net/treeHeartPig/blog/841775

tbschedule相关推荐

  1. 淘宝分布式调度框架TBSchedule

    一.TBSchedule初识 时下互联网和电商领域,各个平台都存在大数据.高并发的特点,对数据处理的要求越来越高,既要保证高效性,又要保证安全性.准确性.TBSchedule的使命就是将调度作业从业务 ...

  2. 【JEECG TBSchedule】详解应对平台高并发的分布式调度框架TBSchedule

    原文地址:http://geek.csdn.net/news/detail/65738 [编者按] TBSchedule是一款非常优秀的高性能分布式调度框架,本文是作者结合多年使用TBSchedule ...

  3. struts框架的原理和应用_分布式开源调度框架TBSchedule原理与应用

    主要内容: 第一部分 TBSchedule基本概念及原理 1. 概念介绍 2. 工作原理 3. 源码分析 4. 与其他开源调度框架对比 第二部分 TBSchedule分布式调度示例 1. TBSche ...

  4. TBSchedule源码阅读1-TBScheduleManagerFactory

    TBSchedule 1 TBScheduleManagerFactory 初始化     成员变量     ZKManager;     IScheduleDataManager;     Sche ...

  5. 分布式调度框架Tbschedule运行流程【03】

    tb-schedule调度:              1.初始化ZK连接              2.创建 baseTaskType节点,检测 本机与注册中心的心跳时间差              ...

  6. TBschedule入门

    tbschedule 淘宝的wiki: http://code.taobao.org/p/tbschedule/wiki/index/ 截取内容如下: 此文档内部包括: 1.设计目标说明 2.主要概念 ...

  7. CSDN首发丨TBSchedule应用实战手册

    作者:鲁江(TBSchedule技术交流微信订阅号ID:tbschedule),1989年8月17日生,2010年毕业后供职于<北京京东科技有限公司>.参与工作消息中间件,报表中心,推荐系 ...

  8. 分布式定时任务调度平台TBSchedule技术介绍

    1. 概述 TBSchedule是阿里开发的一款分布式任务调度平台,旨在将调度作业从业务系统中分离出来,降低或者是消除和业务系统的耦合度,进行高效异步任务处理,目前被广泛应用在阿里巴巴.淘宝.支付宝. ...

  9. TBSchedule淘宝开源定时任务调度框架(附客户端源码demo)

    淘宝开源定时任务调度框架 下载TBSchedule源码svn地址:code.taobao.org/p/tbschedule/src/trunk/ 内容包括两部分:TBSchedule源码及开发依赖包t ...

  10. 入理解分布式调度框架TBSchedule及源码分析

    简介 由于最近工作比较忙,前前后后花了两个月的时间把TBSchedule的源码翻了个底朝天.关于TBSchedule的使用,网上也有很多参考资料,这里不做过多的阐述.本文着重介绍TBSchedule的 ...

最新文章

  1. java 2分钟_java – 为什么我的应用程序启动时间超过2分钟?
  2. 图表示学习+图神经网络:破解AI黑盒,揭示万物奥秘的钥匙!
  3. HTML5学习笔记简明版(3):新元素之hgroup,header,footer,address,nav
  4. JMeter脚本获取变量名、检验字符串值
  5. sql 赋值 null_巩固SQL - 窗口函数amp;变量amp;数据透视图
  6. SQLServer学习笔记系列4
  7. 并查集——家谱(洛谷 P2814)
  8. 20个Excel操作技巧,提高你的数据分析效率
  9. 1 分钟抗住 10 亿请求!某些 App 是怎么做到的? | 原力计划
  10. Mysql和Oracle实现序列自增
  11. Lightbox JS(图片显示控件)
  12. 第1关:MapReduce综合应用案例 — 电信数据清洗
  13. exchange2016卸载报错安装程序无法卸载,因为mscorsvw(9476)具有打开的文件
  14. MATLAB中自带的Classification Learner的学习资料
  15. 使用U盘制做CentOS7.6安装盘并安装CentOS7.6系统
  16. Android-APK瘦身实践
  17. plt.plot()函数解析(最清晰的解释)
  18. 士成兄的面试经历(放弃5家offer终去了华为)
  19. 怎样成为一名优秀的程序员
  20. 2011高清电影《我知女人心》刘德华 巩俐 1204*576高清下载

热门文章

  1. 软件测试VS软件开发哪个好?怎么选择
  2. 信噪比计算方式(小问题解惑)
  3. calendar控件使用 extjs_Calendar 日历控件使用
  4. 小程序 canvas旋转文字
  5. 宝马无法gps定位_宝马5系GPS定位不准确怎么回事
  6. 大牛直播SDK(android/iOS部分)最新功能列表
  7. Kracker路由器破解工具
  8. 推荐更好用的网络检测命令
  9. linux修改u盘mbr,远景论坛U盘版 完美 4G/8G/16G WINPE+LINUXPE+MACPE+10.9正式版MBR安装版 制作超简单...
  10. 谈谈柔性屏/可折叠屏的过去、现在和未来