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
- Soul源码阅读(一) 概览
- Soul源码阅读(二)代码初步运行
- Soul源码阅读(三)HTTP请求处理概览
- Soul网关源码阅读(四)Dubbo请求概览
- Soul网关源码阅读(五)请求类型探索
- Soul网关源码阅读(六)Sofa请求处理概览
- Soul网关源码阅读(七)限流插件初探
- Soul网关源码阅读(八)路由匹配初探
- Soul网关源码阅读(九)插件配置加载初探
- Soul网关源码阅读(十)自定义简单插件编写
- Soul网关源码阅读(十一)请求处理小结
- Soul网关源码阅读(十二)数据同步初探-Bootstrap端
- Soul网关源码阅读(十三)Websocket同步数据-Bootstrap端