分布式任务调度
一页芳华
细节决定成败,技术成就梦想!
思路决定出路,行动创造未来!
展开
-
Saturn项目打包配置文件外置化
很久没有写博客了,最近电脑硬盘坏了,导致很多还没有来得及备份的数据丢失了,之前有一个笔记记录关于如何做到 saturn 项目打包后,把配置文件外置化,结果也丢了。今天又碰到有同学需要这个玩法,所以记录一篇博客,一方面可以供参考,另一方面也算是自己的一个学习笔记。还是假设我们的项目是SpringBoot项目,打包成jar,丢到 Saturn-Executor 指定的目录下面,这样,被 Executor 调度后初始化我们的项目。我们想要把 SpringBoot 项目的配置文件 application.yma原创 2020-08-28 18:57:59 · 428 阅读 · 0 评论 -
执行器扩展节点及注意事项
当我们的节点需要扩展时,我们可以直接在新的机器上按照之前的方式部署,也可以采用下面介绍的远程拷贝的方式来做。例如,我们申请到了两个新的节点机器 target-ip-one 和 target-ip-two,下面介绍把执行器从 source-ip 远程拷贝到 target-ip-one的详细步骤及注意事项.之所没把整个/data/app目录下的内容全部拷贝,是因为内容特别多,并且很多内容...原创 2019-10-09 10:17:26 · 294 阅读 · 0 评论 -
作业"立即执行"按钮消失的情况
一般情况下,我们添加完作业后,在页面右上角有一个“立即执行”按钮,我们点击这个按钮,方便测试和调试,而有形场景下,这个按钮不见了。作业要能“立即执行”,前提是执行器在线。如果我们执行器在线,仍然没“立即执行”钮,基本可以判断,这个添加的作业问题,绝大多数情况下,是我们作业配置的 “实现类” 这一项的值配的有问题。典型的情况下面的几种(本质上就是一种情况,全类名配置误):1.全类名完全不对...原创 2019-10-09 10:18:00 · 310 阅读 · 0 评论 -
发版失败之服务器时间差超过60s
1.发版失败如下2.问题排查上服务器,切换到app用户,执行重启命令(发版是通过页面执行的这个命令)sh /data/app/bin/restart.sh得到如下信息:根据提示查看:less /data/app/logs/other/saturn-nohup.out根据这个信息,我们发现,是由于执行器和控制中心之间的时间差超过了60秒。3.解决方案把控制中心和执...原创 2019-10-09 10:19:31 · 310 阅读 · 0 评论 -
导入作业Excel失败的情况分析
1.背景描述当我们配置了大量的作业,想要在另一个环境中也配置这样的作业,我们无需再重新挨个配置,只需要把作业从一个环境导出来,再导入到另一个环境。2.异常情况3.问题分析从上面红色方框的报错信息可以看出,是由于要上传的文件路径不合法。/tmp/tomcat.4451591421718163769.8080/work/Tomcat/localhost/ROOT这个路径究竟是个...原创 2019-10-09 10:19:46 · 903 阅读 · 0 评论 -
执行器没有被分配任何作业
1.场景描述我们遇到了这样的场景,当发版后,本身5分钟一个调度就该到达了,该被执行了,观察日志发现并没有被执行,再去检查执行器的任务分配情况,发现几台执行器上都没有分配到作业。2.问题追踪这个问题的排查相对费时间,因为中途我做了测试环境的集群搭建,动了其中的一些点位,git仓库的代码也进行过回滚,这里简单回顾下我的追踪过程。(1).我之前做集群的时候,动了环境变量,增加过一个 集群标...原创 2019-10-09 10:19:59 · 439 阅读 · 0 评论 -
执行器在线作业却不能被执行
1.场景描述我们遇到这样的情况,发版后,发现执行器都起来了,但是作业都没执行,点立即执行并没用。查看服务器日志会发现,我们的项目并没初始化成功,为什么会初始化失败呢?2.故障现象执行器都是启动成功的作业立即执行无效,查看日志有如下报错 :saturn-executor-log.logsaturn-executor-error.log再看看 saturn-nohu...原创 2019-10-09 10:20:11 · 413 阅读 · 0 评论 -
异常作业检测的设计说明
1.需求描述一个作业跑了很久都没有跑完,或者非常快就跑完了,我们认为这种作业可能存在异常那个,需要把这种作业监控出来,及时查看情况进行相应的处理。2.实现方式每个作业被创建出来后,都会在 ZK 上创建节点保存相关信息,作业的启用、运行、结束、停止都会引起 ZK 节点上数据的变化。只要搞清楚 每个作业在ZK上的数据结构,然后直接读取ZK 数据,就可以结合业务逻辑做监控了。一个作业的节点信...原创 2019-10-09 10:20:24 · 182 阅读 · 0 评论 -
使用JVM默认参数出现的内存溢出
1.场景描述2019年7月8日 17:17分左右开始,控制中心服务器CPU飙升告警,查看日志,出现大量异常。2.故障现象Saturn-Console机器出现大量的如下图的故障ZK不断的尝试重连后来尝试通过浏览器登录到管理界面,登录不上,8080端口还在,但是http服务已经没有响应了。后台去请求数据库数据,此时已经请求不成功了。最后就开始报堆栈溢出,直到重启。...原创 2019-10-11 12:42:50 · 211 阅读 · 0 评论 -
发版注意事项及特殊情况解决方案
1.项目结构说明整个saturn分布式任务调度涉及到三大块:(1).控制中心;(发版跟这个没有关系,一次配置好了启动了,后面就不用管了)(2).执行器;(发版会执行restart.sh 脚本文件,就是一个执行器重启的过程)(3).应用系统;(也就是我们的jobApplication,即SpringBoot工程)说明:执行器与应用系统之间的关系是,执行器启动后会扫描到我们的应用系统那个...原创 2019-10-08 11:43:49 · 732 阅读 · 0 评论 -
发版说明及流程演示
1.自动发布系统的配置我们标准化要求用Assembly插件打包 SpringBoot项目,以达到配置文件外置化的目的。而我们的这个分布式任务调度项目,运行方式相对特殊:要Executor启动后再新创建一个ClassLoader再来加载我们的项目。鉴于此,我们采用了另一种方式:还是用Saturn的打包方式,打包出一个 zip包,然后通过在 自动发布系统中配置Linux相关命令,做到将zip包解...原创 2019-10-08 11:40:15 · 938 阅读 · 0 评论 -
Saturn简介及重要特性
一、简介Saturn (任务调度系统)是唯品会开源的一个分布式任务调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用以及分片并发处理。Saturn是在当当开源的Elastic Job基础上,结合各方需求和唯品会的实践见解改良而成。二、重要特性支持多种语言作业,语言无关(Java/Go/C++/PHP/Python/Ru...原创 2019-10-08 10:28:42 · 1927 阅读 · 0 评论 -
Saturn的系统架构
一、总体设计说明Saturn的基本原理是将作业在逻辑上划分为若干个作业分片,通过作业分片调度器将作业分片指派给特定的执行结点。 执行结点通过quartz触发执行作业的具体实现(以shell为例,则为shell脚本),在执行的时候,会将分片序号和参数作为参数传入(见图1)。 作业的实现逻辑需分析分片序号和分片参数,并以此为依据来调用具体的实现(比如一个批量处理数据库的作业,可以划分0号分片处理1-...原创 2019-10-08 10:32:28 · 1718 阅读 · 0 评论 -
Saturn Console部署图文示例
参考:https://vipshop.github.io/Saturn/#/zh-cn/3.0/saturn-console-deployment1.确保JDK已经安装好,zookeeper和mysql环境都已经准好;2. 创建数据库和表。执行官网提供的 sql 脚本即可。向 sys_config 表中初始化两条数据,如果不手动插入这两条数据,后面登录到系统管理界面,添加不进去,这是...原创 2019-10-08 10:48:41 · 1312 阅读 · 0 评论 -
Saturn Console集群搭建
思路:搭建两台或者 多台Console出来 ,然后利用nginx做反向代理提醒:官网上的集群搭建方式一笔带过,并且存在误导,我开始就是按照官网那个搭建始终不成功,费了不少时间。下面分享搭建过程、中途遇到的问题、解决方案、注意事项等。1.搭建多台Console我是用比较偷懒的方式,直接在一台机器上搭建了2台。先搭建单机版的一台,再复制一份,改下日志路径、启动端口、jmx端口就OK了。...原创 2019-10-08 11:03:10 · 825 阅读 · 0 评论 -
Saturn Console部署踩坑总结
照官网的关于 3.1.0 的文档介绍,一步步做,会遇到一些坑,下面做一下总结1.修改默认的日志输出路径官网上给的参数是:SATURN_CONSOLE_LOG,其实这个参数是无效的,官网文档应该是没有更新吧,应该用:saturn.console.log官网的启动参数描述如下:我的启动命令如下:2.浏览器不兼容问题(登录用户名显示不正常)我们首次访问的时候,右上角看到的登...原创 2019-10-08 11:16:09 · 1297 阅读 · 3 评论 -
Saturn Executor部署过程
1.配置环境变量VIP_SATURN_CONSOLE_URI内容如下:进行了上述的配置后,记得刷新配置文件,使配置立即生效。source /etc/profile2.准备 executor从https://github.com/vipshop/Saturn/releases中点击链接获取最新版本的'Executor Zip File', 将得到一个saturn-exec...原创 2019-10-08 11:25:32 · 1694 阅读 · 0 评论 -
Saturn Java作业SpringBoot方式开发打包
1.创建maven工程,添加依赖SpringBoot项目,首先就要把spring-boot-starter-parent 添加到pom文件,我用的是1.5.6.RELEASE 版本,这里主要是一个Demo,关于数据库连接等,其他的依赖我暂时不添加了。 <parent> <groupId>org.springframework.boot</groupId...原创 2019-10-08 11:30:37 · 1722 阅读 · 1 评论 -
添加域配置和添加作业配置
1.到调度中心进行任务的调度配置注册中心--->域管理:添加域择一个ZK集群,我们之前已经配置了test,再填写域名,上面的 一步启动executor里面 -n 参数后面就是域名,也是名称空,即www.xyz.com根据自己的实际情况取名吧。2.鼠标放在这个域名上面,在浏览器左下角会显示 一个链接,我们点击域名进入作业总揽,进行该域名下的所有作业管理...原创 2019-10-08 11:34:18 · 433 阅读 · 0 评论 -
我与Saturn有个约会
一、前言 仍不住要罗嗦两句,感恩能与Saturn接触,感谢Saturn团队及社区热心朋友的帮助,在写本篇文章的时候,其实与Saturn相识有3个月了。在Saturn团队的鼓励下,写下这篇博客。其实,已经很久没有写博客了,之前的账号密码都没有维护,这算是我这个账号的第一篇博客,后期,也会好好维护这个账号,一方面是记录成长的点滴,一方面是经验的总结与交流。二、与Saturn结缘 ...原创 2019-01-09 21:57:18 · 1144 阅读 · 7 评论