LTS分布式任务框架light-task-scheduler环境搭建

背景

  • LTS是一个很不错的分布式任务框架,不但提供了非常全面的任务功能,而且还提供了一套很强大的监控后台LTS-admin。
  • 和功能的强大相比,LTS的文档就显得令人汗颜了。我觉得这是致使LTS没有真正普及的罪魁祸首。
  • 由于我本身搭建LTS环境的时候,耗费了不少时间,为了方便想使用LTS的同学不在浪费时间,特把环境搭建这部分总结一下。本文不涉及具体的LTS知识点,环境搭建好后,可以参照文末的链接地址来学习LTS知识点。LTS源码也是简单易懂,网络上找不到说明的时候,查看源码可以让你更快的明白参数的含义。

1. 环境准备

1. 安装运行zookepper

2. 安装运行mysql
    创建一个名字为lts的新数据库

2. LTS-admin安装

1. 导入https://github.com/ltsopensource/light-task-scheduler.git项目

导入light-task-scheduler

2. windows环境的话,运行build.cmd,linux运行build.sh进行编译
3. 导入lts-admin子工程

导入lts-admin子maven工程

lts-admin子工程转化为maven工程后的整体目录
导入后的整体目录

4. 修改lts-admin.cfg,lts-monitor.cfg配置

lts-admin.cfg,自行修改zookeeper和mysql配置

// 后台的用户名密码
console.username=admin
console.password=admin

# 注册中心地址,可以是zk,也可以是redis
registryAddress=zookeeper://127.0.0.1:2181
# registryAddress=redis://127.0.0.1:6379

# 集群名称
clusterName=test_cluster

# zk客户端,可选值 zkclient, curator
configs.zk.client=zkclient

# ------ 这个是Admin存储数据的地方,也可以和JobQueue的地址一样 ------
configs.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
configs.jdbc.username=fiora
configs.jdbc.password=fiora

# admin 数据使用mysql 默认 mysql, 可以自行扩展
jdbc.datasource.provider=mysql

# 使用 可选值  fastjson, jackson
# configs.lts.json=fastjson

# 是否在admin启动monitor服务, monitor服务也可以单独启动
lts.monitorAgent.enable=true

#======================以下相关配置是JobTracker的JobQueue和JobLogger的相关配置 要保持和JobTracker一样==========================
## (可选配置)jobT. 开头的, 因为JobTracker和Admin可能使用的数据库不是同一个
# LTS业务日志, 可选值 mysql, mongo
jobT.job.logger=mysql
# ---------以下是任务队列配置-----------
# 任务队列,可选值 mysql, mongo
jobT.job.queue=mysql

# ------ 1. 如果是mysql作为任务队列 (如果不配置,表示和Admin的在一个数据库)------
# jobT.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
# jobT.jdbc.username=root
# jobT.jdbc.password=root

# ------ 2. 如果是mongo作为任务队列 ------
# jobT.mongo.addresses=127.0.0.1:27017
# jobT.mongo.database=lts
# jobT.mongo.username=xxx #如果有的话
# jobT.mongo.password=xxx #如果有的话

# admin 数据使用mysql 默认 mysql, 可以自行扩展
# jobT.jdbc.datasource.provider=mysql

lts-monitor.cfg,自行修改zookeeper和mysql配置


# 注册中心地址,可以是zk,也可以是redis
registryAddress=zookeeper://127.0.0.1:2181
# registryAddress=redis://127.0.0.1:6379

# 集群名称
clusterName=test_cluster

# LTS业务日志, 可选值 mysql, mongo
configs.job.logger=mysql

# zk客户端,可选值 zkclient, curator
configs.zk.client=zkclient

# ---------以下是任务队列配置-----------
# 任务队列,可选值 mysql, mongo
configs.job.queue=mysql

# ------ 1. 如果是mysql作为任务队列 ------
configs.jdbc.url=jdbc:mysql://127.0.0.1:3306/lts
configs.jdbc.username=fiora
configs.jdbc.password=fiora

# ------ 2. 如果是mongo作为任务队列 ------
configs.mongo.addresses=127.0.0.1:27017
configs.mongo.database=lts
# configs.mongo.username=xxx #如果有的话
# configs.mongo.password=xxx #如果有的话

# admin 数据使用mysql, h2 默认 h2 embedded
jdbc.datasource.provider=mysql

# 使用 可选值  fastjson, jackson
# configs.lts.json=fastjson
5. tomcat添加lts-admin,启动

tomcat添加lts-admin,启动

6. 访问http://localhost:8080/lts-admin/,默认用户名密码admin/admin

这里写图片描述

3. lts-examples例子演示

1. 导入https://github.com/ltsopensource/lts-examples.git项目

导入examples项目

2. 导入lts-example-jobclient-spring-xml子项目,并转化为maven项目

导入lts-example-jobclient-spring-xml子项目,并转化为maven项目

运行Main.java后,在LTS-admin后台看jobclient
运行Main.java后,在LTS-admin后台看jobclient

3. 导入lts-example-jobtracker-spring-xml子项目,并转化为maven项目

 导入lts-example-jobtracker-spring-xml子项目,并转化为maven项目

lts-jobtracker.xml,自行修改zookeeper和mysql配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd"
        >

    <bean id="jobTracker" class="com.github.ltsopensource.spring.JobTrackerFactoryBean" init-method="start">
        <property name="clusterName" value="test_cluster"/>
        <property name="registryAddress" value="zookeeper://127.0.0.1:2181"/>
        <property name="listenPort" value="30005"/>
        <property name="configs">
            <props>
                <prop key="job.logger">mysql</prop>
                <prop key="job.queue">mysql</prop>
                <prop key="jdbc.url">jdbc:mysql://127.0.0.1:3306/lts</prop>
                <prop key="jdbc.username">fiora</prop>
                <prop key="jdbc.password">fiora</prop>
            </props>
        </property>
    </bean>

</beans>

运行Main.java后,在LTS-admin后台看jobtracker
运行Main.java后,在LTS-admin后台看jobtracker

4. 导入lts-example-tasktracker-spring-xml-shard子项目,并转化为maven项目

导入lts-example-tasktracker-spring-xml-shard子项目,并转化为maven项目

lts-tasktracker-shard-xml.xml,自行修改zookeeper配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd"
        >

    <bean id="springBean" class="com.github.ltsopensource.example.SpringBean"/>

    <!-- 方式1 -->
    <!-- 注解方式 -->
    <context:component-scan base-package="com.github.ltsopensource.example"/>

    <bean id="taskTracker" class="com.github.ltsopensource.spring.TaskTrackerAnnotationFactoryBean" init-method="start">
        <!-- 使用JobRunnerItem注解一定要使用 JobDispatcher -->
        <property name="jobRunnerClass" value="com.github.ltsopensource.spring.tasktracker.JobDispatcher"/>
        <!-- 如果指定为taskId, 取job.getTaskId() , 否则从 job.getParam("shardField") -->
        <property name="shardField" value="taskId"/>
        <property name="bizLoggerLevel" value="INFO"/>
        <property name="clusterName" value="test_cluster"/>
        <property name="registryAddress" value="zookeeper://127.0.0.1:2181"/>
        <property name="nodeGroup" value="test_trade_TaskTracker"/>
        <property name="workThreads" value="64"/>
        <property name="configs">
            <props>
                <prop key="job.fail.store">mapdb</prop>
            </props>
        </property>
    </bean>

    <bean id="xmlJobScheduler" class="com.github.ltsopensource.example.XmlJobScheduler"/>

    <bean class="com.github.ltsopensource.spring.tasktracker.MethodInvokingJobRunner">
        <property name="targetObject" ref="xmlJobScheduler"/>
        <property name="targetMethod" value="runJob2"/>
        <property name="shardValue" value="222"/>
    </bean>

    <bean class="com.github.ltsopensource.spring.tasktracker.MethodInvokingJobRunner">
        <property name="targetObject" ref="xmlJobScheduler"/>
        <property name="targetMethod" value="runJob1"/>
        <property name="shardValue" value="111"/>
    </bean>

</beans>

运行Main.java后,在LTS-admin后台看TaskTracker
运行Main.java后,在LTS-admin后台看TaskTracker

5. 添加一个实时任务,熟悉任务添加和执行流程

lts-tasktracker-shard-xml.xml里面已经定义了两个任务:

1: taskId为111的任务,关联到了XmlJobScheduler.runJob1方法

    <bean class="com.github.ltsopensource.spring.tasktracker.MethodInvokingJobRunner">
        <property name="targetObject" ref="xmlJobScheduler"/>
        <property name="targetMethod" value="runJob1"/>
        <property name="shardValue" value="111"/>
    </bean>

2: taskId为222的任务,关联到了XmlJobScheduler.runJob2方法

    <bean class="com.github.ltsopensource.spring.tasktracker.MethodInvokingJobRunner">
        <property name="targetObject" ref="xmlJobScheduler"/>
        <property name="targetMethod" value="runJob2"/>
        <property name="shardValue" value="222"/>
    </bean>

在LTS-admin后台添加任务:
在LTS-admin后台添加任务

添加成功

由于是实时任务,任务会立即执行,查看任务日志
查看任务日志


任务日志详细内容

对应的代码:
对应的代码

4. LTS知识点

请参照: https://www.gitbook.com/book/qq254963746/lts/details
LTS源码也是简单易懂,网络上找不到说明的时候,查看源码可以让你更快的明白参数的含义。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值