(一)vip saturn任務調度器使用:saturn升級支持sb2.x記要

微信公衆號:架構師前線
原創聲明:本文系作者原創,謝絕個人、媒體、公衆號或網站未經授權轉載,違者追究其法律責任。

目錄


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();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章