spring cloud1.X 升級 spring cloud 2.X實戰
一.簡述
公司內部使用的springboot版本是3年前1.0版本的。今年需要擴充套件其他技術棧和整合CMDB,發現老版本有很多限制,包括第三方開源的一些框架支援也不是很友好,因此本人蔘與升級和構建吸取了一些經驗,生產環境已經運行了一段時間,因此做個分享和學習。
本文只針對應用服務做升級。如果框架用Springcloud的全家桶的關於配置中心(config-server)和註冊中心(Eureka-server)本文不詳細講解。因為我們全家桶的配置中心已經棄用了。而且升級之後註冊中心老版本不受影響,當然後續也會升級。
二.升級版本(springboot & springcloud)
springbootd對應的springcloud版本參考: https://start.spring.io/actuator/info
升級前的版本:
springboot: 1.4.0.RELEASE
springcloud: Brixton.SR5
升級後的版本(比較新):
springboot: 2.3.7.RELEASE
springcloud: Hoxton.SR9
三 .相關配置修改
3.1.POM檔案修改
專案關於包的依賴升級之後會發現以前有些基本棄用了,程式碼需要根據包的依賴做個新的引入和調整。
springboot&springcloud
升級前:
<!-springboot-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
<relativePath/>
</parent>
<!-springcloud-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
升級後:
<properties>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
feign
升級前:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
升級後:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
Eureka
Eureka服務可以逐步升級,因為老版本的 Eureka服務支援升級之後的微服務註冊,這次暫不升級Eureka服務。
升級前:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
升級後:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
redis
升級前:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
升級後:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
webservice CXF
如果有用到webservice 也需要升級,不然專案啟動的時候會報相關錯誤.
升級前:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.7</version>
</dependency>
升級後:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.2.12</version>
</dependency>
maven外掛
打包的依賴最好也一起修改掉。
升級前:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.4.RELEASE</version>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
升級後:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass><!--啟動類--></mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
3.2.配置檔案修改
資料來源
升級之後資料來源會變成HikariCP資料庫連線池。也是springcloud2.X的特性之一。如果是多資料來源在配置中心需要做微調。不然啟動的時候會找不到資料庫的連線配置資訊和驅動。 我們的專案大部分是用阿里的Druid作為資料庫連線池。而且有些服務連的是多資料來源的專案。
jdbc-url
如果是多數源都要進行修改。不然預設的HikariCP資料庫連線池會找不到jdbcurl。
升級前:
spring:
datasource:
url: jdbc:mysql://url***
升級後:
spring:
datasource:
jdbc-url: jdbc:mysql://url***
以上是做升級之後我們遇到的問題和需要調整的地方。