From 0c32c8ae7ae76ba8dbf2008dc0cef3257020b8c5 Mon Sep 17 00:00:00 2001 From: linzch3 Date: Wed, 6 May 2020 16:21:41 +0800 Subject: [PATCH 1/3] Update README.md --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 5e27f0168..61dd9d5fc 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ oschina地址: 这两个地址都会同步更新。感兴趣,请加QQ群:109500214 (加群密码: hello world)一起探讨、完善。越多人支持,就越有动力去更新,喜欢记得右上角star哈。 -##1.7.2-SNAPSHOT(master)变更主要点 +## 1.7.2-SNAPSHOT(master)变更主要点 1. 优化JobContext中的BizLogger,由原来的去掉了threadlocal,解决taskTracker多线程的问题, 去掉LtsLoggerFactory.getLogger()用法 ## 框架概况 @@ -54,7 +54,7 @@ LTS支持任务类型: 1. 英文名称 NodeGroup,一个节点组等同于一个小的集群,同一个节点组中的各个节点是对等的,等效的,对外提供相同的服务。 2. 每个节点组中都有一个master节点,这个master节点是由LTS动态选出来的,当一个master节点挂掉之后,LTS会立马选出另外一个master节点,框架提供API监听接口给用户。 -###FailStore +### FailStore 1. 顾名思义,这个主要是用于失败了存储的,主要用于节点容错,当远程数据交互失败之后,存储在本地,等待远程通信恢复的时候,再将数据提交。 2. FailStore主要用户JobClient的任务提交,TaskTracker的任务反馈,TaskTracker的业务日志传输的场景下。 3. FailStore目前提供几种实现:leveldb,rocksdb,berkeleydb,mapdb,ltsdb,用于可以自由选择使用哪种,用户也可以采用SPI扩展使用自己的实现。 @@ -70,22 +70,22 @@ LTS支持任务类型: ![LTS Admin](http://git.oschina.net/hugui/light-task-scheduler/raw/master/docs/LTS-Admin/LTS-Admin-cron-job-queue.png?dir=0&filepath=docs%2FLTS-Admin%2FLTS-Admin-cron-job-queue.png&oid=aecaf01bca5270a53b144891baaa3d7e56d47706&sha=a4fd9f31df9e1fc6d389a16bdc8d1964bb854766) 目前后台带有由[ztajy](https://github.com/ztajy)提供的一个简易的认证功能. 用户名密码在auth.cfg中,用户自行修改. -##特性 -###1、Spring支持 +## 特性 +### 1、Spring支持 LTS可以完全不用Spring框架,但是考虑到很用用户项目中都是用了Spring框架,所以LTS也提供了对Spring的支持,包括Xml和注解,引入`lts-spring.jar`即可。 -###2、业务日志记录器 +### 2、业务日志记录器 在TaskTracker端提供了业务日志记录器,供应用程序使用,通过这个业务日志器,可以将业务日志提交到JobTracker,这些业务日志可以通过任务ID串联起来,可以在LTS-Admin中实时查看任务的执行进度。 -###3、SPI扩展支持 +### 3、SPI扩展支持 SPI扩展可以达到零侵入,只需要实现相应的接口,并实现即可被LTS使用,目前开放出来的扩展接口有 1. 对任务队列的扩展,用户可以不选择使用mysql或者mongo作为队列存储,也可以自己实现。 2. 对业务日志记录器的扩展,目前主要支持console,mysql,mongo,用户也可以通过扩展选择往其他地方输送日志。 -###4、故障转移 +### 4、故障转移 当正在执行任务的TaskTracker宕机之后,JobTracker会立马将分配在宕机的TaskTracker的所有任务再分配给其他正常的TaskTracker节点执行。 -###5、节点监控 +### 5、节点监控 可以对JobTracker,TaskTracker节点进行资源监控,任务监控等,可以实时的在LTS-Admin管理后台查看,进而进行合理的资源调配。 -###6、多样化任务执行结果支持 +### 6、多样化任务执行结果支持 LTS框架提供四种执行结果支持,`EXECUTE_SUCCESS`,`EXECUTE_FAILED`,`EXECUTE_LATER`,`EXECUTE_EXCEPTION`,并对每种结果采取相应的处理机制,譬如重试。 * EXECUTE_SUCCESS: 执行成功,这种情况,直接反馈客户端(如果任务被设置了要反馈给客户端)。 @@ -93,20 +93,20 @@ LTS框架提供四种执行结果支持,`EXECUTE_SUCCESS`,`EXECUTE_FAILED` * EXECUTE_LATER:稍后执行(需要重试),这种情况,不反馈客户端,重试策略采用1min,2min,3min的策略,默认最大重试次数为10次,用户可以通过参数设置修改这个重试次数。 * EXECUTE_EXCEPTION:执行异常, 这种情况也会重试(重试策略,同上) -###7、FailStore容错 +### 7、FailStore容错 采用FailStore机制来进行节点容错,Fail And Store,不会因为远程通信的不稳定性而影响当前应用的运行。具体FailStore说明,请参考概念说明中的FailStore说明。 -##项目编译打包 +## 项目编译打包 项目主要采用maven进行构建,目前提供shell脚本的打包。 环境依赖:`Java(jdk1.6+)` `Maven` 用户使用一般分为两种: -###1、Maven构建 +### 1、Maven构建 可以通过maven命令将lts的jar包上传到本地仓库中。在父pom.xml中添加相应的repository,并用deploy命令上传即可。具体引用方式可以参考lts中的例子即可。 -###2、直接Jar引用 +### 2、直接Jar引用 需要将lts的各个模块打包成单独的jar包,并且将所有lts依赖包引入。具体引用哪些jar包可以参考lts中的例子即可。 -##JobTracker和LTS-Admin部署 +## JobTracker和LTS-Admin部署 提供`(cmd)windows`和`(shell)linux`两种版本脚本来进行编译和部署: 1. 运行根目录下的`sh build.sh`或`build.cmd`脚本,会在`dist`目录下生成`lts-{version}-bin`文件夹 @@ -147,9 +147,9 @@ lts-{version}-bin的文件结构 3. JobTracker启动。如果你想启动一个节点,直接修改下`conf/zoo`下的配置文件,然后运行 `sh jobtracker.sh zoo start`即可,如果你想启动两个JobTracker节点,那么你需要拷贝一份zoo,譬如命名为`zoo2`,修改下`zoo2`下的配置文件,然后运行`sh jobtracker.sh zoo2 start`即可。logs文件夹下生成`jobtracker-zoo.out`日志。 4. LTS-Admin启动.修改`conf/lts-monitor.cfg`和`conf/lts-admin.cfg`下的配置,然后运行`bin`下的`sh lts-admin.sh`或`lts-admin.cmd`脚本即可。logs文件夹下会生成`lts-admin.out`日志,启动成功在日志中会打印出访问地址,用户可以通过这个访问地址访问了。 -##JobClient(部署)使用 +## JobClient(部署)使用 需要引入lts的jar包有`lts-jobclient-{version}.jar`,`lts-core-{version}.jar` 及其它第三方依赖jar。 -###API方式启动 +### API方式启动 ```java JobClient jobClient = new RetryJobClient(); jobClient.setNodeGroup("test_jobClient"); @@ -167,7 +167,7 @@ job.setTaskTrackerNodeGroup("test_trade_TaskTracker"); Response response = jobClient.submitJob(job); ``` -###Spring XML方式启动 +### Spring XML方式启动 ```java @@ -189,7 +189,7 @@ Response response = jobClient.submitJob(job); ``` -###Spring 全注解方式 +### Spring 全注解方式 ```java @Configuration public class LTSSpringConfig { @@ -211,9 +211,9 @@ public class LTSSpringConfig { } } ``` -##TaskTracker(部署使用) +## TaskTracker(部署使用) 需要引入lts的jar包有`lts-tasktracker-{version}.jar`,`lts-core-{version}.jar` 及其它第三方依赖jar。 -###定义自己的任务执行类 +### 定义自己的任务执行类 ```java public class MyJobRunner implements JobRunner { @Override @@ -230,7 +230,7 @@ public class MyJobRunner implements JobRunner { } } ``` -###API方式启动 +### API方式启动 ```java TaskTracker taskTracker = new TaskTracker(); taskTracker.setJobRunnerClass(MyJobRunner.class); @@ -240,7 +240,7 @@ taskTracker.setClusterName("test_cluster"); taskTracker.setWorkThreads(20); taskTracker.start(); ``` -###Spring XML方式启动 +### Spring XML方式启动 ```java @@ -261,7 +261,7 @@ taskTracker.start(); ``` -###Spring注解方式启动 +### Spring注解方式启动 ```java @Configuration public class LTSSpringConfig implements ApplicationContextAware { @@ -293,12 +293,12 @@ public class LTSSpringConfig implements ApplicationContextAware { } } ``` -##参数说明 +## 参数说明 [参数说明](https://qq254963746.gitbooks.io/lts/content/use/config-name.html) -##使用建议 +## 使用建议 一般在一个JVM中只需要一个JobClient实例即可,不要为每种任务都新建一个JobClient实例,这样会大大的浪费资源,因为一个JobClient可以提交多种任务。相同的一个JVM一般也尽量保持只有一个TaskTracker实例即可,多了就可能造成资源浪费。当遇到一个TaskTracker要运行多种任务的时候,请参考下面的 "一个TaskTracker执行多种任务"。 -##一个TaskTracker执行多种任务 +## 一个TaskTracker执行多种任务 有的时候,业务场景需要执行多种任务,有些人会问,是不是要每种任务类型都要一个TaskTracker去执行。我的答案是否定的,如果在一个JVM中,最好使用一个TaskTracker去运行多种任务,因为一个JVM中使用多个TaskTracker实例比较浪费资源(当然当你某种任务量比较多的时候,可以将这个任务单独使用一个TaskTracker节点来执行)。那么怎么才能实现一个TaskTracker执行多种任务呢。下面是我给出来的参考例子。 ```java @@ -340,7 +340,7 @@ class JobRunnerB implements JobRunner { } } ``` -##TaskTracker的JobRunner测试 +## TaskTracker的JobRunner测试 一般在编写TaskTracker的时候,只需要测试JobRunner的实现逻辑是否正确,又不想启动LTS进行远程测试。为了方便测试,LTS提供了JobRunner的快捷测试方法。自己的测试类集成`com.github.ltsopensource.tasktracker.runner.JobRunnerTester`即可,并实现`initContext`和`newJobRunner`方法即可。如[lts-examples](https://github.com/ltsopensource/lts-examples)中的例子: ```java @@ -377,7 +377,7 @@ public class TestJobRunnerTester extends JobRunnerTester { } ``` -##Spring Quartz Cron任务无缝接入 +## Spring Quartz Cron任务无缝接入 对于Quartz的Cron任务只需要在Spring配置中增加一下代码就可以接入LTS平台 ```xml @@ -405,19 +405,19 @@ public class Application { 剩下的就只是在application.properties中添加相应的配置就行了, 具体见lts-example中的`com.github.ltsopensource.examples.springboot`包下的例子 -##多网卡选择问题 +## 多网卡选择问题 当机器有内网两个网卡的时候,有时候,用户想让LTS的流量走外网网卡,那么需要在host中,把主机名称的映射地址改为外网网卡地址即可,内网同理。 -##关于节点标识问题 +## 关于节点标识问题 如果在节点启动的时候设置节点标识,LTS会默认设置一个UUID为节点标识,可读性会比较差,但是能保证每个节点的唯一性,如果用户能自己保证节点标识的唯一性,可以通过 `setIdentity` 来设置,譬如如果每个节点都是部署在一台机器(一个虚拟机)上,那么可以将identity设置为主机名称 -##SPI扩展说明 +## SPI扩展说明 支持JobLogger,JobQueue等等的SPI扩展 -##[和其它解决方案比较](https://qq254963746.gitbooks.io/lts/content/introduce/compareother.html) +## [和其它解决方案比较](https://qq254963746.gitbooks.io/lts/content/introduce/compareother.html) -##LTS-Admin使用jetty启动(默认),不定期挂掉解决方案 +## LTS-Admin使用jetty启动(默认),不定期挂掉解决方案 见[issue#389](https://github.com/ltsopensource/light-task-scheduler/issues/389) From 25cc7f36a03bd0504e75c5b3623c180386e316de Mon Sep 17 00:00:00 2001 From: linzch3 Date: Wed, 6 May 2020 16:22:44 +0800 Subject: [PATCH 2/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 61dd9d5fc..50d34cf4c 100644 --- a/README.md +++ b/README.md @@ -387,7 +387,7 @@ public class TestJobRunnerTester extends JobRunnerTester { ``` -##Spring Boot 支持 +## Spring Boot 支持 ```java @SpringBootApplication From 140623ca03b316f3e152fe06655aef4ffbb2327f Mon Sep 17 00:00:00 2001 From: linzch3 Date: Wed, 6 May 2020 16:23:13 +0800 Subject: [PATCH 3/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 50d34cf4c..d43022300 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ LTS支持任务类型: ## 概念说明 -###节点组 +### 节点组 1. 英文名称 NodeGroup,一个节点组等同于一个小的集群,同一个节点组中的各个节点是对等的,等效的,对外提供相同的服务。 2. 每个节点组中都有一个master节点,这个master节点是由LTS动态选出来的,当一个master节点挂掉之后,LTS会立马选出另外一个master节点,框架提供API监听接口给用户。