1.spring cloud gateway的目标是提供统一的路由方式基于Filter链的方式提供了网关基本的功能,例如安全,监控/指标、限流
spring gateway具有如下特征:
动态路由:能给匹配任何请求属性;可以对路由指定Predicate断言和Filter过滤器
集成hystrix的断路器功能;
集成spring cloud服务发现功能;
易于编写的Predicate和Filter;
请求限流功能;
支持路径重写。
2.三大核心概念
路由:构建网关的基本模块,由id,目标uri,一系列的断言和过滤器组成,如果断言为true匹配该路由
Predicate断言:如果请求与断言相匹配则进行路由
Filter:使用过滤器,可以在请求被路由前或之后对请求进行修改
3.gateway搭建
pom 引入 spring-cloud-starter-gateway
yml配置:
spring:
cloud:
gateway:
routes:
- id: 路由的id,没有固定规则,但要求唯一,建议配合服务名
uri: http://localhost:8001
predicates:
- Path=/payment/get/**
- id: 路由的id,没有固定规则,但要求唯一,建议配合服务名
uri: http://localhost:8001
predicates:
- Path=/payment/lb/**
网关路由有两种配置:
1.在配置文件yml中配置
2.代码中注入routeLocator的Bean
动态路由配置:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true 开启注册中心动态创建路由的功能,利用微服务名进行路由
routes:
- id:
uri: lb://服务名
predicates:
- Path=/payment/get/**
常用的Predicate:after,before,cookie, header,method
spring cloud gateway的Filter 生命周期只有两种:pre,post,种类:GatewayFilter,GlobalFilter
自定义全局GlobalFilter:两个主要接口 implements GlobalFilter,Ordered