分布式定时任务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框架的源码系列文章中继续逐一进行介绍。同时,限于笔者的才疏学浅,对本文内容可能还有理解不到位的地方,如有阐述不合理之处还望留言一起探讨。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • 1,什么是分布式定时任务;2,为什么要采用分布式定时任务;3,怎么样设计实现一个分布式定时任务;4,当前比较流行的...
    lyndon_nfc阅读 34,986评论 2 58
  • 关于出轨, 无论是大到娱乐圈的头条, 还是小到身边的最好的朋友, 我一直觉得, 这是每个人应有的选择生活的权利。 ...
    山顶的鱼阅读 421评论 0 1
  • 我想要彩色的生活 要彩色的时间消磨 不要黑色和黑色 还有它们之间的空格 打破 打破 还要下一个 ...
    多佛儿阅读 284评论 0 0
  • 常言道内容不够,颜值来凑 一张赏心悦目的图片,瞬间就能hold住全场目光▼ 搜图是每个PPTer的必备技能 今天给...
    好PPT阅读 2,097评论 2 72