SpringCloud Gateway 使用非阻塞模式,性能优于 Netflix Zuul,并且支持长连接,其核心组件就是断言和过滤器。
在之前Consul 主项目中添加 gateway模块,实现服务网关功能。
SpringCloud Gateway 路由功能,使用断言进行请求和路由的匹配,匹配上的请求被发送到对应的网关 web 处理器进行处理,处理器处理时经过一系列过滤器。
1、maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2、配置文件
server:
port: 8801
spring:
application:
name: gateway
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: gateway
gateway:
discovery:
locator:
enabled: false
lower-case-service-id: true
routes:
- id: logservice
uri: lb://logservice
predicates:
- Path=/log/**
filters:
- StripPrefix=1
- id: orderservice
uri: lb://orderservice
predicates:
- Path=/order/**
filters:
- StripPrefix=1
# 配置日志
logging:
level:
org.springframework.cloud.gateway: debug
routes节点下可以设置多个路由,每个路由由唯一id,匹配对应的服务,
在predicates节点下配置断言, Gateway 内置了多种断言,常用的有 Path, 路径路由断言,上面uri里的lb意思是使用负载均衡,也可以为具体的网址。
Method 方法路由断言,只允许指定的请求方法类型通过。其他还包括Header,Cookie, Host,QueryParam,RemoteAddr, DateTime。
3、启动类上添加注解
@EnableDiscoveryClient
4、从网关访问日志服务和订单服务