微信公众号:架构师前线
原创声明:本文系作者原创,谢绝个人、媒体、公众号或网站未经授权转载,违者追究其法律责任。

目录

文章目录

  • 目录
  • 一、调整细节
    • 1.0 saturn-job 项目调整
    • 1.1 saturn-console-api 子项目调整
    • 1.2 saturn-core 子项目调整
    • 1.3 saturn-it 子项目调整
    • 1.4 saturn-demo-springboot 子项目调整
    • 1.5 saturn-demo-springboot-embedded 子项目调整
    • 1.6 saturn-job-sharding 子项目调整
    • 1.7 saturn-console 子项目调整
    • 1.8 saturn-springboot 子项目调整

vip saturn 是唯品会开源的任务调度平台,支持多语言端任务开发,不过其中有些细节处理得不是太好,比如尽管spring boot 1.x已经停止维护,但是vip saturn commiter 还未支持sb 2.x。目前我从生产实战中看到的saturn的一些不足点:

  1. 最新的 saturn 3.3.1 版 仅支持spring boot 1.x,还不支持2.x。
  2. executor 中网卡名必须包含eth0字符串问题,其实可以微调整支持指定网卡。
  3. 无论是java栈还是shell栈,executor实例部署上的灵活性较差,每家公司的CI/CD流程差别都特别大,saturn 打包方式限制太多,灵活支持机制较差。
  4. 程序包的部署是可执行jar包方式,这种方式不利增量升级。
  5. 配置文件还不能很直接接入apollo。
  6. 好多依赖工具包版本很低了,没有即时更新到最新稳定版本。
  7. 内嵌接入job的方式,更符合研发对job的理解。

…等等小问题。
本人在使用saturn过程中,基于3.3.1版本,对这些看到的小问题在公司内部做了些调整,个人认为对saturn 使用会更容易一些,特别是对新手。希望能帮助到更多计划选型使用saturn的coder。

本文将记录saturn升级支持sb 2.x时,涉及到的一些局部调整。

一、调整细节

1.0 saturn-job 项目调整

pom.xml文件中:

<gson.version>2.5</gson.version>
<springframework.version>4.3.2.RELEASE</springframework.version>
<spring-boot-test.version>1.5.3.RELEASE</spring-boot-test.version>
<spring.data.commons.version>1.13.16.RELEASE</spring.data.commons.version>
<druid.version>0.2.9</druid.version><!--调整为:-->
<gson.version>2.6.2</gson.version>
<springframework.version>5.1.8.RELEASE</springframework.version>
<spring-boot-test.version>2.1.6.RELEASE</spring-boot-test.version>
<spring.data.commons.version>2.1.10.RELEASE</spring.data.commons.version>
<druid.version>1.1.19</druid.version>

增加如下依赖包:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version>
</dependency>

删除:

<javaee-web-api.version>7.0</javaee-web-api.version>
<dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>${javaee-web-api.version}</version><!--<scope>provided</scope> -->
</dependency>

调整druid:

<dependency><groupId>com.alibaba.druid</groupId><artifactId>druid-wrapper</artifactId><version>${druid.version}</version>
</dependency><!--调整为:-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version>
</dependency>

1.1 saturn-console-api 子项目调整

pom.xml文件中:

将 spring-boot-dependencies 依赖包版本从1.4.x改为2.x,比如改为2.1.6.RELEASE ;

去掉如下依赖包:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId><version>1.1.1.RELEASE</version><exclusions><exclusion><artifactId>logback-classic</artifactId><groupId>ch.qos.logback</groupId></exclusion></exclusions>
</dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><scope>provided</scope>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope>
</dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId>
</dependency>

增加如下依赖包:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
</dependency>

druid调整:

<dependency><groupId>com.alibaba.druid</groupId><artifactId>druid-wrapper</artifactId>
</dependency><!--调整为:-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId>
</dependency>

PageableUtil类中的getOffset 返回值类型从int改为long,相应的 JobOverviewController中的getJobSubListByPage方法调用getOffset时,需要强转为int。

1.2 saturn-core 子项目调整

去掉:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId>
</dependency>

1.3 saturn-it 子项目调整

spring-boot-dependencies调整:

<dependencyManagement><dependencies><dependency><!-- Import dependency management from Spring Boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.4.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><!--调整为:-->
<dependencyManagement><dependencies><dependency><!-- Import dependency management from Spring Boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.1.6.RELEASE</version><type>pom</type><scope>import</scope><exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></exclusion></exclusions></dependency></dependencies></dependencyManagement>

删除:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version>
</dependency>

logback-classic调整:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
</dependency><!--调整为:-->
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version>
</dependency>

1.4 saturn-demo-springboot 子项目调整

spring-boot-starter-parent 的版本号改为:2.1.6.RELEASE
重写Application类的main函数,改为如下:

public static void main(String[] args) {SpringApplication.run(Application.class, args);}

1.5 saturn-demo-springboot-embedded 子项目调整

spring-boot-starter-parent 的版本号改为:2.1.6.RELEASE

1.6 saturn-job-sharding 子项目调整

去掉:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId>
</dependency>

1.7 saturn-console 子项目调整

去掉:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><!--<scope>provided</scope> -->
</dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId>
</dependency><dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId>
</dependency>

增加:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
</dependency>

spring-boot-maven-plugin调整

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.0.RELEASE</version><configuration><mainClass>com.vip.saturn.job.console.springboot.SaturnConsoleApp</mainClass><layout>JAR</layout><executable>true</executable><classifier>exec</classifier></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions>
</plugin><!--调整为:-->
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.vip.saturn.job.console.springboot.SaturnConsoleApp</mainClass><layout>JAR</layout><executable>true</executable><classifier>exec</classifier></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions>
</plugin>

application.properties中增加:

spring.main.allow-bean-definition-overriding=true
saturn.stdout=true

1.8 saturn-springboot 子项目调整

<springboot.version>1.5.16.RELEASE</springboot.version>

版本号改为: 2.1.6.RELEASE

GenericSpringBootSaturnApplication类:

protected Object source() {return this.getClass();
}

改为:

protected Class source() {return this.getClass();
}

(一)vip saturn任务调度器使用:saturn升级支持sb2.x记要相关推荐

  1. 基于单片机的简单的任务调度器

    近来工作之余,研究了一下APM的源码. APM源码连接https://pan.baidu.com/s/17Dg1oEJT_fj12DM1BmZWxA 发现源码中有一个简单的任务调度器,不太重要的任务都 ...

  2. java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...

    折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...

  3. 从零入门 FreeRTOS 操作系统之任务调度器

    从零入门 FreeRTOS 操作系统之任务调度器 1 任务调度器的概念 FreeRTOS 中提供的任务调度器是基于优先级的全抢占式调度:在系统中除了中断处理函数.调度器上锁部分的代码和禁止中断的代码是 ...

  4. 面试八股文:你写过自定义任务调度器吗?

    最近入职了新公司,尝试阅读祖传代码,记录并更新最近的编程认知. 思绪由Q1引发,后续Q2.Q3基于Q1的发散探究 Q1. Task.Run.Task.Factory.StartNew 的区别? 我们常 ...

  5. 昇腾AI处理器软件栈--任务调度器(TS)

    任务调度器与运行管理器工程组成软硬件之间的大坝系统.在执行时,任务调度器对硬件进行任务的驱动,为昇腾AI处理器提供具体的目标任务,与运行管理器一起完成任务调度流程,并将输出数据回送给运行管理器,充当了 ...

  6. 18 TaskScheduler任务调度器抽象基类——Live555源码阅读(一)任务调度相关类

    这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/ol ...

  7. TaskScheduler一个.NET版任务调度器

    TaskScheduler是一个.net版的任务调度器.概念少,简单易用. 支持SimpleTrigger触发器,指定固定时间间隔和执行次数: 支持CronTrigger触发器,用强大的Cron表达式 ...

  8. 【Hadoop2.6】Yarn中任务调度器

    概述 Yarn中有三种任务调度器:FIFO调度器(FIFO Scheduler).容量调度器(Capacity Scheduler).公平调度器(Fair Scheduler). 任务调度器介绍 1. ...

  9. Quartz任务调度器详解

    关键字: 参考文章:http://blog.sina.com.cn/s/blog_4d36e1ae0100tost.html 价值文章分享:http://wenku.baidu.com/link?ur ...

最新文章

  1. 混沌与分叉python 实现
  2. [html] 如何在页面上显示Emoji表情?
  3. linux查看目录下文件个球,球服务翻译……只找到以前版本的。新版的服务名称改了……...
  4. Mr.J-- HTTP学习笔记(九)-- Web机器人
  5. C#.NET验证码智能识别学习笔记---06 解决java jre问题:JTessBoxEditor.jar打开的时报找不到或无法加载主类 com.sun.tools.javac.Main错误
  6. SAP License:SAP工业4.0 创新智能物流解决方案
  7. Codeforces Round #310 (Div. 1) B. Case of Fugitive set
  8. ubantu 软件安装教程汇总(持续更新)
  9. 单向链表环测试并返回环起始节点
  10. 《Adobe Flash CS4中文版经典教程》——1 FLASH CS4快速入门1.1 启动Flash并打开文件...
  11. 如何才能实现文字转语音播放?只要这三个步骤就能快速搞定!
  12. java 定时任务 单元测试_介绍java 定时任务最简单的3种实现方法
  13. QGIS二次开发:鼠标在地图上移动时,状态栏显示鼠标所在位置经纬度
  14. CSP_201712-1_最小差值(Java)
  15. 一个高效的敏感词过滤方法(PHP)
  16. Java封装的四个关键字
  17. 安卓禁用硬件加速_Android硬件加速详解
  18. 书籍《TRIZ理论》
  19. LeetCode 374题
  20. note_47: sony wf-1000xm4右耳机忽然连不上

热门文章

  1. C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具
  2. 有效需求分析培训梳理(一)
  3. 视频结构化分析及其数据集汇总
  4. 2022/9月份济南X家公司面试题汇总(web前端)
  5. CDH6.2.0安装教程
  6. 信号量和条件变量的区别
  7. python pandas 官网_时间序列的Python-Pandas随机抽样
  8. CAN总线35周年特别篇 -- CAN总线的前世今生
  9. 查看内核模块依赖关系和动态库依赖关系
  10. 图像阈值分割:最大熵法