微服务技术栈(七) - SpringCloud(统一网关Gateway)

一、Gateway 入门

网关的作用:

(1)对用户请求做身份认证、权限校验

(2)将用户请求路由到微服务,并实现负载均衡

(3)对用户请求做限流

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第1张图片

 

二、搭建网关服务

网关搭建步骤:  

(1)创建项目,引入nacos服务发现和gateway依赖

(2)配置application.yml,包括服务基本信息、nacos地址、路由

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第2张图片

 路由配置包括:

(1)路由id:路由的唯一标示

(2)路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡

(3)路由断言(predicates):判断路由的规则,

(4)路由过滤器(filters):对请求或响应做处理

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第3张图片

 

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第4张图片

 

 三、路由断言工厂Route Predicate Factory

        我们在配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的条件

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第5张图片

 PredicateFactory 的作用是什么?

        读取用户定义的断言条件,对请求做出判断

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第6张图片

 

 四、路由过滤器 GatewayFilter

         GatewayFilter 是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:微服务技术栈(七) - SpringCloud(统一网关Gateway)_第7张图片

 

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第8张图片

 

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第9张图片

 

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第10张图片

 

总结:

过滤器的作用是什么?

(1)对路由的请求或响应做加工处理,比如添加请求头

(2)配置在路由下的过滤器只对当前路由的请求生效

defaultFilters 的作用是什么?

(1)对所有路由都生效的过滤器

五、全局过滤器 GlobalFilter

        全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。

         区别在于GatewayFilter通过配置定义,处理逻辑是固定的。而GlobalFilter的逻辑需要自己写代码实现。

全局过滤器的作用是什么?

(1)对所有路由都生效的过滤器,并且可以自定义处理逻辑

实现全局过滤器的步骤?

(1)实现GlobalFilter 接口

(2)添加@Order 注解或实现Ordered 接口(决定全局过滤器顺序

(3)编写处理逻辑

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第11张图片

 

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第12张图片

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第13张图片  

六、过滤器执行顺序

路由过滤器、defaultFilter、全局过滤器的执行顺序?

(1)order值越小,优先级越高

(2)当order值一样时,顺序是defaultFilter最先,然后是局部的路由过滤器,最后是全局过滤器

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第14张图片

 

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第15张图片

 

七、跨域问题处理

跨域:域名不一致就是跨域,主要包括:

(1)域名不同: www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com 域名相同,

(2)端口不同:localhost:8080和localhost8081

跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题

解决方案:CORS

微服务技术栈(七) - SpringCloud(统一网关Gateway)_第16张图片

 

你可能感兴趣的:(微服务,spring,cloud,微服务,gateway)