微信公众号:架构师前线
原创声明:本文系作者原创,谢绝个人、媒体、公众号或网站未经授权转载,违者追究其法律责任。
目录
文章目录
vip saturn 是唯品会开源的任务调度平台,支持多语言端任务开发,不过其中有些细节处理得不是太好,比如尽管spring boot 1.x已经停止维护,但是vip saturn commiter 还未支持sb 2.x。目前我从生产实战中看到的saturn的一些不足点:
- 最新的 saturn 3.3.1 版 仅支持spring boot 1.x,还不支持2.x。
- executor 中网卡名必须包含eth0字符串问题,其实可以微调整支持指定网卡。
- 无论是java栈还是shell栈,executor实例部署上的灵活性较差,每家公司的CI/CD流程差别都特别大,saturn 打包方式限制太多,灵活支持机制较差。
- 程序包的部署是可执行jar包方式,这种方式不利增量升级。
- 配置文件还不能很直接接入apollo。
- 好多依赖工具包版本很低了,没有即时更新到最新稳定版本。
- 内嵌接入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();
}