elastic-job控制台部署与使用-灵析社区

开着皮卡写代码

前言

elastic-job官方提供了对于后台应用中的job管控台,可以比较方便的对正在运行的分布式job做一些基本的管理,比如修改job配置参数,启停,废除任务等,下面让我们将控制台部署起来看看效果如何

1、git下载elasticjob源码

git地址:https://github.com/apache/shardingsphere-elasticjob

通过git命令将项目下载到服务器或者本地,

2、进入项目根目录,执行编译打包命令

mvn clean install -Dmaven.test.skip=true

经过漫长的打包,终于将所需的包打好了

3、将控制台的jar包拷贝到本地并启动

windows环境下,进入bin目录后,可以直接通过start.bat进行启动

启动成功后,默认的段开是8899,浏览器访问:localhost:8899,可以看到如下界面

管控台使用

1、配置zk注册中心

通过之前的内容我们知道,es-job依赖zk,因此首先我们需要将zk的配置信息添加进去

2、job操作

后台启动服务,以上一篇的simpleJob为例,当job开始运行之后,在控制台的作业操作一栏,可以看到任务的相关参数信息已经展示在列表上面了,对应着程序中job的配置参数

基于此,我们可以对当前运行中的job做相应的操作

详情

列出当前job对应的分片项信息,比如当前的这个job设置了2个分片,由于只启动了一个示例,而且在同一台机器,因此IP相同,进程号也一样

点击失效

这时发现分片项0已经失效,后台不再输出关于分片项0的信息

修改

点击修改可以看到关于当前simpleJob的完整参数信息,当前的job每5秒执行一次,假如我们将其改为每10秒执行一次,通过控制台打印的时间窗口可以看到已经生效了

失效或终止


顾名思义,即将当前job停止运行,点击失效后,我们再次观察控制台,发现任务就不再执行了

关于任务的界面操作是比较简单的,大家可以尝试下,下面我们通过控制台来看看elastic-job的另一个功能,任务追踪

事件追踪

Elastic-Job提供了事件追踪功能,用于查询、统计和监控作业执行历史和执行状态。Elastic-Job-Lite在配置中提供了JobEventConfiguration,目前支持数据库方式配置。事件追踪所配置的DataSource数据库中会自动创建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG两张表以及若干索引

简而言之,esJob在运行过程中的产生的相关数据会被记录到这两张表中去,方便开发人员快速定位job运行过程中的日志数据或问题等操作

springboot集成事件追踪功能

在上一篇的项目中,我们增加mysql的依赖和配置

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

然后再在JobScheduler的配置bean中,将JobEventConfiguration这个配置对象加入即可,以上篇的mySimpleJob为例,修改后的代码如下:

@Configuration
public class MySimpleJobConfig {

    @Value("${mySimpleJob.cron}")
    private String cron;

    @Value("${mySimpleJob.shardingTotalCount}")
    private int shardingTotalCount;

    @Value("${mySimpleJob.shardingItemParameters}")
    private String shardingItemParameters;

    @Autowired
    private ZookeeperRegistryCenter regCenter;

    @Autowired
    private MySimpleJob mySimpleJob;

    @Autowired
    private DataSource dataSource;

    @Bean(initMethod = "init")
    public JobScheduler simpleJobScheduler() {
        JobEventConfiguration jcf = new JobEventRdbConfiguration(dataSource);
        return new SpringJobScheduler(mySimpleJob, regCenter,
                ElasticJobUtils.getSimpleJobConfiguration(
                        mySimpleJob.getClass(),
                        cron,
                        shardingTotalCount,
                        shardingItemParameters),jcf
                //,new MyElasticJobListener() 可配置监听器
        );
    }

}

然后,启动项目,这时可以看到,在数据库中,就会在dataflow库下生成了两张表

同时,一旦任务开始运行,job运行过程中产生的数据就会记录到表中去,想必表中的字段信息大家一看便知,就不再过多解释了

这里想要说的是,可以通过elastic-job控制台将这些数据展示到界面上,更方便我们观察,怎么操作呢?

点击左侧的数据源追踪配置,填写mysql的连接信息

这时我们再次启动后台项目,再到控制台中观察作业的历史操作和历史轨迹,可以发现job的执行信息都可以展示在控制台上了

阅读量:1491

点赞量:0

收藏量:0