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、工作原理
- gateway客户端向gateway发起请求
- 请求首先被HttpWebHandlerAdapter进行提取组装成网关的上下文
- 然后网关上下文会传递到DispatcherHandler
- DispatcherHandler是所有请求的分发处理器,主要负责分发请求对应的处理器。比如将请求分发到对应的RoutePredicate-HandlerMapping(路由断言处理映射器)
- 路由断言处理映射器主要用于路由的查找,以及找到路由后返回对应的FilterWebHandler
- FilterWebHandler主要负责组装Filter链表并调用Filter执行一系列的Filter处理,然后把请求转到后端对应的代理服务处理
- 处理完毕后,将response返回给gateway客户端
注意:
- 过滤器分为Pre和Post,分别在转发请求之前处理和接收到代理服务返回的结果之后处理
- 在配置路由时,如果不指定端口,则http默认端口为80,https默认端口为443
- gateway目前只支持netty容器