Soul网关源码解析(十一)请求处理小结


简介

经过前面文章的探索,处理流程大部分了解了,此篇文件就来做一个Soul网关处理流程小结

总结

Soul网关的处理流程图大致如下:

处理流程如上图,大致可以分为两部分:

  • 1.插件初始化和配置初始化:插件链的初始化和相关路由配置的初始化
  • 2.请求处理流程:一个请求大致如何处理的

插件初始化和配置初始化

在第九篇文章: Soul网关源码阅读(九)插件配置加载初探 ,我们分析了相关的细节

插件的初始化是使用Spring的自动配置加载机制进行实现了,结合使用插件都需要引入哪些start的依赖

插件数据、选择器数据、规则数据的初始化,都是从Websocket(或者同步通信模块)那边过来的,接收到数据以后,进行配置加载到本地

请求处理流程

在上图中,可以看到我们将plugin进行大致的分类:

  • 前置处理:
  • GlobalPlugin:设置请求的类型;HTTP真实后端路径;Rpc的metadata;它的作用还是不能忽视的,在插件链中比较重要

  • 扩展:进行黑名单、认证、限流、降级、熔断等等的扩展操作;扩展中分有全局和特定规则的;特定规则的需要进行规则匹配

  • 路由匹配:

  • DividePlugin:HTTP路由匹配;负载均衡;修改路径为真实的后端服务器
  • BodyParamPlugin:Rpc路由匹配;将请求参数放入;globalPlugin放入的metadata已包含路径信息;负载均衡相应的rpc自带

  • 请求发送,拿到响应放入exchange:分有HTTP的、websocket的、rpc的

  • 响应返回:分为HTTP响应返回和RPC响应返回;这里返回调用的其实都是通过获取exchange的response后调用函数发送给客户端

还进行其他的探索,比如请求类型的来源之类的

当然,这部分其他细节还是挺多了,后面可能有疑问就会继续探索下,后面的工作想把另外一块核心:路由数据配置和同步给探索了

Soul网关源码分析文章列表

Github

掘金