SpringCloud版本升级
1.前言
2018年保险大平台开发初期,SpringBoot版本为1.5.x,至今已过去两年,当前稳定版本已经升级到2.3.x, 2.5和1.5相比,在关联的spring版本以及springCloud版本上有较大区别,从系统可维护性,安全性等综合考虑,计划将大平台升级到2.3.x,相应的springCloud版本升级到Hoxton.SRX.。
2.升级方案
从上表可以看出,由于zuul、hystrix、ribbon等基础库基本可以做到兼容(zuul、hystrix等均停止新特性开发)。
根据eureka官方文档,1.x版本的服务端和客户端保持协议兼容。而且,通常情况下服务端版本高于客户端版本时是非常安全的。
因各系统间接口调用均基于HTTP接口,各业务API之间理论上不存在兼容问题。主要需要进行POC验证的内容包括:1)新旧版本的eureka服务端和eureka客户端之间的兼容性;2)新版版本网关与旧版本各应用服务之间的兼容性。
考虑到相关系统众多,实现整体划一方式的同步版本升级较难落地。因此计划采用逐步升级的方式分批完成各系统升级工作。
3.解决方案
目前针对本项目做的修改如下:
1. 修改pom文件依赖
2. 修改yaml文件命名
3. 根据相应的class类错误导入新的依赖包
pom修改如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--链路跟踪-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
mysql版本6.0
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
yaml文件修改如下:
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
page-row-bounds: true
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
default-zone: http://localhost:8761/eureka
instance:
prefer-ip-address: true
hostname: ${spring.cloud.client.ip-address}
instance-id: ${spring.cloud.client.ip-address}:${server.port}
feign:
hystrix:
enabled: true
client:
config:
default:
connect-timeout: 60000
logger-level: NONE
read-timeout: 60000
ribbon:
read-timeout: 120000
connect-timeout: 60000
##熔断时间设置
hystrix:
command:
default:
core-size: 30
maximum-size: 50
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 100MB
##解决网关文件上传乱码问题 2.3.5版本新配置
encoding:
charset: UTF-8
# 在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,
```driver-class-name: com.mysql.cj.jdbc.Driver
publisher-confirms-type: correlated
import org.springframework.cloud.netflix.feign 需要修改成import org.springframework.cloud.openfeign