SpringCloud-Gateway源码笔记整理

网关的执行流程

  1. HttpWebHandlerAdapter: 构建组装网关请求的上下文。
  2. DispatcherHandler:所有请求的分处理器,负责分请求到对应的处理器。
  3. RoutePredicateHandlerMapping:路由断言处理器,用于路由的查找,以及找到路由后返回对应的WebHandler,

    DispatcherHandler会依次遍历HandlerMapping集合进行处理
  4. FilteringWebHandler:创建过滤器链,使用Filter链表处理请求。

    RoutePredicateHandlerMapping找到路由后返回对应的FilteringWebHandler后对请求进行处理。

    FilteringWebHandler 负责组装Filter链表并调用Filter处理请求。

DispatcherHandler的handler执行顺序

  1. 校验 handlerMapping
  2. 遍历 Mapping 获取 Mapping 对应的 handler(此处会找到gateway对应的 RoutePredicateHandlerMapping),

    并通过 RoutePredicateHandlerMapping 获取handler(FilteringWebHandler)。
  3. 通过 handler 对应的 HandlerAdapter 对 handler 进行调用(Gateway使用 SimpleHandlerAdapter),

    即 FilteringWebHandler 于 SimpleHandlerAdapter 对应。

RoutePredicateHandlerMapping 执行分析

  1. RoutePredicateHandlerMapping 的执行顺序是先通过路由定位器获取全部路由。
  2. 然后通过路由断言过滤掉不匹配的路由信息,找到路由信息后将路由信息设置到上下文中。
  3. 最后返回 Gateway 固定的 webHandler,即 FilteringWebHandler。

FilteringWebHandler 源码分析

  1. FilteringWebHandler 的执行顺序先构建一个包含全局过滤器的集合。获取上下文中的路由信息,

    然后将路由里的过滤器添加到集合中,对过滤器集合进行排序。
  2. 通过过滤器集合组装 Filter 链并调用 Gateway 默认的Filter链,最后通过过滤器来处理请求并转发到代理服务中。
  3. 通过 new DefaultGatewayFilterChain(combined).filter(exchange) 创建Gateway,默认过滤器链。

相关推荐

  1. SpringCloud-Gateway笔记整理

    2024-03-22 11:42:02       22 阅读
  2. SpringCloud Stream笔记整理

    2024-03-22 11:42:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 11:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 11:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 11:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 11:42:02       18 阅读

热门阅读

  1. Gateway路由谓词(断言)功能

    2024-03-22 11:42:02       17 阅读
  2. 蓝桥杯 / 卡牌 /c\c++

    2024-03-22 11:42:02       20 阅读
  3. Pytorch 中的forward 函数内部原理

    2024-03-22 11:42:02       15 阅读
  4. 全志R128 SDK HAL 模块开发指南——CCU

    2024-03-22 11:42:02       15 阅读
  5. Python爬虫基础知识

    2024-03-22 11:42:02       19 阅读
  6. idea快捷鍵

    2024-03-22 11:42:02       19 阅读
  7. vue3中ref详解

    2024-03-22 11:42:02       14 阅读
  8. pyqt5与selenium混合使用心得

    2024-03-22 11:42:02       17 阅读