序言:
此次介绍的实践是dubbo-2.7.8+nacos-1.3.2+gateway-Hoxton.SR8
1、升级注册中心,。其目的是项目中要从使用dubbo+zookeeper服务间调用升级为dubbo+nacos服务间调用。
第一点可以参考:https://blog.csdn.net/lwb314/article/details/108233863
2、升级网关,在升级之前有可能使用的是vue在前端做的服务的路由转发,也有可能使用的是nginx中根据不同的访问路径做的服务转发。将升级使用springcloud的gateway
一、确定springboot版本和springcloud的版本
此次使用的springboot版本是:2.3.3.RELEASE
参考官网:https://docs.spring.io/spring-cloud/docs/Hoxton.SR8/reference/html/
若是其他版本,则更改官网地址中的 Hoxton.SR8 。
例如更改为 :https://docs.spring.io/spring-cloud/docs/Hoxton.SR9/reference/html/
则会出现 springcloud版本为 Hoxton.SR9 最适合的springboot版本。
也可参考博文:https://blog.csdn.net/qq32933432/article/details/89375630
二、导入依赖
springcloud的pom依赖:
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
<!--spring cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
三、创建gateway工程
gateway的pom依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
注意:gateway底层使用的spring5.2.0之后的webflux,其中不能与spring-boot-starter-web同时引用。
解决方法:就是将spring-boot-starter-web进行排除依赖
四、修改启动类,修改配置文件
启动类:
//开启nacos的动态配置文件的刷新功能
@RefreshScope
//扫描包中所配置的bean
@ComponentScan("com.day")
//开启nacos服务注册
@EnableDiscoveryClient
@SpringBootApplication
public class DayGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(DayGatewayApplication.class, args);
}
}
配置文件:
application-dev.yml
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
# group: DEV_GROUP #默认是 DEFAULT_GROUP
# namespace: 2f942653-3980-418d-95ed-f36cd44ac984 #默认是public 如果需要使用,则需要将nacos中所创建出来的命名空间中命名空间ID
discovery:
server-addr: 127.0.0.1:8848
# group: DEV_GROUP #默认是 DEFAULT_GROUP
# namespace: 2f942653-3980-418d-95ed-f36cd44ac984 #默认是public 如果需要使用,则需要将nacos中所创建出来的命名空间中命名空间ID
application.yml:
server:
port: 9048
spring:
application:
name: day-gateway
profiles:
active: dev
cloud:
nacos:
config:
# \u914D\u7F6E\u6587\u4EF6\u7684\u540E\u7F00
file-extension: yml
gateway:
globalcors:
cors-configurations:
'[/**]':
allow-credentials: true
allowed-origins: "*"
allowed-headers: "*"
allowed-methods:
- OPTIONS
- GET
- POST
max-age: 3600
discovery:
locator:
enabled: true
default-filters:
- StripPrefix=1
routes:
- id: day-today
uri: lb://day-today
predicates:
- Path=/today/**
- id: day-yesday
uri: lb://day-yesday
predicates:
- Path=/yesday/**
其中gateway的配置
参考博文:https://blog.csdn.net/qq_38380025/article/details/102968559
整合网关至此结束。
此博文对应的工程:
github:https://github.com/qjyn1314/days