开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第三阶段:Gateway 概念及执行流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/685/detail/11889
Gateway 概念及执行流程
内容介绍:
一、基本概念
二、执行流程
由客户端发送一个请求到达 SpringCloudGateway,然后 Gateway 按照一定的规则进行请求转发,将其转发到商品微服务里,调用之后将结果返回客户端。
这节内容是入门案例里提到的一些概念以及在下图请求链中 API 网关内部是如何工作、相关执行流程讲解。
所谓的 API 网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等等。
一、基本概念
路由(Route)是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。
主要定义了下面的几个信息:
id,路由标识符,区别于其他 Route。
uri,路由指向的目的地 uri,即客户端请求最终被转发到的微服务。
order,用于多个 Route 之间的排序,数值越小排序越靠前,匹配优先级越高。
predicate,断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。
filter,过滤器用于修改请求和响应信息。
@NotEmpty
private String id = UUID. randomUUID() . tostring();
@NotEmpty
@Vaild
private List<PredicateDefinition> predicates = new ArrayList();
@Vaild
private List<FilterDefinition> filters = new ArrayList();
@NotNull
private URI uri;
private int order = 0;
上面的代码是对以上五个信息的解释
路由就是指当请求满足什么样的条件的时候转发到某个微服务上,在转发过程中还可以动一下手脚。
二、执行流程
执行流程大体如下:
1.Gateway Client向Gateway Server 发送请求
2.请求首先会被 HttpWebHandlerAdapter 进行提取组装成网关上下文
3.然后网关的上下文会传递到 DispatcherHandler,它负责将请求分发给 RoutePredicateHandlerMapping
4.RoutePredicateHandlerMapping 负责路由查找,并根据路由断言判断路由是否可用
5.如果过断言成功,由 FilteringWebHandler 创建过滤器链并调用
6.请求会一次经过 PreFilter–微服务–PostFilter 的方法,最终返回响应
HttpWebHandlerAdpter 是对请求信息进行分析,组装网关上下文,并将上下文向下传递
DispatcherHandler 是负责请求分发
RouterPredicateHandlerMapping 是路由断言处理映射器,它的作用是匹配路由信息,通过路由断言,判断路由是否可用,断言失败,返回;断言成功,往下进行
虚线左侧相当于到达服务器之前的流程,虚线右侧是到达服务器之后的流程,请求一旦到达过滤器中,就可以在过滤器中处理许多事情,处理完成会到达微服务(Proxied Service)
要记住以下几个步骤:首先经过请求传递到达网关,后是断言的判断,经过过滤器到达微服务,之后在经过过滤器返回