SpringCloud Gateway详解( 二 )

  • NettyRoutingFilter:执行服务
  • NettyWriteResponseFilter:回写响应
  • 先看LoadBalancerClientFilter,核心源码如下:
    SpringCloud Gateway详解

    文章插图
     
    • 1处,如果配置的目标url不是lb开头的,则忽略 。即对lb://格式的url进行负载均衡处理
    • 2处,根据exchange选择对应的Service,这里实现了负载均衡逻辑,具体自行阅读源码
    • 3处,构建真实的Service请求地址
    • 4处,将请求设置到exchange的属性中
    NettyRoutingFilter在LoadBalancerClientFilter之后,用于执行服务 。
    SpringCloud Gateway详解

    文章插图
     
    • 1处,从exchange中获取服务请求
    • 2处,构建请求参数,包括method,url和chunkedTransfer(代码略)
    • 3处,通过httpClient发送请求调用
    • 4处,将响应和连接信息设置到了exchange属性中
    最后由NettyWriteResponseFilter来处理响应 。
    SpringCloud Gateway详解

    文章插图
     
    • 1处,首先注意到,这个Filter是个post过滤器,即是来处理响应的
    • 2处,从exchange中获取Connection
    • 3处,从连接获取服务响应
    • 4处,将服务响应写入到网关响应中
    参考资料
    • SpringCloud Gateway官方文档
    • SpringCloud Gateway 源码




    推荐阅读