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/detailsLTS源码也是简单易懂,网络上找不到说明的时候,查看源码可以让你更快的明白参数的含义。
相关文章推荐
- LTS 轻量级分布式任务调度框架(Light Task Scheduler)
- LTS light-task-scheduler轻量级分布式任务调度框架学习
- LTS 轻量级分布式任务调度框架(Light Task Scheduler)用户文档.md
- LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷
- LTS 轻量级分布式任务调度框架(Light Task Schedule)
- LTS 轻量级分布式任务调度框架(Light Task Schedule)
- 【selenium】- 自动化框架环境搭建
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度
- 搭建 PhalconPHP 框架开发环境
- 持续集成:Jmeter+Maven+Jenkins自动化框架搭建(五):不同环境配置及运行结果判断
- window环境搭建 tensorflow 框架深度学习开发环境
- SSH项目环境搭建和框架源码分析
- web框架之Spring-MVC环境搭建
- Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)
- 自己DIY一个智能家居模型框架--环境搭建
- Java Web开发SpringMVC和MyBatis框架开发环境搭建和简单实用
- ABP框架个人开发实战(1)_环境搭建
- 资源隔离调度算法测试(isolated_scheduler)及openstack集群开发环境搭建
- SSH框架总结(框架分析+环境搭建+实例源码下载)
- 关于Spring 任务调度之task:scheduler与task:executor配置的详解