Spring Cloud / Alibaba 微服务架构 | 2021年11月更文挑战(20)

88 阅读2分钟

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

上篇文章给大家介绍了第二代微服务网关组件SpringCloud Gateway,这篇文章我们将介绍一下SpringCloud Gateway 的工作模型。

SpringCloud Gateway 的工作模型

理解SpringCloud Gateway 的工作模型有助于我们理解微服务的整体运行过程,这非常关键也很重要。

image.png

如上图所示,这是SpringCloud Gateway官网的工作流程图。

Gateway的核心逻辑是路由转发和执行过滤器链。从Gateway Client请求进入,它其实就是我们的客户端,请求进入到我们的SpringCloud Gateway后,最终到达Proxied Service 目标服务,一共经历了四个阶段。

第一阶段

Gateway Client发送请求发送到SpringCloud Gateway网关,这些请求最先由分发器去匹配响应的HandlerMapping。

注:这里的HandlerMapping不是SpringMVC中的HandlerMapping。我们可以简单理解为这里的Gateway HandlerMapping它就是网关接收到客户端请求后第一个分析匹配的组件,匹配的就是我们的路由配置,只有匹配了我们的路由配置之后才会往下走。

第二阶段

匹配之后会进入到Gateway Web Handler,它是请求和处理器之间的映射,也叫做网关处理程序。Web Handler最重要的功能就是读取路由上配置的所有过滤器,去构造过滤器链,将请求往过滤器链上去传递

第三阶段

Gateway预先定义了过滤器以及我们自定义的过滤器,由此组成了过滤器链条,客户端请求将会按照优先级依次执行各个过滤器,当通过了所有过滤器之后,最终到达第四步。

过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前或之后执行业务逻辑在发送代理请求之前的过滤器可以做参数和权限的校验、协议转换等,而在发送代理请求之后的过滤器可以做响应内容和响应头的修改等,二者都可以做流量监控、日志输出。

第四阶段

Gateway将客户端请求转发到路由配置的微服务。