分布式开源调度框架TBSchedule原理与应用

本文深入探讨TBSchedule分布式调度框架,介绍其基本概念、工作原理和源码分析,涵盖执行机注册、调度任务创建、调度策略等内容。TBSchedule基于ZooKeeper,提供分布式高可用保障,支持执行机和调度机的分布式部署。文章还通过示例展示如何配置和使用TBSchedule。
摘要由CSDN通过智能技术生成

主要内容:

第一部分 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"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
    <bean id="scheduleManagerFactory"
        class="com.taobao.pamirs.schedule.strategy.TBScheduleManagerFactory"
        init-method="init">
        <property name="zkConfig">
            <map>
                <entry key="zkConnectString" value="${schedule.zookeeper.address}" />
                <entry key="rootPath" value="${schedule.root.catalog}" />
                <entry key="zkSessionTimeout" value="${schedule.timeout}" />
                <entry key="userName" value="${schedule.username}" />
                <entry key="password" value="${schedule.password}" />
                <entry key="isCheckParentPath" value="true" />
            </map>
        </property>
    </bean>
</beans>

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/creditjob
tbschedule-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","heartBeatRate":5000,"judgeDeadInterval":60000,"sleepTimeNoData":500,"sleepTimeInterval":
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值