服务网关-Gateway
一、概念简介
SpringCloud Gateway是Spring Cloud的一个全新项目,基于Spring 5.0+Spring Boot 2.0和Project Reader等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。
SpringCloud Gateway 作为Spring Cliud生态系统的中网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是是由的Zuul 1.x非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。
二、网关作用
反向代理
鉴权
流量监控
熔断
日志监控
...
三、网关在微服务中的位置
外部请求
负载均衡
网关
微服务
四、三大核心概念
Route(路由)
路由是构建网关的基本模块,它由ID、目标URl,一系列的断言和过滤器组成,如果断言为true则匹配该路由。
Rredicate(断言)
开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求体参数),如果请求与断言相匹配则进行路由。
Filter(过滤)
指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
五、GateWay工作流程
客户端向 Spring Cloud Gateway发出请求。然后在Gateway Hanler Mapping 中找到与请求相匹配的路由,将其发送到Gateway Web Handler。
Handler再通过指定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。过滤器之间用虚线分开是因为过滤器可能回在发送代理请求之前或之后执行业务逻辑
Filter在pre类型的过滤器可以做校验、权限校验、流量监控、日志输出、协议转换等,在post类型的过滤器中可以做响应内容、响应头的修改、日志的输出,流量监控等有着非常重要的作用。