Spring cloud gateway是Spirng官方基于Spring 5.0,Spring boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点和限流等。
client想要访问server,得先经过网关,然后才能访问到server,所以网关第一个需求就是把client的一个请求二次发送到请求对应的server上,简称路由。请求既然走了网关,网关这一层就得做些事情,那能做哪些事情呢?我们可以自由发挥,比如没有达到某种要求就不让该请求到达对应的server上(请求鉴权),网关可以监控某些特定的请求,让其访问频率不得高于某定值(限流)等等。
1、路由
1.id: 路由唯一标志
2.uri: 下游服务地址
3.predicates:匹配该路由需要满足的条件
4.filters:匹配该路由需要经过的过滤器
下面我们其看下源码中对路由的对象定义
其中有个默认属性order,其指该路由的优先级
id属性是非必填的,有UUID随机字符串作为默认值;
uri是下游服务的地址,这里支持两种模式,一种是直接填写下游地址,还有一种走服务治理流程,通过服务发现中的服务名寻找下游地址,例如
“lb”意味着有注册中心有多个服务实例,走负载均衡。
predicates是匹配路由的重要属性,gateway默认支持10种匹配,如下图