分布式定时任务Elastic-Job框架在SpringBoot工程中的应用实践(二)

文章摘要:在生产环境中部署Elastic-Job集群后,那么如何来运维监控线上跑着的定时任务呢? 如果在生产环境的大规模服务器集群上部署了集成Elastic-Job的业务工程,而没有相应的运维监控工具可以来监控定时任务执行状态和动态修改定时任务执行时间,修改相应的配置还得手动更新数据库或者配置文件,那么则会给运维和研发工程师增添不少麻烦。使用过Quartz集群方案的同学应该都有过同样的感触,修改定时任务执行时间配置和监控任务的状态都比较麻烦,想要一个功能齐全的监控运维平台还得自己专门来开发。所幸的是,Elastic-Job开源社区很早就考虑到该问题,在项目发布初期即提供了一个功能相对齐全的Elastic-Job运维监控console平台。

一、Elastic-Job-Console的介绍

从前面一篇文章《分布式定时任务Elastic-Job在SpringBoot工程中实践方法(一)》中提到的Elastic-Job分布式协调框架的系统架构图(如下)可以看出运维平台—Elastic-Job-Console项目也是Elastic-Job项目中必不可少的一个重要部分。

Elasitc-Job架构图.jpg

Elastic-Job-Console以Web的方式向运维和开发人员提供监控、更改配置和暂停/启动定时任务的服务。从上面的架构上来看,console平台并没有和Elastic-Job-Lite发生直接的关联,而是借助ZooKeeper作业注册中心和 Elastic-job-lite关联起来了。下面主要列举了Elastic-Job-Console运维监控平台具备的主要功能: (1)登录安全控制 (2)注册中心管理 (3)定时任务维度状态查看 (4)服务器维度状态查看 (5)快捷修改定时任务配置(Cron表达式、作业分片总数、分片序列号、是否支持失效转移和是否支持错过重执行) (6)控制任务的暂停和恢复运行

二、Elastic-Job-Console监控控制平台的实践

1、版本环境准备

JDK 1.8、Maven 3.3.9、Elastic-Job-Lite 2.1.5、Zookeeper 3.4.6。

2、下载Elastic-Job开源项目的源码

Elasitc-Job开源项目在git-hub上的地址为:https://github.com/elasticjob/elastic-job-lite;由于需要在自己本地重新构建Elastic-Job-Console项目,所以有必要下载其源代码至本地。此外,任何一款优秀的开源组件均值得我们去学习和借鉴,只有不断地一遍一遍去撸源码,才能真正做到“知其然知其所以然”,最后才可以参与开源社区为其贡献自己的代码。

3、Maven构建Elastic-Job-Console

将当前目录切换至下载Elastic-Job项目的根目录下,并在Cmd窗口中运行以下的maven构建命令即可编译构建Elastic-Job项目。

//Maven编译构建命令
mvn clean install -Dmaven.test.skip=true  

编译构建后的截图如下:

Elastic_Job-Console运维控制台maven构建成功截图img.png

4、启动Elastic-Job-Console平台

使用maven编译构建成功后在“{本地路径}\elastic-job-lite\elastic-job-lite-console\target”路径下会生成一个名为“elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz”的压缩包,解压后即可使用。解压后的文件bin目录中,有两个脚本,“start.bat”是windows环境下使用;“start.sh”是linux环境下使用。 在conf目录中,可以修改auth.properties文件中的登录名/密码来进行安全认证。该文件的内容如下:

root.username=root
root.password=root
guest.username=guest
guest.password=guest

以windows环境为例,双击“start.bat”脚本即可启动Elastic-Job-Console运维监控平台。从该脚本中可以看到默认启动运行的端口为:8899。

@echo off
if ""%1"" == ""-p"" goto doSetPort
if ""%1"" == """" goto doStart

echo Usage:  %0 [OPTIONS]
echo   -p [port]          Server port (default: 8899)
goto end
:doSetPort
shift
set PORT=%1

:doStart
set CFG_DIR=%~dp0%..
set CLASSPATH=%CFG_DIR%
set CLASSPATH=%~dp0..\lib\*;%CLASSPATH%
set CONSOLE_MAIN=io.elasticjob.lite.console.ConsoleBootstrap
echo on
if ""%PORT%"" == """" set PORT=8899
java  -cp "%CLASSPATH%" %CONSOLE_MAIN% %PORT%

:end

启动后的日志如下图所示:

elastic-job-console启动后的日志.png

5、使用Elastic-Job-Console平台管理分片任务

在本地开启浏览器访问“localhost:8899”地址,使用前面在配置文件中设置的用户名和密码(默认为root/root)即可登录上Elastic-Job-Console平台。设置完Zookeeper作业中心的IP地址,端口和命名空间后即可对部署的Elastic-Job分片定时任务进行监控和管理了。

elasic_job_console_web控制台的截图.png

在“作业维度”一栏中可以看到当前在测试环境中跑的示例分片定时任务的各个属性(如作业名称、分片总数、Cron定时任务表达式和状态)以及管理分片任务的操作按钮等。

elasic_job_console_web控制台的截图.png

在“服务器维度”一栏中可以看到,分片定时任务的运行实例,在该示例中,分片定时任务的实例分别在两台虚拟机上跑,并且当前运行状态均正常。通过最后一列的操作按钮,可以对每个分片定时任务实例进行终止、失效和查看详情的操作。

elasic_job_console_web控制台的截图.png

通过Elastic-Job-Console提供的Web页面,可以根据实际的线上业务情况对业务工程中的分片定时任务进行一些动态的调整,比如大家比较关注的定时任务执行间隔时间,定时任务分片总数、是否支持自动失效转移。通过选择“作业维度”中的定时任务的“修改”按钮,就可以调整下定时任务的一些属性了。下面主要展示了修改定时任务的执行间隔时间:

elasic_job_console_web控制台的截图.png

从图中可以看出原来原来分片定时任务的执行时间间隔为每10S运行一次,通过在页面上修改定时任务的Cron时间表达式,即可完成对定时任务的更改配置。修改后的Web页面和日志截图分别如下:

修改定时任务时间间隔后的elasic_job_console_web控制台的截图.png

elastic_job修改定时任务的cronz时间间隔后的console控制台的截图.png

elastic_job修改定时任务的cronz时间间隔后的日志截图1.png

elastic_job修改定时任务的cronz时间间隔后的日志截图2.png

从上面的Elastic-Job分片定时任务的日志截图中即可看出,部署在两台机器上的两个分片定时任务的执行间隔时间均发生了改变,都由原来的10S变成了20S。在Quarz集群中,原本需要修改配置文件或者DB才能完成更改定时任务属性,而现在只需要在Console平台的Web页面上设置下即可完成分片定时任务的动态属性配置,是不是挺方便的呢?

四、总结

本文主要介绍了基于开源的分布式弹性定时任务调度框架—Elastic-Job的运维监控平台—Elastic-Job-Console的功能介绍和实践方法。由于文章篇幅的原因,本文无法对Elastic-Job框架的一些细节和源码无法进行更为细致的阐述,作者将在后面Elastic-Job框架的源码系列文章中继续逐一进行介绍。同时,限于笔者的才疏学浅,对本文内容可能还有理解不到位的地方,如有阐述不合理之处还望留言一起探讨。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

利用Png做持久型XSS攻击

关于文件上传漏洞,其实是老生常谈了,其实很多网站都做了很严格的控制。这里我们不去谈如何突破文件上传,而是假设我们能上传一张图片,然后当成html嵌入或者执行。 ...

16320
来自专栏云计算教程系列

如何在Ubuntu 14.04上设置R.

R是一种流行的开源编程语言,专门用于统计计算和图形。它被统计学家广泛用于开发统计软件和执行数据分析。R的优势之一是允许用户创作和提交自己的包,因此它具有高度且易...

7400
来自专栏Java后端技术

Nginx实现tomcat集群进行负载均衡

  随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文...

14820
来自专栏杨建荣的学习笔记

数据迁移工具简单分析 (r2笔记59天)

exp/imp 对于数据结构的复制和同步,还是比较理想的工具。 在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用...

30050
来自专栏Python爬虫与数据挖掘

手把手教你进行R语言的安装及安装过程中相关问题解决方案

这篇文章旨在为R语言的新手铺砖引路,行文相对基础,希望对在R语言安装上有问题的小伙伴提供帮助和指引。

17940
来自专栏云加头条

腾讯云 CMQ 消息队列测试

最近收到腾讯云提供 CMQ 的内测体验资格,于是对其中的消息队列服务进行消息分发和管理作出测试,并将测试结果以及所遇到的问题进行了汇总。

3.1K00
来自专栏云计算与大数据

架构: UMA vs NUMA

所有处理器共享相同的内存地址空间。这种体系结构主要解决的问题是关于cache一致性。

25210
来自专栏深度学习那些事儿

关于在ubuntu上源码安装TensorFLow-1.7.0-cuda9.1-cudnn7.1.2过程中问题解决方案

实验室服务器上装载的cuda版本是最新的9.1,和从官网下载下来的TensorFlow不匹配,因为官方的是通过cuda9.0进行编译的。因此,这篇文章讨论关于T...

23340
来自专栏企鹅号快讯

深度学习笔记:Tensorflow的安装——ubuntu下

前言 之前写过一篇在windows下安装Tensorflow的教程。有小伙伴说之前不是说在Ubuntu装过么把那个也发一下,所以,补上一篇。 ? 安装anaco...

212100
来自专栏耕耘实录

再提一下Linux系统中的MD5校验

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。

24650

扫码关注云+社区

领取腾讯云代金券