网关(Springcloud gateway)
学习中笔记
一、网关简介
网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。
API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。
二、网关四大职能
- 请求接入:作为所有API接口服务请求的接入点
- 业务聚合:作为所有后端业务服务的聚合点
- 中介策略:实现安全、验证、路由、过滤、流控等策略
- 统一管理:对所有API服务和策略进行统一管理
三、网关系统分类
- 流量网关:关注稳定与安全
全局流控、日志统计、防止SQL注入、访问WEB攻击、屏蔽工具扫描、黑白IP名单、证书|加密解密处理 - 业务网管:提供更好的服务
服务级别流控、服务降级和熔断、路由与灰度策略负载均衡、服务过滤|聚合|发现、权限验证与用户等级策略、业务规则和参数校验、多级缓存策略
四、Springcloud Gateway简介
SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)实现的,性能⾼于Zuul,官⽅测试,GateWay是Zuul的1.6倍。Spring Cloud Gateway 的目标,不仅提供统一的路由方式(反向代理)并且基于 Filter(定义过滤器对请求过滤,完成⼀些功能) 链的⽅式提供了⽹关基本的功能,例如:鉴权、流量控制、熔断、路径重写、⽇志监控等。
五、Springcloud Gateway三个概念
- 路由(route):⽹关最基础的部分,也是⽹关⽐较基础的⼯作单元。路由由⼀个ID、⼀个⽬标URL(最终路由到的地址)、⼀系列的断⾔(匹配条件判断)和Filter过滤器(精细化控制)组成。如果断⾔为true,则匹配该路由。
- 断⾔(predicates):参考了Java8中的断⾔java.util.function.Predicate,开发⼈员可以匹配Http请求中的所有内容(包括请求头、请求参数等)(类似于nginx中的location匹配⼀样),如果断⾔与请求相匹配则路由。
- 过滤器(filter):⼀个标准的Spring webFilter,使⽤过滤器,可以在请求之前或者之后执⾏业务逻辑。
Predicates就是我们的匹配条件,⽽Filter就可以理解为⼀个⽆所不能的拦截器,有了这两个元素,结合⽬标URL,就可以实现⼀个具体的路由转发。