spring-cloud-alibaba-整合spring-cloud-gateway-3.1.4
spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4
前言
最近使用较新版本的spring-cloud-alibaba
搭建微服务框架, 在整合spring-cloud-gateway
时遇到了一些问题, 所以记录一下, 如有不妥当的地方欢迎留言, 我会及时更正
版本说明
组件依赖 | 版本说明 | 官网地址 |
---|---|---|
spring-boot | 2.6.11 | https://spring.io/projects/spring-boot#learn |
spring-cloud-netflix | 2021.0.4 | https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 |
spring-cloud-alibaba | 2021.0.4 | https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 |
nacos-server | 2.0.4 | https://github.com/alibaba/nacos/releases/tag/2.0.4 |
nacos-client | 2021.0.4.0 | |
spring-cloud-starter-loadbalancer | 3.1.5 | |
spring-cloud-gateway | 3.1.4 |
引入spring-cloud-gateway
- pom.xml
<dependencies>
<!--SpringBoot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--spring cloud alibaba-->
<!--nacos 服务注册与发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- openfeign 具备RPC通信能力 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--spring cloud gateway 网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
注意: 需要将pom中
spring-cloud-starter-gateway
依赖排除hibernate-validator
这个包, 不然会报错
Gateway(SrpingBoot)项目配置
- application.yml
server:
port: 8010
tomcat:
uri-encoding: UTF-8
max-http-header-size: 80KB
spring:
application:
name: gateway-server-01
profiles:
active: dev
jackson:
date-format: yyyy-MM-dd HH:mm:ss
default-property-inclusion: non_null
time-zone: GMT-8
serialization:
WRITE_DATES_AS_TIMESTAMPS: false
property-naming-strategy: SNAKE_CASE
main:
web-application-type: reactive
- application-dev.yml
spring:
cloud:
## gateway 注册到nacos
nacos:
discovery:
server-addr: http://192.168.88.100:8848
username: nacos
password: nacos
group: DEFAULT_GROUP
service: ${spring.application.name}
register-enabled: true
config:
group: DEFAULT_GROUP
share-data-ids: ${spring.application.name}-${spring.profiles.active}
server-addr: http://192.168.88.100:8848
namespace: public
## gateway config
gateway:
discovery:
locator:
enabled: true
routes:
## 需要路由到的 server name
- id: blog-admin-01
# 采用 LoadBalanceClient 方式请求, 以 lb:// 开头, 后面的是注册在 Nacos 上的服务名
uri: lb://blog-admin-01
# Predicate 翻译过来是"谓词"的意思,必须,主要作用是匹配用户的请求, 有很多种用法
predicates:
- Path=/blog-admin/**
filters:
# 前缀过滤, 默认配置下, 我们的请求路径是 http://localhost:8888/business-oauth2/** 这时会路由到指定的服务
# 此处配置去掉 1 个路径前缀, 再配置上面的 Path=/api/**, 就能按照 http://localhost:8888/api/** 的方式访问了
- StripPrefix=1
config:
import: nacos:application-dev.yml
- SpringBoot启动类
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayServerApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayServerApplication.class, args);
}
}
- Nacos服务列表
验证
需要通过gateway转发到具体的应用服务, 这里通过访问gateway, 转发到 blog-admin-01
这个服务, 下面运行结果说明是没有问题的