您的位置:首页 > 其它

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

2017-08-15 13:07 796 查看

背景

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项目




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




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,启动




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




3. lts-examples例子演示

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




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




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



3. 导入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



4. 导入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



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后台添加任务:





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





对应的代码:



4. LTS知识点

请参照: https://www.gitbook.com/book/qq254963746/lts/details

LTS源码也是简单易懂,网络上找不到说明的时候,查看源码可以让你更快的明白参数的含义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息