微服务调度监控平台Smart Kettle之后端介绍

刚忙活完小盆友的事儿,换完尿不湿,喂完早饭,读完绘本,再加上今天加班,正好有时间跟大家伙唠一下Smart Kettle的功能架构,详细给大家伙介绍一下本人自研的后端源码结构(前端源码结构后续文章会陆续介绍),以及功能介绍,针对每一块核心代码,能精准对应每块的功能,从而也能协助大家很好的了解架构思想、编码逻辑,能帮助大家很快用起来。麻烦我一个,省去大家苦,我不入地狱谁入地狱?

  PS:    Smart Kettle 调度监控平台的后端开源地址:https://gitee.com/yaukie/x-smart-kettle-server.git

           Smart Kettle 调度监控平台的前端开源地址: https://gitee.com/yaukie/x-smart-kettle-front.git

调度大屏

    调度大屏是整个调度监控平台门面,同时,也是整个系统的入口,是对整个调度监控系统的总结、分析、展现,从宏观层面分析参与整个调度系统的任务总量,任务类型、以及任务执行结果,便于协助开发或运维人员整体分析,既承担了决策分析的任务,同时也担负着系统运维监控的义务。

界面展示

    本系统大屏大致从四个大的角度,简单罗列了一下任务调度的基础运行情况,主要分为:

        1、实例运行统计

            统计一段时间内,实例运行情况,这些实例包括作业实例、转换实例,对系统内所有参与调度的实例,进行了统计,同时又对实例类型做了一个分类,实例中既有普通的任务,同时也有定时任务,针对两类任务,分别做了统计,并用柱状图的形式展现出来。

    还可以选择不同时间段,统计这段时间内任务的运行情况

        2、实例运行详情

            实例详情统计作业或转换按照普通任务与定时任务分类,这里没有严格区分,因为有些任务既可以是定时任务也可以是普通任务

            

        3、实例运行趋势

        展示一下近期作业或转换实例运行成功、失败的情况,界面图参考如下:

        可按照不同维度切换实例运行趋势图

        4、实例告警监控

        告警监控主要是考虑到某些作业或转换在运行过程中,可能会出现因各种原因导致的异常,比如数据库连不上,参数有问题、连接超时等问题,为了能有效监控到每个步骤的执行情况,这里引入了告警监控能力,能实时监控每个实例在执行过程中出现的问题或异常,并及时捕捉到,让运维或实施及时干预

界面展示如下:

    

大屏展示告警最多的实例排名

界面展示更加详细的实例告警

点击异常记录查看步骤详情

任务调度

 

界面展示

        任务调度模块毫无疑问,是整个调度平台中,最核心的部分,是控制作业或转换调度的核心部件。界面一览如下:

作业调度查询

转换调度查询

点击本地运行按钮,进入到如上图的本地运行界面,有两个选项,既可以本地立即执行,同时也可以选择定时执行

        点击本地执行,之后,界面提示执行成功,将任务提交到了线程池中,

回到作业调度的查询界面,将会看到刚才执行的任务

同样,选择转换调度中的某一项之后,点击本地运行,回到查询界面,也能看到刚才运行的转换,能实时监控运行状态。

        点击查询界面上的调度监控按钮,界面将会进入到调度监控弹窗口,如上图所示,展示的是该任务的调度图,作业调度操作亦是如此

        点击查询界面上的删除转换或删除作业,弹出删除操作提醒,有三个按钮置为无效、本地删除、关联删除,简单说一下用途:

        (1)置为无效:本地库保留,但业务暂时不需要调度的作业或转换

        (1)本地删除:本地库删除,资源库保留,业务暂时不需要的作业或转换

        (1)关联删除:本地库删除、资源库也删除,业务也不再需要的作业或转换

        作业调度支持参数配置,对某些特殊的作业,比如按照时间调度或数据抽取加工转换的业务场景,时间可能是变化的,因此这里给作业调度增加了参数自由配置的能力。

        在参数配置界面,可以增加任意参数,作为后续作业执行的时候,调度执行的条件入口。

        注意:

            配置的参数如果要起作用,需要在spoon客户端定义作业的时候,事先把参数入口预留出来,本系统暂时不支持web界面版的作业参数设置,目前只能先在spoon端配置好参数,在web端根据配置好的参数加工处理。

        在作业调度查询界面上,点击左上方的创建作业(按模板),界面将进入到创建作业页面中,这里已经预置好了6个常用模板,供读者在使用的时候选择。

(1)JAVASCRIPT模板:您可以按照模板的生成规则,编写自定义脚本

(2)SHELL脚本模板:您可以按照模板的生成规则,编写shell脚本,如果是linux平台,则请编写sh脚本,如果是windows请编写bat脚本

(3)SQL脚本模板:您可以按照模板的生成规则,选择合适的业务库,编写SQL脚本

(4)表对表全量模板:您可以根据业务需求,选择数据全量抽取

(5)表对表增量模板:您可以根据业务需求,选择数据增量抽取

(6)表对表同步模板:你可以根据业务需求,选择数据同步抽取

        选择模板,点击预览按钮之后,界面将会展示您锁选中的模板预览图,可以直观的看到当前模板的调度图,然后根据您的业务场景,业务需求选择合适的模板,维护信息之后,将会按照模板生成一个调度任务。

        带参调度

            回到作业调度查询首页,点击作业详情,界面进入到作业详情,在作业详情界面,可以看到参数配置情况,如下图所示:

需要注意的是,如果要使用传递参数调度任务,需要事先通过kettle spoon客户端来设置自定义参数,目前平台还不支持web端的参数定义,如下图所示:

根据业务需求,需要什么样的参数,就设置什么样的参数,参数可以有多个,根据情况自行设置,设置方式请参考上图,设置完成之后,保存即可,

这样,在调度平台就可以维护参数的名称、参数默认值等相关信息,在进行调度的时候,就可以直接调度。

并且可以看到参数传递情况,实时监控执行过程。

定时调度

        定时调度主要用于解决业务场景中,企业内不同部门、不同系统之间、不用业务应用之间数据定时交换、抽取、加工,以及异构系统之间数据交换的能力,这类数据往往具有增量的特性,通过设定定时任务,在不同时间段内完成数据交换。

        本调度平台为解决业务场景中的数据交换问题,提供了为企业内部定时调度的能力,这样,企业就可以根据需要,自行设置定时调度,摆脱人工操作、手动调度的麻烦,并且在界面端操作更加简洁、方便,完全可以代替kettle spoon端的定时调度。

        定时调度的方式也很简单,读者在执行调度的时候,选择定时执行即可,如下图所示:

        

如上图所示,提供了简洁易懂的定时调度维护界面,读者可以根据需要维护定时的时间,为避免影响业务,根据需要设置定时时间,

        上图提供了丰富的定时调度配置窗口,方便了小白读者不懂定时规则的麻烦,支持年、半年、季度、月、周、小时、分及秒的定时规则 

        定时任务配置好之后,点击运行,界面将会进入到定时调度查询列表,可以整体监控所有启用定时任务的作业或转换,并且在本界面上,你可以自由切换定时调度规则,可以随时开启,随时关闭,时时刻刻监控该任务的执行情况,并且可以预测下一次执行时间。

资源库管理

        资源库通过树状结构展示了Kettle资源库中作业、转换的情况,即时查询当前资源库中的祖业任务、转换任务,更加直观化的展示每一节点的元数据信息,给运维或实施人员提供简洁、优美、方便的界面环境。

        资源库管理包括数据库资源库、文件库资源库两种类型,不过在实际使用中,强烈建议使用数据库资源库作为存储介质。

        1)数据库资源库:

                本系统目前仅支持Mysql数据库的资源库,当然如果有其他存储需要,也可以扩展,本身支持其他数据库的扩展,比如gp库,oracle库等,不过,mysql数据库作为主流数据库,已经足够了。如下图提供了资源库的维护方式

        2)文件库资源库:

                本系统同样也支持本地磁盘作为资源库,也即可以将作业或转换直接存放在硬盘上,当做文件存储,不过这样做有很大的风险,尤其在真实业务场景中,有可能因为硬盘或操作系统故障,导致数据丢失,并且用户体验也不太好,建议开发环境使用,生产环境使用数据库作为资源库,如下图,提供了文件库的维护方式:

        3)创建资源库

                在资源库管理树状结构首页,点击根节点-资源库结构树,在右侧明细中,右上角有个新增下级按钮,点此按钮,将会进入创建资源库的管理界面

            如下图是创建资源库的新增界面,在此界面上,读者可以自己创建自己的kettle资源库,比如可以维护一下资源库类型,选择创建的是数据库资源库还是文件库资源库,如下图是数据库资源库选项,需要维护一下资源库名称、资源库用户名(默认admin),资源库登录密码(默认admin)以及所连接的数据库相关信息,这里不再赘述,所有飘红的内容都需要填写。

            资源库类型,选择文件库之后,管理界面如下图所示,需要在此界面上维护一下资源库名称、基础路径(文件夹位置,绝对路径)、以及资源库有效性(默认是有效,目前用不到,可以忽略)

 

告警监控

        监控查看

            告警监控展示所有的调度任务,每个调度环节、调度过程出现异常的记录,详细记录了每个调度任务执行过程的执行情况,为运维或实施人员提供了更加直观的报错预警,进而可以有针对性的手动处理出错任务,做到了精准、快速、保证了业务正常运行。

            如下图是告警监控的查询列表

            点击异常记录之后,可以及时查看当前任务调度的异常记录,准确定位到出错的位置,为运维和实施人员提供了出错依据。

批量处理

     读者可以根据需要清理告警日志,在告警监控查询列表中,勾选需要删除的监控日志,点击清理日志,将会弹出确认删除对话框,需要注意的是,如果确认清理,那么日志将会从磁盘以及数据库中彻底删除,因此此操作需要谨慎,否则数据永远从地球上消失了!

日志管理

            日志管理是为业务任务人员提供的用于历史记录查询、业务数据场景异常分析而开发的管理功能,读者可以根据任务调度名称、任务调度时间下载一段时间内的作业或转换执行日志,日志默认是存放在硬盘上,如果硬盘上没有,将会从数据库下载。

日志下载

批量删除

            读者可以根据需要清理日志,在日志查询列表中,勾选需要删除的日志,点击清理日志,将会弹出确认删除对话框,需要注意的是,如果确认清理,那么日志将会从磁盘以及数据库中彻底删除,因此此操作需要谨慎,否则数据永远从地球上消失了!

写在最后

  我一直有个想法,这个想法激发于5年前的一个交换平台的项目,这个项目一直用kettle做为数据的抽取、加工、调度工具,并且是Spoon客户端版本的,使用起来体验非常糟糕,耗内存、卡死机家常便饭, 甚至于会影响其他的正常业务,并且没法做到跨平台移植,数据安全性极低,更不用考虑大数据量的调度,于是乎.....

  Smart Kettle 是本人疫情期间创作的基于Kettle9.2.0.0-179版本的微服务架构体系的开源数据抽取调度监控平台,作者本人除了要加班加点完成每天的工作以外、还要在家带娃,并且还是两个!(꒦_꒦) (꒦_꒦) !此情此景,映入脑海,然后才是抽时间,挤时间搞创作!

曾经也想过放弃,感觉费劲把火的搞这玩意,到底有啥意义呢?既没有钱,也没有title,还死费劲,一个人既充当架构师、又充当产品、还充当开发人员、更充当测试、运维、实施的角色,你说累不累?

我是咋坚持下来的呢?

1348年,欧洲黑死病瘟疫,疫情期间 一名叫乔万尼·薄伽丘的年轻人编写的《十日谈》问世

1592年,伦敦爆发大瘟疫,疫情期间 一名叫莎士比亚的寒门子弟编写的 《维纳斯与阿多尼斯》《鲁克丽丝受辱记》 问世

1665年,伦敦爆发鼠疫,疫情期间 一名叫牛顿的23岁小青年确立了力学三定律,发现万有引力,创立了光色散原理

1830年,俄罗斯爆发霍乱,疫情期间 一名叫普希金的完成了4部戏剧、33首诗歌、6部中篇小说、若干短篇小说

丘吉尔说“不要浪费一场危机”,于是,

2020年,全球爆发新冠疫情,疫情期间 一名叫yuenbin的年轻人,自研了Smart Kettle 调度监控平台。。。。

 我就是这么坚持下来的,前辈们的鼓励,加上自己的勤学苦练,终于今年年初发布了第一个版本,也希望各位读者能多多关注,相信能与大家一起打造出一个精品!

捐赠

            创作不容易,编码很费时,感谢各位~~

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章