cronner 分布式定时任务框架
来源:互联网 发布:nginx 不同目录转发 编辑:程序博客网 时间:2024/05/23 23:44
cronner 定时任务框架将作业的配置和应用程序剥离,实现了集中作业配置和管理。支持作业分片和失效转移。 源代码参考了开源项目elastic-job。
githup地址:https://github.com/fang-yan-peng/cronner
一、架构图
Cronner 内部分为调度节点和执行节点。调度节点负责作业配置、作业分片和任务调度,多台调度节点之间是互为备份关系,如果一个节点down机,其它的调度节点会接管任务调度。执行节点负责任务的运行、失效转移。
二 例子
Cronner 支持spring、springboot和main方法启动的进程。Cronner 配置十分简单,通过几个注解就可以实现作业的调度。以下以spring boot为例,其它的例子github的代码里都提供了。目前jar包还没有上传到maven私服,正在申请的过程中。运行例子需要下载源码编译jar包。
添加依赖.
<dependency> <groupId>org.jfaster.cronner</groupId> <artifactId>spring-boot-starter-cronner</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>org.jfaster.cronner</groupId> <artifactId>spring-boot-starter-zookeeper</artifactId> <version>1.0.1</version> </dependency>
创建一个作业。
src/main/java/cronner/jfaster/org/example/job/listener/JobListenerExample.java
src/main/java/cronner/jfaster/org/example/job/SimpeCronnerJobSpringboot.java
package cronner.jfaster.org.example.job.listener; import cronner.jfaster.org.executor.ShardingContexts; import cronner.jfaster.org.job.api.listener.CronnerJobListener; /** * @author fangyanpeng */ public class JobListenerExample implements CronnerJobListener{ @Override public void beforeJobExecuted(ShardingContexts shardingContexts) { System.out.println(String.format("----SpringBoot Job: %s begin----",shardingContexts.getJobName())); } @Override public void afterJobExecuted(ShardingContexts shardingContexts) { System.out.println(String.format("----SpringBoot Job: %s end----",shardingContexts.getJobName())); } }
package cronner.jfaster.org.example.job; import cronner.jfaster.org.job.annotation.Job; import cronner.jfaster.org.example.job.listener.JobListenerExample; import cronner.jfaster.org.job.api.ShardingContext; import cronner.jfaster.org.job.api.simple.SimpleJob; import java.util.concurrent.TimeUnit; /** * @author fangyanpeng */ @Job(name = "cronner-simple-job",listener = JobListenerExample.class) public class SimpeCronnerJobSpringboot implements SimpleJob { @Override public void execute(ShardingContext shardingContext) { try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(String.format("jobName=%s,jobParameter=%s,shardingItem=%s,shardingParameter=%s",shardingContext.getJobName(),shardingContext.getJobParameter(),shardingContext.getShardingItem(),shardingContext.getShardingParameter())); } }
配置yml文件,并启动作业。
########### Zookeeper Configuration Start ########### zookeeper: serverLists: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 namespace: cronner baseSleepTimeMilliseconds: 1000 maxSleepTimeMilliseconds: 3000 maxRetries: 3 ############ Zookeeper Configuration End ########### ########### cronner packege Configuration Start ########### cronner: package: cronner.jfaster.org.example.job ############ cronner packege Configuration End ###########
src/main/java/cronner/jfaster/org/example/CronnerSpringBootMain.java
package cronner.jfaster.org.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; /** * @author fangyanpeng */ @SpringBootApplication public class CronnerSpringBootMain { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(CronnerSpringBootMain.class,args); } }
执行main方法,就会启动作业,就是一个执行节点。每个执行节点都会启动一个端口接收调度节点的命令,默认端口9233。如果同一台机器启动多个执行节点,通过java -Dcronner.executor.port=8888指定端口,避免端口冲突。
启动调度节点,添加作业调度项
- tar -zxvf cronner-manager-1.0.1.tar.gz
- cd cronner-manager-1.0.1
- vim conf/cronner.conf 修改登陆后台的用户名、密码、端口号、数据库地址、zk地址、jvm参数等。
- sh bin/cronner.sh start 启动节点
- 默认启动2145 端口
- 访问 http://127.0.0.1:2145端口
就会出现作业的配置页面,点击 作业配置》配置管理》添加 进行添加作业,都是页面可视化的,具体的配置和添加步骤github都有例子。注意添加的作业名称一定要与要调度的作业名一致,例如上面的 cronner-simple-job
- cronner 分布式定时任务框架
- 分布式定时任务框架-Elastic Job
- Elastic-Job - 分布式定时任务框架
- Elastic-Job - 分布式定时任务框架
- Elastic-Job - 分布式定时任务框架
- Elastic-Job - 分布式定时任务框架
- Elastic-Job - 分布式定时任务框架
- 分布式定时任务框架-Elastic Job
- Elastic-Job - 分布式定时任务框架
- 基于etcd的分布式定时任务框架
- 分布式定时任务框架——python定时任务框架APScheduler扩展
- 分布式定时任务框架——python定时任务框架APScheduler扩展
- 分布式定时任务框架比较,spring batch, tbschedule jobserver
- Quartz小记(一):Elastic-Job - 分布式定时任务框架
- Spring+Quartz框架实现定时任务(集群,分布式)
- Elastic-Job-分布式定时任务框架(张亮原著)
- 基于spring+quartz的分布式定时任务框架
- Elastic-Job——分布式定时任务框架
- 我的大学一年
- HUE配置HIVE
- python日期时间使用总结
- 搜索提示或者说智能提示
- Java基础之InputStream中read()与read(byte[] b)
- cronner 分布式定时任务框架
- Kafka 集群部署
- ScoreView嵌套listview或者Listview嵌套ListviewUI冲突
- 数据结构基础(2)
- 电商笔记-05(路径携带参数等问题)
- andrid5.0添加开关默认控制电量百分比显示
- PHP中间件(middleware)解析
- [概率DP 哈希] POJ3156 .Interconnect
- 顺时针数组循环打印