主要内容:

第一部分 TBSchedule基本概念及原理

1. 概念介绍

2. 工作原理

3. 源码分析

4. 与其他开源调度框架对比

第二部分 TBSchedule分布式调度示例

1. TBSchedule源码下载

2. 引入源码Demo开发示例

3. 控制台配置任务调度

4. selectTasks方法参数说明

5. 创建调度策略参数说明

6. 创建任务参数说明

第一部分 TBSchedule基本概念及原理

1. 概念介绍

TBSchedule是一个支持分布式的调度框架,能让一种批量任务或者不断变化的任务,被动态的分配到多个主机的JVM中,不同的线程组中并行执行。基于ZooKeeper的纯Java实现,由Alibaba开源。

2. 工作原理

TBSchesule对分布式的支持包括调度机的分布式和执行机的分布式,其网络部署架构图如下:

2.1 数据存储

执行机和调度机均以ZooKeeper为注册中心,所有数据以节点及节点内容的形式注册,通过定时汇报主机状态保持存活在ZooKeeper上。

首先看下执行机对ZooKeeper的使用配置文件:

<?xml version="1.0" encoding="utf-8"?>

1)执行机部署启动,会在ZooKeeper上创建永久根节点schedule.zookeeper.address,其后所有的操作均在该根节点下进行。

这里以/ttest/creditjob为根节点,查看执行机注册后情况:

[zk: 172.26.50.86:2181(CONNECTED) 28] ls /ttest/creditjob[strategy, baseTaskType, factory][zk: 172.26.50.86:2181(CONNECTED) 29] ls /ttest/creditjob/factory[127.0.0.1$MIE-ZHANGTAO-D1$9D3029EC0C574403B6CFD0C146644A77$0000000000, 127.0.0.1$MIE-ZHANGTAO-D1$D826BC6565DC4D6CB85F7AE321EE51AE$0000000001]

可以看到根节点下面有3个永久子节点,strategy存储调度机创建的策略信息,baseTaskType存储调度机创建的任务信息,factory存储执行机注册的主机信息。每台执行机启动后,都会在factory下创建一个临时顺序子节点,该节点名是由TBSchedule源码生成的主机唯一表示。

根节点内容为当前TBSchedule内置版本号,可在程序修改,实际没什么意义。

[zk: 172.26.50.86:2181(CONNECTED) 17] get /ttest/creditjobtbschedule-3.2.12

2)调度机部署启动,这时不会对ZooKeeper节点做任何操作。打开调度机配置面板:

配置好ZooKeeper接入点,点击管理主页,进入调度任务管理面板:

输入各项参数创建新任务后,此时会在baseTaskType下面创建任务名称永久子节点(调度机所有都宕机重启后,仍能保持数据的完整性),而当前节点的内容就是配置的各项参数。

[zk: 172.26.50.86:2181(CONNECTED) 37] ls /ttest/creditjob/baseTaskType[IScheduleTaskDealSingleTest][zk: 172.26.50.86:2181(CONNECTED) 39] get /ttest/creditjob/baseTaskType/IScheduleTaskDealSingleTest{"baseTaskType":"IScheduleTaskDealSingleTest

struts框架的原理和应用_分布式开源调度框架TBSchedule原理与应用相关推荐

  1. java搭建线程池框架,JAVA线程池管理及分布式HADOOP调度框架搭建

    大家看到了线程的好处了吧!单线程需要10S,10个线程只需要1S.充分利用了系统资源实现并行计算.也许这里会产生一个误解,是不是增加的线程个数越多效率越高.线程越多处理性能越高这个是错误的,范式都要合 ...

  2. python分布式任务调度_分布式定时任务调度框架

    1. 目标 把定时任务通过集群的方式进行管理调度,并采用分布式部署,保证系统的高可用,提高了容错.那么如何保证定时任务只在集群的某一个节点上执行,或者一个任务如何拆分为多个独立的任务项,由分布式的机器 ...

  3. 分布式事件调度框架tiger

    一.背景 在后台,有很多业务场景需要定时处理一个任务,或在某件事情发生后处理一个任务. 比如,dw团队后台数据同步时,一般会每天凌晨某个时间点跑一次数据同步任务.这样的业务场景1(定时处理任务),很适 ...

  4. JAVA线程池管理及分布式HADOOP调度框架搭建

    平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发攻城师却在这个上面吃了不少苦头.怎么做一套简便的线程开发模式 ...

  5. 开源调度框架xxl-job集成SpringBatch详解

    文章目录 一.启动xxl-job调度中心 二.配置部署执行器项目 1.maven依赖 2.执行器配置 3.执行器组件配置 4.springbatch调度任务开发 5.调度中心,新建执行器 6.调度中心 ...

  6. python 分布式 调度 管理_分布式云调度处理系统

    分布式云调度处理系统. 项目参考xxl-job进行若干改动. 项目基于quartz并进行若干扩展而成,适用于公司内部做定时调度处理,方便,快捷,简单. 支持bean, groovy, shell, p ...

  7. 调度框架学习笔记(3)—— 集群调度框架的架构演进过程

    本章是 The evolution of cluster scheduler architectures 文章的学习笔记.这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展. 首先介绍一下这 ...

  8. python分布式日志收集系统_分布式日志收集系统Scribe原理

    1.分布式日志收集系统:背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应 ...

  9. net core mysql开源框架_.NetCore开源集成框架

    (感兴趣的Fork给个小星星吧~) AspNetCoreScaffolding 本框架在.netCore和.netStandard的基础上,集成了多种中间件 .NetCore集成框架,即开即用 如果对 ...

最新文章

  1. js中delete是es6_js和es6中的字符串方法总结
  2. vs2012 error c4996: 'fopen': This function or variable may be unsafe
  3. 同步模式下的端口映射程序
  4. Eclipse Debugger Error - Web Launch Already running的处理方法
  5. 好文推荐 | 从数据的属性看数据资产
  6. sprint 3 总结
  7. 逆战选择服务器后显示器,让你的画面更流畅 逆战FPS值调节方法
  8. yaml与json的对比
  9. 增大表名最大长度_全球最大室内滑雪场结构技术解密!
  10. 白话关于API与SDK的区别
  11. matlab 扩大虚拟内存,matlab 扩大虚拟内存
  12. Java动态数组ArrayList
  13. 如何取消计算机中的0-9,告诉你如何关闭win10易升程序
  14. 浅谈互联网寒冬与经济形势
  15. 区块链大咖谈之陈昌:联盟链和公有链混合架构如何实现?
  16. java 水晶按钮图片_JAVA GUI 开发---水晶图片按钮
  17. c#winform——Gobang五子棋简易版双人对战制作(基本结构+代码)
  18. Ethernet设备中网络变压器的作用
  19. Oracle查询表名注释及表字段注释
  20. GEANT4 中的NIST MATERIAL 材料名录

热门文章

  1. imreadraw的注册
  2. GitLab 8.9 新增文件锁 和 U2F硬件支持
  3. list mybatis批量保存_如何实现mybatis批量将list数据插入到数据库
  4. http get和post的区别
  5. iservice封装有哪些方法_Java基础之类与对象、封装、构造方法·6(重点)
  6. elasticsearch java对象 驼峰原则_2020年Java基础高频面试题汇总(1.4W字详细解析)...
  7. php 可变变量 $$name
  8. keyboard键盘demo
  9. 【数据结构】线段树(interval tree)
  10. 页脚保持在未满屏页面的底部