About

蓝鲸作业平台(Job)是一套运维基础操作管理系统,具备海量任务并发处理能力。

除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;

而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现调度自动化。

Benefits

安全可靠的高危命令检测能力

作为底层面向服务器OS的原子操作平台,对用户操作指令是否合规、安全的检测至关重要!

作业平台支持通过正则表达式设置各种不同脚本语言的高危命令语句检测规则,并且提供被阻拦的操作日志;

即便是周边系统通过 API 形式调度执行,也能够被实时检测拦截,让服务器操作更安全!

完善的脚本版本管理

云化脚本版本管理模式,贴合现代化开放协同的理念,协作者之间借助平台便捷的共享脚本资源;

利用版本管理功能,您可以很好的控制版本的上/下线状态,并能够在出安全漏洞时快速禁用、及时止损!

作业编排,一切皆场景

当一个操作场景需要多个步骤串联执行时,如果手工一个个去点击执行,那么效率实在太低了!

并且,也没办法很好的沉淀下来,方便后续持续使用和维护。

作业平台的作业管理功能很好的解决了这个问题,用户可以在「作业模板」中配置好相应的执行步骤,然后再根据需求场景衍生对应的「执行方案」;

如此,即清晰的区分开作业模板和实例的关系,避免强耦合关系,也便于后续对使用场景的管理和维护。

原汁原味的 Cron 定时任务

保留了 Linux 原生的 Crontab 定时任务使用习惯,让运维同仁能够更平滑、快速的上手;更有贴心的监测功能助您发现及时掌握定时任务的动向和执行情况。

高扩展性的文件源管理能力

在文件分发的需求场景中,我们除了从远程服务器、本地文件作为传输源以外,还可能需要从对象存储、FTP、Samba等不同的文件系统/服务获取文件;

为了满足这种多元化的文件源对接诉求,我们开放了文件源插件的能力,支持开发者根据自己的文件系统类型开发插件对接作业平台的文件源管理模块,从而实现从不同文件系统分发的能力。

bk-job 提供了快速执行、任务编排、定时执行等核心服务,多重组合,满足企业不同场景的需求:

  • 快速执行:提供临时性且多变的快速一次性操作入口,用完即走

  • 任务编排:对于重复性的操作组合,可以通过编排功能将其沉淀为“作业”,方便管理和使用

  • 定时执行:支持用户按业务逻辑诉求设置周期性或一次性的定期执行计划

  • 脚本管理:将脚本以云化模式统一管理,更好的支持作业编排和周边系统调度的灵活度

  • 账号管理:管理服务器OS的执行账户,如Linux的 root,Windows的 administrator 等等

  • 消息通知:满足业务按管理需求设置任务不同状态的执行结果消息通知

  • 文件源管理:开放文件源对接插件能力,满足从不同文件系统类型拉取文件并传输的诉求

  • 运营分析:提供平台的运营统计数据展示,助力管理员更全方位的了解平台的运行情况

  • 平台管理:丰富的平台管理员工具,包括但不仅限于信息更改、消息渠道设置、高危语句检测规则、功能限制设置、公共脚本管理、后台服务状态展示等等

蓝鲸作业平台(BK-JOB)架构设计

介绍

蓝鲸作业平台(简称bk-job )是蓝鲸的基础原子平台之一,通过蓝鲸管控平台(GSE)的“文件管道”和“命令管道”,提供了作业编排、脚本执行、文件分发等能力。

intro

作业平台整体架构

作业平台整体架构

前端(FrontEnd)

使用ES6语法,采用MVVM框架vue.js,通过webpack4打包构建。

后端(BackEnd)

基于Java编写,采用主流的SpringBoot+SpringCloud框架的微服务架构设计。以下按各微服务模块进行介绍:

配置中心: 二进制版本的配置中心,统一管理所有微服务的配置信息。 Job 网关: 微服务网关,负责认证、限流、请求路由等。 作业管理: 作业管理微服务,负责管理作业平台中的多种资源,具体包含脚本、账号、作业模板、执行方案、消息通知、全局设置等。 执行引擎: 作业执行微服务,对接蓝鲸GSE,负责向GSE提交文件分发/脚本执行任务、拉取任务日志、流转任务状态。 执行日志服务: 日志管理微服务,对接底层MongoDB,负责存储脚本执行、文件分发及文件源文件下载过程中产生的日志。 定时任务: 定时任务微服务,基于Quartz定时引擎,实现bk-job的定时任务调度与管理。 备份归档: 备份管理微服务,负责bk-job中的作业导入导出及作业执行流水历史数据的定期归档任务。 统计分析: 统计分析微服务,为首页异常作业提示与运营分析模块提供后台接口,调度大量定时任务从其他微服务模块获取元数据进行分析与统计,生成分析结果数据与统计数据,为bk-job提供运营数据支撑、提高平台易用性。 文件源网关: 文件网关微服务,通过与FileWorker通信对接多种不同类型的第三方文件源(如对象存储、文件系统存储等),负责调度文件源文件下载任务,与执行引擎配合完成第三方文件源文件分发。 文件源接入点: 文件源接入点,独立于其他bk-job后台微服务的可扩展模块,可部署多个实例,与文件网关进行通信,对接不同类型的第三方文件源,是文件下载任务的执行者。

存储、基础中间件

Consul: 仅用于物理部署方式,用作服务发现。需要搭建Consul Server, 以及在bk-job微服务部署的所在机器上同时安装Consul并以 Agent方式运行。 RabbitMQ: 消息队列服务。作业执行模块使用 RabbitMQ 实现基于消息的事件驱动任务调度引擎 MySQL: bk-job的主数据库存储,存储微服务的关系型数据。 Redis: 分布式缓存,用于实现分布式锁、数据缓存等。 MongoDB: bk-job的作业执行日志数据库,用于存储脚本执行/文件分发过程中产生的日志数据。 NFS: 一方面用于本地分发文件场景中存储用户上传的本地文件,另一方面用于存储作业导入或导出时生成的临时文件。

参考资料

https://github.com/TencentBlueKing/bk-job

https://github.com/TencentBlueKing/bk-job/blob/master/docs/overview/architecture.md