Spring Cloud教程 第一弹 第二代网关spring cloud gateway

1、核心概念

1.1、路由route

路由是网关最基础的部分。路由信息由一个ID、一个目的url、一组断言工厂和一组Filter组成。如果路由断言为真,则说明请求的url和配置的路由匹配。

 

1.2、断言predicate

Java8中的断言函数。spring cloud gateway中的断言函数输入类型是spring5.0框架中的ServerWebExchange。spring cloud gateway中的断言函数允许开发者去定义来自于Http Request中的任何信息,比如请求头和参数等。

 

1.3、过滤器filter

一个标准的spring webfilter。spring cloud gateway中的filter分为两种类型:分别是gateway filter和global filter

 

2、工作原理

Spring Cloud教程 第一弹 第二代网关spring cloud gateway

  1. gateway客户端向gateway发起请求
  2. 请求首先被HttpWebHandlerAdapter进行提取组装成网关的上下文
  3. 然后网关上下文会传递到DispatcherHandler
  4. DispatcherHandler是所有请求的分发处理器,主要负责分发请求对应的处理器。比如将请求分发到对应的RoutePredicate-HandlerMapping(路由断言处理映射器)
  5. 路由断言处理映射器主要用于路由的查找,以及找到路由后返回对应的FilterWebHandler
  6. FilterWebHandler主要负责组装Filter链表并调用Filter执行一系列的Filter处理,然后把请求转到后端对应的代理服务处理
  7. 处理完毕后,将response返回给gateway客户端

注意:

  • 过滤器分为Pre和Post,分别在转发请求之前处理和接收到代理服务返回的结果之后处理
  • 在配置路由时,如果不指定端口,则http默认端口为80,https默认端口为443
  • gateway目前只支持netty容器