ltsopensource / light-task-scheduler Goto Github PK
View Code? Open in Web Editor NEWDistributed Scheduled Job Framework
License: Apache License 2.0
Distributed Scheduled Job Framework
License: Apache License 2.0
如题,这个任务会不会死掉
一台启动的JobTracker,TaskTracker,JobClient, 一台启动了lts-admin,
2台阿里云服务器,但是2台内网是不通的.
为啥安装了JobTracker,TaskTracker,JobClient的服务器A(数据库在这个服务器上)会去请求lts-admin的服务器B
异常: [2017-02-10 14:05:03.110]
[LTS-Monitor-data-collector-thread-1][WARN][MStatReportWorker] [LTS]
Report Monitor Data Failed: POST ERROR: url=http://10.xx.xx.233:8730/MO_10.xx.xx.233_31606_10-47-53.689_1/monitor_data_add_cmd, errorMsg=connect timed out, lts version: 1.6.9, current host: 10.xx.xx.220
上面日志显示的是阿里云内网ip地址,为啥,A服务器回去请求B服务器(lts-admin) ?
当返回的日志数据是html代码的时候,,lts-admin查看显示数据的时候,会乱码
服务运行在美西环境,会有夏令时的概念,不知道是不是可以支持?另外,可以指定时区的执行吗?
如题
想在公司推LTS,需要写压测结果数据,不知道是否有相关数据呢?
我们的想把提交管理程序集成到自己的web应用里,但是我看了下都是vm格式文件,有什么办法快速转成jsp版本的?
com.github.ltsopensource.json.JSONArray#JSONArray(Object array)
if (array.getClass().isArray()) {
//omitted...
}
//此处应该加个else->
else
//<-
if (Collection.class.isAssignableFrom(array.getClass())) {
//omitted...
} else {
//omitted...
}
com.lts.admin.web.api.JobQueueApi.addJob(JobQueueApi.java:253)
这行代码有bug,在通过webui添加非repeat job时,repeatcount(Integer类型)默认是null,导致setRepeatCount报NullPointException.
您好,能否提供一下lts升级(如从1.6.3升级到1.6.5版本)文档,特别是表结构的升级,不知道新版本都改了哪些字段、新增了哪些字段,还有配置等方面,谢谢。
您好,
我看到可以手动写Cron表达式,而不使用前端的点击插件进行Cron表达式构造。但是感觉和Cron4j的表达式定义不一样啊,看了下源码里面,一共支持7个位置的定义,cron4j支持5个位置。除了这个以外:
protected static final int SECOND = 0;
protected static final int MINUTE = 1;
protected static final int HOUR = 2;
protected static final int DAY_OF_MONTH = 3;
protected static final int MONTH = 4;
protected static final int DAY_OF_WEEK = 5;
protected static final int YEAR = 6;
请问各个位置的要求是什么啊?
每个位置都要填写么?
JobClient的回调不是很稳定,经常会遇到任务运行完成,表lts_job_log_po可以查到任务已完成,但是没有触发回掉,请问是我配置问题还是……
@qq254963746, 能否考虑引入分片的支持。JOB调度处理中若遇到数据量比较大的场景,分片是需要考虑的,当当的elastic-job有这样明确的JOB来引入分片支持(但感觉不是很完善)。从任务处理的成熟度而言,spring batch提供了比较多的选择(但有时候,你需要依赖该框架才能实现JOB处理数据量比较大的场景——相应的elastic-job就没有那么完善)。light-task-scheduler会引入相关的治理方式麽(或者有其他集成的解决方案)
版本 1.6.9
JobTracker个数:2
任务类型:Cron-依赖上一周期
当前逻辑:
当TaskTracker完成任务后,随机选择一个JobTracker返回JobRunResult,JobTracker会根据当前服务器时间产生下一次触发任务。
场景:
假设JobTracker-1在 10:00(JobTracker-1的服务器时间)分发cron任务,task-tracker迅速完成任务并返回至JobTracker-2,而此时JobTracker-2的服务器时间为09:59。这样JobTracker-2计算出的下一个触发时间点依然是10:00,那么该cron任务在10:00时间点会被触发多次。
这个问题是否有办法规避?或者属于bug,需要修复?
如果多实例中每个实例都有任务,replaceOnExist=true是不是意味着任务只有一个实例的任务会执行;反之,如果是false,就是每个实例的任务都会执行一次?
*** (1) TRANSACTION:
TRANSACTION 118358, ACTIVE 27 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 3 lock struct(s), heap size 1184, 2 row lock(s)
MySQL thread id 1785, OS thread handle 0x7f6079fff700, query id 54384 xxx.com 192.168.237.214 bjs Sending data
SELECT * FROM `lts_job_po` WHERE `task_tracker_node_group` = 'test_trade_TaskTracker' AND is_running = 0 AND `trigger_time` < 1433224860874 ORDER BY `trigger_time` ASC, `priority` ASC, `gmt_created` ASC LIMIT 0, 1 FOR UPDATE
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 608 page no 10 n bits 88 index `PRIMARY` of table `bjs`.`lts_job_po` trx table locks 1 total table locks 4 trx id 118358 lock_mode X locks rec but not gap waiting lock hold time 0 wait time before grant 0
*** (2) TRANSACTION:
TRANSACTION 118703, ACTIVE 2 sec updating or deleting
mysql tables in use 1, locked 1
4 lock struct(s), heap size 1184, 3 row lock(s), undo log entries 1
MySQL thread id 1364, OS thread handle 0x7f6077bff700, query id 55023 xxx.com 192.168.237.214 bjs updating
UPDATE `lts_job_po` SET is_running = 0, gmt_modified = 1433224865235 , trigger_time = 1433228400000 WHERE job_id = '2389F6E0069111E5AAB8000C29AB3968'
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 608 page no 10 n bits 88 index `PRIMARY` of table `bjs`.`lts_job_po` trx table locks 1 total table locks 4 trx id 118703 lock_mode X locks rec but not gap lock hold time 2 wait time before grant 2
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 608 page no 7 n bits 144 index `idx_triggerTime_priority_gmtCreated` of table `bjs`.`lts_job_po` trx table locks 1 total table locks 4 trx id 118703 lock_mode X locks rec but not gap waiting lock hold time 0 wait time before grant 0
*** WE ROLL BACK TRANSACTION (1)
比如任务B要依赖A的结果而启动。如果A成功那么启动B, 如果A失败 那么B不启动
收集下名单列表,然后放在readme最底下,广告广告。
报错信息如下所示,找不到 mysql logger的 扩展,我知道lts-logger下有一个子模块叫 lts-logger-mysql,最初以为是该模块没有在lts-example上配置依赖,后来查看一下jar包,里面确实有该模块的class文件。另外,在eclipse和IDEA中编译运行没问题,但使用maven打包成jar后 java -jar 就不行(打包时已经将所有依赖都打进jar包),报错信息如下:
[ERROR] [09:28:38] com.lts.core.cluster.JobNode - [LTS] Start failed!, lts version: 1.5-SNAPSHOT-jar-with-dependencies, current host: 10.37.129.2
java.lang.IllegalStateException: No such extension com.lts.biz.logger.JobLoggerFactory by name mysql
at com.lts.core.extension.ExtensionLoader.findException(ExtensionLoader.java:304)
at com.lts.core.extension.ExtensionLoader.createExtension(ExtensionLoader.java:315)
at com.lts.core.extension.ExtensionLoader.getExtension(ExtensionLoader.java:175)
at com.lts.biz.logger.JobLoggerFactory$Adpative.getJobLogger(JobLoggerFactory$Adpative.java)
at com.lts.jobtracker.JobTracker.innerStart(JobTracker.java:47)
at com.lts.core.cluster.AbstractJobNode.start(AbstractJobNode.java:52)
at com.lts.example.api.JobTrackerTest.testMysqlQueue(JobTrackerTest.java:84)
at com.lts.example.api.JobTrackerTest.main(JobTrackerTest.java:17)
[ERROR] [09:28:40] com.lts.core.cluster.JobNode - [LTS] Stop failed!, lts version: 1.5-SNAPSHOT-jar-with-dependencies, current host: 10.37.129.2
java.lang.NullPointerException
at com.lts.core.cluster.AbstractJobNode.stop(AbstractJobNode.java:69)
at com.lts.example.api.JobTrackerTest$2.run(JobTrackerTest.java:89)
at java.lang.Thread.run(Thread.java:745)
添加任务的时候,不需要把任务对应的Jar包一起上传吗?lts是如何启动一个任务的呢?
简单试用了下,很棒的项目。有个小问题:通过lts-admin.cmd启动admin的时候,log报错缺少commons-lang包,是由于spring初始化velocityConfig bean的时候需要它。
有没有好的实践建议
1、任务历史
2、日志
当多个服务器运行时,希望可以给某一个任务添加固定ip运行,或者过滤某ip运行,,,因为有时候需求,希望某一个定时任务只在固定的服务器上运行,,,
Caused by: java.sql.SQLException: Table 'lts.lts_wjq_test_trade_TaskTracker' doesn't exist Query: SELECT count(1) FROM lts_wjq_test_trade_TaskTracker
WHERE task_tracker_node_group = ? Parameters: [test_trade_TaskTracker]
at com.github.ltsopensource.store.jdbc.dbutils.DbRunner.rethrow(DbRunner.java:231)
at com.github.ltsopensource.store.jdbc.dbutils.DbRunner.query(DbRunner.java:131)
at com.github.ltsopensource.store.jdbc.dbutils.DbRunner.query(DbRunner.java:97)
at com.github.ltsopensource.store.jdbc.SqlTemplateImpl.query(SqlTemplateImpl.java:100)
at com.github.ltsopensource.store.jdbc.SqlTemplateImpl$3.run(SqlTemplateImpl.java:94)
at com.github.ltsopensource.store.jdbc.SqlTemplateImpl.execute(SqlTemplateImpl.java:30)
at com.github.ltsopensource.store.jdbc.SqlTemplateImpl.query(SqlTemplateImpl.java:91)
at com.github.ltsopensource.store.jdbc.SqlTemplateImpl.queryForValue(SqlTemplateImpl.java:104)
at com.github.ltsopensource.store.jdbc.builder.SelectSql.single(SelectSql.java:271)
2016-07-10 00:00:00[LTS-Monitor-data-collector-thread-1:286184274]-[ERROR] [LTS]MStatReportWorker collect failed., lts version: 1.6.8, current host: 192.168.111.112
java.lang.StackOverflowError
at java.util.ArrayList$SubList.add(ArrayList.java:1047)
at java.util.ArrayList$SubList.add(ArrayList.java:1047)
....
ArrayList size > 3000000
小白大概看了下 感觉还不错 准备撸下代码 LZ 微信群搞起啊 这年代 QQ早就不用了
├── bin
│ ├── jobtracker.cmd
│ ├── jobtracker.sh
│ ├── lts-admin.cmd
│ ├── lts-admin.sh
│ ├── lts-monitor.cmd
│ ├── lts-monitor.sh
│ └── tasktracker.sh
├── conf
│ ├── log4j.properties
│ ├── lts-admin.cfg
│ ├── lts-monitor.cfg
│ ├── readme.txt
│ ├── tasktracker.cfg
│ └── zoo
│ ├── jobtracker.cfg
│ ├── log4j.properties
│ └── lts-monitor.cfg
├── lib
│ ├── commons-pool2-2.3.jar
│ ├── curator-client-2.9.1.jar
│ ├── curator-framework-2.9.1.jar
│ ├── curator-recipes-2.9.1.jar
│ ├── druid-1.0.14.jar
│ ├── fastjson-1.2.7.jar
│ ├── guava-16.0.1.jar
│ ├── hessian-4.0.38.jar
│ ├── jackson-annotations-2.6.0.jar
│ ├── jackson-core-2.6.3.jar
│ ├── jackson-databind-2.6.3.jar
│ ├── javassist-3.20.0-GA.jar
│ ├── je-5.0.73.jar
│ ├── jedis-2.7.3.jar
│ ├── jline-0.9.94.jar
│ ├── leveldbjni-all-1.8.jar
│ ├── log4j-1.2.16.jar
│ ├── lts-core-1.7.0-SNAPSHOT.jar
│ ├── lts-jobtracker-1.7.0-SNAPSHOT.jar
│ ├── lts-monitor-1.7.0-SNAPSHOT.jar
│ ├── lts-spring-1.7.0-SNAPSHOT.jar
│ ├── lts-startup-1.7.0-SNAPSHOT.jar
│ ├── lts-tasktracker-1.7.0-SNAPSHOT.jar
│ ├── mapdb-2.0-beta10.jar
│ ├── mina-core-2.0.9.jar
│ ├── mongo-java-driver-3.0.2.jar
│ ├── morphia-1.0.0-rc1.jar
│ ├── mysql-connector-java-5.1.26.jar
│ ├── netty-all-4.0.20.Final.jar
│ ├── rocksdbjni-3.10.1.jar
│ ├── slf4j-api-1.7.5.jar
│ ├── slf4j-log4j12-1.7.5.jar
│ ├── zkclient-0.1.jar
│ └── zookeeper-3.4.5.jar
└── war
├── jetty
│ └── lib
│ ├── jetty-6.1.26.jar
│ ├── jetty-util-6.1.26.jar
│ ├── lts-startup-1.7.0-SNAPSHOT.jar
│ └── servlet-api-2.5-20081211.jar
└── lts-admin.war
[root@localhost lts]# pwd
/usr/local/lts
[root@localhost lts]# ./bin/jobtracker.sh zoo start
: 没有那个文件或目录
这个系统和quartz比有什么特色?
我知道quartz支持
调度健壮性方面做得如何?
使用的公司可以在这里留下脚印
JOB_RUNNER_MAP.put("aType", new JobRunnerA()); // 也可以从Spring中拿
JOB_RUNNER_MAP.put("bType", new JobRunnerB());
实现多任务后,子JobRunnerA里面spring依赖注入会一直为空,求方法?
这个参数lts.tasktracker.dispatch-runner.enable是如何使用的??在lts-example-quartz工程的lts.properties出现过,但被注释掉了。
因为有场景是针对一种job只在一个节点运行的场景,比如在开发环境,各个开发人员都各自启动了相同的tasktracker,但是jobtracker在派送任务时,检查一个参数(比方lts.tasktracker.dispatch-runner.sigletone),如果为true,则只给第一个启动的tasktracker分配任务。
希望增加Redis访问的密码支持,否则会带来安全问题
比如在分布式中,任务执行器需要做改造,但是不能停止该JVM因为有其它事情在做,所以能否向dubbo那样实现一个暂停当前实例的操作?不知道我的语言组织对不对,反正就是那个意思。
private List<MongoCredential> mongoCredentials= Lists.newArrayList();
$(window.frames["cronGeneratorIframe"]).contents().find("#cron").val(cron);
$(window.frames["cronGeneratorIframe"]).contents().find("#btnFan").click();
应该改成,解决ie兼容
$(window.frames["cronGeneratorIframe"].document).find("#cron").val(cron);
$(window.frames["cronGeneratorIframe"].document).find("#btnFan").click();
RT:linux 启动命令异常:
[root@localhost lts-1.7.0-SNAPSHOT-bin]# ./bin/lts-admin.sh
: 没有那个文件或目录
[root@localhost lts-1.7.0-SNAPSHOT-bin]# ./bin/lts-admin.sh start
: 没有那个文件或目录
[root@localhost lts-1.7.0-SNAPSHOT-bin]# cd bin
[root@localhost bin]# ./lts-admin.sh start
: 没有那个文件或目录
[root@localhost bin]# sh lts-admin.sh start
: command not found2:
: command not found5:
: 没有那个文件或目录: cd: .
: command not found9:
'ts-admin.sh: line 18: syntax error near unexpected token do 'ts-admin.sh: line 18:
do
[root@localhost bin]#
[root@localhost bin]# bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@localhost bin]#
├── bin
│ ├── jobtracker.cmd
│ ├── jobtracker.sh
│ ├── lts-admin.cmd
│ ├── lts-admin.sh
│ ├── lts-monitor.cmd
│ ├── lts-monitor.sh
│ └── tasktracker.sh
├── conf
│ ├── all580
│ │ ├── jobtracker.cfg
│ │ ├── log4j.properties
│ │ └── lts-monitor.cfg
│ ├── log4j.properties
│ ├── lts-admin.cfg
│ ├── lts-monitor.cfg
│ ├── readme.txt
│ └── tasktracker.cfg
├── lib
│ ├── commons-pool2-2.3.jar
│ ├── curator-client-2.9.1.jar
│ ├── curator-framework-2.9.1.jar
│ ├── curator-recipes-2.9.1.jar
│ ├── druid-1.0.14.jar
│ ├── fastjson-1.2.7.jar
│ ├── guava-16.0.1.jar
│ ├── hessian-4.0.38.jar
│ ├── jackson-annotations-2.6.0.jar
│ ├── jackson-core-2.6.3.jar
│ ├── jackson-databind-2.6.3.jar
│ ├── javassist-3.20.0-GA.jar
│ ├── je-5.0.73.jar
│ ├── jedis-2.7.3.jar
│ ├── jline-0.9.94.jar
│ ├── leveldbjni-all-1.8.jar
│ ├── log4j-1.2.16.jar
│ ├── lts-core-1.7.0-SNAPSHOT.jar
│ ├── lts-jobtracker-1.7.0-SNAPSHOT.jar
│ ├── lts-monitor-1.7.0-SNAPSHOT.jar
│ ├── lts-spring-1.7.0-SNAPSHOT.jar
│ ├── lts-startup-1.7.0-SNAPSHOT.jar
│ ├── lts-tasktracker-1.7.0-SNAPSHOT.jar
│ ├── mapdb-2.0-beta10.jar
│ ├── mina-core-2.0.9.jar
│ ├── mongo-java-driver-3.0.2.jar
│ ├── morphia-1.0.0-rc1.jar
│ ├── mysql-connector-java-5.1.26.jar
│ ├── netty-all-4.0.20.Final.jar
│ ├── rocksdbjni-3.10.1.jar
│ ├── slf4j-api-1.7.5.jar
│ ├── slf4j-log4j12-1.7.5.jar
│ ├── zkclient-0.1.jar
│ └── zookeeper-3.4.5.jar
├── logs
└── war
├── jetty
│ └── lib
│ ├── jetty-6.1.26.jar
│ ├── jetty-util-6.1.26.jar
│ ├── lts-startup-1.7.0-SNAPSHOT.jar
│ └── servlet-api-2.5-20081211.jar
└── lts-admin.war
求解决。。。求回复
在和Spring quartz集成的时候,spring quartz的任务需要单独的创建task_tracker,jobClient(完成后关闭),这样就就导致一个JVM中,有两个task_tracker(一个quartz,一个自己业务逻辑的),这种情况是否可以改善一下。如果公用同样的配置,就会导致jobRunner不匹配的问题。
实际使用中,JobDispatcher肯定是常用的,但是,和quartz的集成又多了一个“QuartzJobRunnerDispatcher”,两者的实现,明显相似,但却不一致。
是否可以借鉴,mq中的routing key的概念,根据key路由到对应的消费者(jobrunner),这样就统一了,不会导致到处都是jobRunner
com.github.ltsopensource.startup.jobtracker.JobTrackerStartup
String confPath = args[0];
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.github.ltsopensource.startup.jobtracker.JobTrackerStartup.main(JobTrackerStartup.java:17)
TaskTrackerStartup运行也报这个错
可置一个日历控件,显示近1个月或一周任务信息,已过日期显示每天任务数,成功数、失败数、点击数量可向下钻取查看明细,未到日期显示已添加的任务执行计划。如https://www.almsaeedstudio.com/themes/AdminLTE/pages/calendar.html
如题
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.