唯品会开源分布式作业调度平台Saturn

简介: Saturn英文意思是:土星,太阳系中的第二大行星。比地球高一个层级,地球是八大行星之一。而今天我们介绍的Saturn,是IT行业的一个分布式作业调度平台。

前言


Saturn英文意思是:土星,太阳系中的第二大行星。比地球高一个层级,地球是八大行星之一。而今天我们介绍的Saturn,是IT行业的一个分布式作业调度平台。可以看到Saturn的管理界面的象征性图标就是如下一个土星标志:


addd655001bf3c5b0e86cbdca28b115f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


一、背景


普通的SpringBoot/SpringCloud微服务和Dubbo RPC分布式架构技术,都有着其各自的优缺点。其中最明显的就是模块间的依赖性:

  1. 比如SpringCloud必须依赖网关Zuul和ConfigCenter配置中心。
  2. 前一个业务模块必须启动并正常运行,后面依赖该业务模块的才能正常启动。
  3. Dubbo必须要配置Service且正常启动并运行。
  4. 后面调用前面的Dubbo Service作业才能正常启动。


二、简介


Saturn (任务调度系统)是唯品会开源的一个分布式任务调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用以及分片并发处理。


Saturn是在当当开源的Elastic Job基础上,结合各方需求和我们的实践见解改良而成。


GitHub上Saturn官网活跃着很多Saturn用户和爱好者,业界也有很多公司以Saturn作为公司的核心架构


https://github.com/vipshop/Saturn


三、特性



  • 基于时间的作业调度,作业实现不受开发语言所限
  • 简单的作业实现和基于web的作业管理
  • 并行作业分片支持
  • 秒级调度支持
  • 智能的基于负载作业分配算法
  • 异常检测和自动failover
  • 统计数据可视化
  • 全方位监控和简易的trouble shooting
  • 支持多活集群部署
  • 容器友好
  • 经受住生产每日几十亿级别的调度考验


四、快速开始



  • Saturn包括两大部分,Saturn Console和Saturn Executor。
  • Saturn Console是一个GUI,用于作业/Executor管理,统计报表展现,系统配置等功能。它同时也是整个调度系统的大脑:将作业任务分配到各Executor。
  • Saturn Executor是执行任务的Worker:按照作业配置的要求去执行部署于Executor所在容器或物理机当中的作业脚本和代码。
  • 提供两种快速启动Console和Executor的方法。

 


五、一键启动


安装必备:


  • JDK 1.8
  • Maven 3.0.4+
  • node.js 8.7.0+
  • npm 5.4.2+
  • docker (版本不限)


然后,git clone本仓库到本地,checkout对应版本分支,进入quickstart目录。如果是Windows系统,请运行quickstart.bat,如果是Linux/Unix/MacOS系统,请运行quickstart.sh。


$ git clone https://github.com/vipshop/Saturn$ git checkout develop$ cd saturn-docker$ chmod +x quickstart.sh$ ./quickstart.sh


quickstart脚本将做如下事情:


  1. 启动内嵌的ZooKeeper
  2. 启动内嵌的Saturn-Console
  3. 启动内嵌的Saturn-Executor(包含了一个Java作业的实现)
  4. 在Saturn-Console添加该Java作业
  5. 启动完成后,您可以访问Saturn-Console:http://localhost:9088

如果你见到如下界面,则恭喜你,你的console已经启动。

d5ab56a94750768b2b82e72adbc936a8_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg


在首页的search bar点击会出现一个叫做'mydomain'的namespace。点击进去会见到一个名为'demoJavaJob'的作业,该作业有5个分片,每隔5秒调度一次。

95d9b80f940080e64361d3c563c85dae_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg


一个叫做'executor-1'的executor执行器调度该作业。


Docker启动

db9566ac82f88067afe9526d6eb9f61a_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg


quickstart-docker.sh脚本将做如下事情:


  • 构建基于OpenJDK7的基础镜像
  • 构建基于OpenJDK7的Saturn-Console镜像
  • 构建基于OpenJDK7的Saturn-Executor镜像
  • 启动一个ZooKeeper集群的容器
  • 启动一个Saturn-Console容器
  • 启动两个Saturn-Executor容器
  • 添加一个Java作业和一个Shell作业

启动成功后,您可以访问Saturn-Console:http://localhost:9088



相关文章
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
131 1
|
4月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
96 5
|
21天前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
5月前
|
机器学习/深度学习 人工智能 Shell
人工智能平台PAI操作报错合集之在分布式训练过程中遇到报错,是什么原因
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
25天前
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
69 1
|
5月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14995 29
|
4月前
|
消息中间件 Java Kafka
"Kafka快速上手:从环境搭建到Java Producer与Consumer实战,轻松掌握分布式流处理平台"
【8月更文挑战第10天】Apache Kafka作为分布式流处理平台的领头羊,凭借其高吞吐量、可扩展性和容错性,在大数据处理、实时日志收集及消息队列领域表现卓越。初学者需掌握Kafka基本概念与操作。Kafka的核心组件包括Producer(生产者)、Broker(服务器)和Consumer(消费者)。Producer发送消息到Topic,Broker负责存储与转发,Consumer则读取这些消息。首先确保已安装Java和Kafka,并启动服务。接着可通过命令行创建Topic,并使用提供的Java API实现Producer发送消息和Consumer读取消息的功能。
79 8
|
4月前
|
机器学习/深度学习 资源调度 PyTorch
面向大规模分布式训练的资源调度与优化策略
【8月更文第15天】随着深度学习模型的复杂度不断提高,对计算资源的需求也日益增长。为了加速训练过程并降低运行成本,高效的资源调度和优化策略变得至关重要。本文将探讨在大规模分布式训练场景下如何有效地进行资源调度,并通过具体的代码示例来展示这些策略的实际应用。
419 1
|
5月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
7046 2