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