您的位置:首页 > 其它

elastic-job、elastic-job-lite-console 的使用

2019-07-24 22:43 211 查看

前言

本文主要介绍关于当当开源的 分布式任务调度框架 elastic-job 的使用。

环境
  1. zookeeper
  2. java8
  3. docker
    我们使用 docker 运行 zookeeper。
zookeeper 环境安装
  1. 使用 docker 拉取 zookeeper 镜像
docker pull zookeeper
  1. 构建 container
docker run --name zookeeper_node1 -p 2181:2181 -d zookeeper


3. 进入到 container 环境中

docker exec -it zookeeper_node1 bash

进入到 bin 下,运行 zkCli.sh 就可以连接到 zookeeper 了。

接下来我们使用 springboot 整合 elastic-job

pom 依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
application-job-config.xml
<?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:reg="http://www.dangdang.com/schema/ddframe/reg"
xmlns:job="http://www.dangdang.com/schema/ddframe/job"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.dangdang.com/schema/ddframe/reg
http://www.dangdang.com/schema/ddframe/reg/reg.xsd
http://www.dangdang.com/schema/ddframe/job
http://www.dangdang.com/schema/ddframe/job/job.xsd
">

<reg:zookeeper id="jobRegister" server-lists="localhost:2181"
namespace="elasticJobDemo" base-sleep-time-milliseconds="1000"
max-sleep-time-milliseconds="3000" max-retries="3" />

<job:simple id="jobA" class="com.beng.job.ExeJobA"
registry-center-ref="jobRegister" cron="0/10 * * * * ? *"
sharding-total-count="1" />

<job:simple id="jobB" class="com.beng.job.ExeJobB"
registry-center-ref="jobRegister" cron="0/5 * * * * ? *"
sharding-total-count="1" />

</beans>
启动类
@ImportResource(value = { "classpath:application-job-config.xml" })
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}

任务: 这里我们写了两个任务,一个五秒执行一次,一个十秒执行一次。

public class ExeJobA implements SimpleJob {

@Override
public void execute(ShardingContext arg0) {
System.out.println("JOB A is execute .");
}

}

public class ExeJobB implements SimpleJob {

@Override
public void execute(ShardingContext arg0) {
System.out.println("JOB B is execute .");
}

}

输出结果

看一下 zookeeper 中的节点信息
进入到容器的 bash 中,并连接 zookeeper

> ls /
[elasticJobDemo, zookeeper]

可以看到起节点中有 elasticJobDemo,也就是我们配置文件当中的命名空间 namespace,打开这个节点看一下

> ls /elasticJobDemo
[jobA, jobB]

其下包含了我们注册的两个任务,点来其中一个看一下。

> ls /elasticJobDemo/jobB
[config, instances, leader, servers, sharding]

config 任节点中存储了任务节点的配置信息,instance 包含了执行的实例信息, leader 中包含了选举那个节点执行了任务,servers 中包含注册这个任务的机器节点,sharding 中也包含具体实例信息。

挨个看一下

>  get /elasticJobDemo/jobB/config
{"jobName":"jobB","jobClass":"com.beng.job.ExeJobB","jobType":"SIMPLE","cron":"0/5 * * * * ? *","shardingTotalCount":1,"shardingItemParameters":"","jobParameter":"","failover":false,"misfire":true,"description":"","jobProperties":{"job_exception_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler","executor_service_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultExecutorServiceHandler"},"monitorExecution":true,"maxTimeDiffSeconds":-1,"monitorPort":-1,"jobShardingStrategyClass":"","reconcileIntervalMinutes":10,"disabled":false,"overwrite":false}

> ls /elasticJobDemo/jobB/instances
[192.168.0.110@-@76563]
> get /elasticJobDemo/jobB/instances/192.168.0.110@-@76563
[]

> ls /elasticJobDemo/jobB/leader
[election, sharding]
> get /elasticJobDemo/jobB/leader/election/instance
192.168.0.110@-@76563

> ls /elasticJobDemo/jobB/servers
[192.168.0.111, 192.168.0.110]

> get /elasticJobDemo/jobB/sharding/0/instance
192.168.0.110@-@76563

elastic-job-lite-console

当当同时还开源对于 elastic-job 的可视化界面。
首先将 elastic-job-lite-console 代码 download 到本地进行编译打包。
github:https://github.com/elasticjob/elastic-job-lite

进入到 /elastic-job-lite-dev/elastic-job-lite-console/target 目录下:

将这个包进行解压:

其中提供了 windowslinux 两个环境的脚本,我使用的 linux 环境,运行 start.sh

> ./start.sh
[INFO ] 2019-07-24 22:39:38,757 --main-- [io.elasticjob.lite.lifecycle.restful.RestfulServer] Elastic Job: Start RESTful server
[INFO ] 2019-07-24 22:39:38,777 --main-- [org.eclipse.jetty.server.Server] jetty-8.1.19.v20160209
[INFO ] 2019-07-24 22:39:38,956 --main-- [org.eclipse.jetty.server.AbstractConnector] Started SelectChannelConnector@0.0.0.0:8899

运行成功,访问 http://localhost:8899,默认登录名和密码均是 root

可以看到我连接到了我的 zookeeper 上,并且我注册的两个定时任务也有。


到此就完成了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: