gateway-网关
- 网关
- spring cloud gateway
网关
在微服务架构中一个系统会被拆分成多个微服务。那么作为客户端(前端)要如何去调用这么多的微服务?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。
这样的架构,会存在诸多的问题:
每个业务都会需要鉴权、限流、权限校验、跨域等逻辑,如果每个业务都各自为站。自己造轮子实现一遍,完全没必要,完全可以抽离出来,放到一个统一的地方去做
。
上面的问题可以借助网关来解决。
网关:所谓API网关,就是指系统的同一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务功能本身无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等待
添加上API网关之后,系统变成三层结构,系统的架构图如下:
加入网关之后的架构图
spring cloud gateway
- 功能特征
- 基于spring5.0和springboot2.0进行构建
- 动态路由:可以匹配任何请求属性
- 支持路径重写
- 集成服务发现(nacos、ereka)
- 可集成流控降级功能(sentinel、hystrix)
- 可以对路由指定易于编写的断言和过滤器
- 路由
路由是网关中最基础的部分,路由信息包括一个ID、一个目的URL、一组断言工厂、一组filter组成。如果断言为真,则说明请求的RUL和配置的路由匹配;- 断言
Java8中的断言函数,gateway中的断言函数类型是spring5.0框架中的servletWebExchange,断言函数允许开发者去定义匹配http request中的任何信息,比如请求头和参数等。- 过滤器
gateway中的filter分为Gateway Filter和Global Filter,filter可以对请求和响应处理
- 工作原理
spring cloud gateway的工作原理和zuul的差不多,最大的区别就是gateway的filter只有pre和post两种。