- 工作原理:
1.Gateway Handler Mapping 拦截,匹配路由规则
2.Gateway Web Handler通过过滤器链将请求发送到对应处理器
- 环境搭建注意事项
1.引入依赖:Gateway不需要springboot的web模块,它用的是WebFlux,不要引入web依赖
2.配置文件:
spring:
application:
name: lagou-cloud-gateway
cloud:
gateway:
routes: # 路由可以有多个
- id: service-autodeliver-router # 我们⾃定义的路由 ID,保持唯⼀
uri: http://127.0.0.1:8096 # 实际上应该配置注册中心地址
#uri: lb://xxx-service 注册中心地址形式
predicates: #断⾔:路由条件,Predicate 接受⼀个输⼊参数,返回⼀个布尔值结果。该接⼝包含 多种默 认⽅法来将 Predicate 组合成其他复杂的逻辑(⽐如:与,或,⾮)。
- Path=/autodeliver/**
- id: service-resume-router
uri: http://127.0.0.1:8081
predicates:
- Path=/resume/**
filters:
- StripPrefix=1
- Gateway断言体系
配置中predicates参数用到了Gateway的断言体系,可以灵活配置路由规则
- Gateway过滤器
配置中filters用到了Gateway过滤器
按生命周期分:pre和post
按类型划分:GateWayFilter 应用于单个路由器,GlobalFilter 应用于全局
(StripPrefix是过滤器的其中一种,可以把路由前缀去掉,例如StripPrefix=1在uri=localhost:8080/a/b/c时,会把转发的结果变成localhost:8080/b/c)
GlobalFilter全局过滤器是程序员使⽤⽐较多的过滤器,例如:使用自定义全局过滤器实现黑白名单限制
使用方式:实现GlobalFilter接口
- GateWay高可用
实现方法:启用多个GateWay实例,在GateWay的上游使用nginx负载均衡即可