返回

01.gateway整体逻辑

gateway整体逻辑

gateway整体逻辑

1.流程图

image

2.几个关键的类

  • org.springframework.web.reactive.DispatcherHandler: 请求分发处理器;
  • Spring WebFlux 的访问入口;
  • 类似于spring mvc DispatcherServlet,可以类比spring mvc 接收到请求;
  • DispatcherHandler匹配 HandlerMapping此处会匹配到scg的RoutePredicateHandlerMapping
  • org.springframework.cloud.gateway.handler.RoutePredicateHandlerMapping:HandlerMapping的实现;

    • 通过RouteLocator匹配 Route: getHandlerInternal方法调用lookupRoute()方法,通过routeLocator获取所有配置的route,通过里面的Predicate配置来遍历判断找出符合的Route
    • getHandlerInternal中返回FilteringWebHandler
  • org.springframework.cloud.gateway.handler.FilteringWebHandler: WebHandler的实现;

    • FilteringWebHandler被RoutePredicateHandlerMapping返回后,在DispatcherHandler中被SimpleHandlerAdapter执行handle方法;
    • 责任链模式:获取Route的GatewayFilter数组,创建DefaultGatewayFilterChain的过滤链;链式调用GatewayFilter

3.项目结构

核心module为spring-cloud-gateway-server

  • actuate: 实现springboot actuator的端点,暴露route filter predicate等信息
  • config: 使用springboot的配置注解的各类配置类
  • discover:通过注册中心获取路由Route的核心功能配置类及实现类
  • event:实现ApplicationEvent的事件类,例如路由刷新事件RefreshRoutesEvent
  • filter: 包含特定路由的GatewayFilterFactory,GatewayFiler以及全局的GlobalFilter
  • handler: 包含匹配route的断言工厂AbstractRoutePredicateFactory的所有默认实现,以及核心类FilteringWebHandler及RoutePredicateHandlerMapping
  • route:路由的定义类,及路由定位类CachingRouteLocator的所有实现,及路由定义定位类CompositeRouteDefinitionLocator的所有实现,路由存储接口RouteDefinitionRepository及其所有实现
  • support:工具类;如HTTP协议处理,组件名处理,日期转换等
Built with Hugo
Theme Stack designed by Jimmy
本站访问量:   您是本站第 位访问者