Spring Cloud Alibaba入门实践(二十四)-了解下Gateway核心架构

上篇博客引入了Gateway并做了测试,可以发现,路由是Gateway最基础的东西。它主要定义了以下几种信息:

  • id:路由标识符,区别于其他Route。

  • uri:路由指向的目的地uri,即客户端请求最终被转发到的微服务。

  • order:用于多个Route之间的排序,数值越小排序越靠前,匹配优先级越高。

  • predicate:断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。

  • filter:过滤器用于修改请求和响应信息。

执行流程图如下:
Spring Cloud Alibaba入门实践(二十四)-了解下Gateway核心架构
执行流程说明:

  1. Gateway Client向Gateway Server发送请求

  2. 请求首先会被HttpWebHandlerAdapter进行提取组装成网关上下文

  3. 然后网关的上下文会传递到DispatcherHandler,它负责将请求分发给
    RoutePredicateHandlerMapping

  4. RoutePredicateHandlerMapping负责路由查找,并根据路由断言判断路由是否可用

  5. 如果断言成功,由FilteringWebHandler创建过滤器链并调用

  6. 请求会一次经过PreFilter–微服务–PostFilter的方法,最终返回响应

通过以上的流程分析,其实可以发现,spring cloud gateway的核心就是路由转发+过滤链调用