微信公衆號:架構師前線
原創聲明:本文系作者原創,謝絕個人、媒體、公衆號或網站未經授權轉載,違者追究其法律責任。
目錄
文章目錄
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();
}