java中的saturn_Saturn简介及架构介绍

整理自官方文档。

Saturn:一个分布式作业调度平台。据悉Saturn平台已经平稳运行,承载着唯品会核心系统的全部定时任务的调度,监控,配置,经受住了生产环境的各种考验。

简介:分布式定时任务的调度,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用及分片并发处理。Saturn基于当当Elastic Job代码基础上由唯品会Venus体系自主研发的任务调度系统。

特性:

支持基于事件和时间触发

人工指定资源分配策略+自动平衡策略结合

任务开发语言不受限制,支持Shell(PHP,Bash, Python...)作业以及Java作业

支持一机一分片的本地化模式任务调度

任务按分片并行执行

框架和业务代码隔离,零依赖

分片的调度按负载均衡分布

可视化管理

支持秒级任务触发

可视化监控和报警

支持容器化(Docker)部署

术语定义:

术语

解释

作业(Job)和作业分片

作业(Job)是可以独立运行的脚本(shell作业)或者具备某项功能的函数实现(java、消息作业)。作业可并发执行在多个执行节点(Executor)上,作业分片定义了作业并发执行的数量以及执行编号。比如作业分片为2,则表示作业最多可以并发执行在2个执行结点上,执行编号为0和1。作业分片调度指将作业分片指派给执行结点。比如A作业有5个分片(分片0,1,2,3,4),一共有两个执行结点E1和E2,将0,1,2指派给E1;3,4指派给E2。

Namespace

域(saturn称之为Namespace)代表一组特定的执行结点和作业。作业必须而且只能属于某一个特定的域。一个域下通常有若干个执行结点(每个执行结点都运行在不同的独立的机器上),通过启动参数指定执行结点的-namespace将执行结点加入到某个域。执行结点必须而且只能属于某一个特定的域。域下的全部执行结点功能是对等的,域下的任何一下执行结点均有能力执行域下的全部作业,换言之,作业可以在域下任何一个执行结点执行。

组织名

每个namespace可以属于一个组织

Saturn

定时任务调度系统

执行结点(Executor)

执行结点(Executor)是调用并执行作业的程序。它通过定时(quartz)驱动来触发调用事件,并最终调用作业的执行入口(shell脚本或者函数实现)。执行结点只会处理指派给它的作业分片。

控制台(Console)

统一配置界面,可以使用控制台来查看作业状态,执行结点状态和执行日志,添加、删除作业,修改作业属性。

总体设计:

编号

说明

1

支持多种作业类型(Shell作业/Java作业)

2

支持作业HA,负载均衡和失败转移

3

支持弹性动态扩容

4

支持Job Timeout处理

5

支持统一监控和告警

6

支持作业统一配置

7

支持资源隔离和作业隔离

说明:Saturn的基本原理是将作业在逻辑上划分为若干作业分片,通过作业分片调度器将作业分片指给特定的执行节点,执行节点通过quertz出发执行作业的具体实现(以shell为例,则为shell脚本),在执行的时候,会将分片序号和参数传入,如下图所示,作业的实现逻辑分析分片序号和分片参数,并以此为依据来调用具体的实现(比如一个批量处理数据库的作业,可以划分0号分片处理1-10号数据库,1号分片处理11-20号数据库)。

cb27f89a8ea0fb1beef1c93fbaf8cf07.png

系统逻辑架构图

logic.png

执行节点:

负责作业的触发(定时),作业执行时,结果上报,日志上报,告警上报,监控日志写入等功能。可独立运行在业务服务器,也可与业务代码运行在同一个jvm。使用Java开发,提供jar包和可运行的工程两种方式供业务方使用,是业务作业接入saturn最主要的组件。

控制台:

负责作业的统一配置,包括作业的添加、删除,作业属性配置,作业状态查看,执行日志查看,执行节点监控等功能,控制台单独部署,提供web应用给全域共用,业务接入方根据申请的权限控制对赢得业务作业。

作业分片调度器:

Saturn的“大脑”,其基本功能是将作业分片指派到执行节点,通过调整分配算法和分配策略,可以将作业合理的安排到合适的执行节点,从而实现HA,负载均衡,动态扩容,作业隔离,资源隔离等治理功能。作业分片调度器为后台程序,单独部署;它是公共资源,所有域共用同一套作业分片调度器。接入作业后,会自动接受作业分片调度器的调度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值