第一阶段学习总结
一、主要插件的使用,以及对应代理的体验
soul 网关中所有插件的顶层接口 SoulPlugin,将功能插件化设计,可扩展性强,里面通用处理流程的封装在抽象的模板方法中,以及整个插件链的执行流程,相信大家看过后会有比较深刻的印象
从我们体验的插件顺序开始
- DividePlugin 、AlibabaDubboPlugin 、SofaPlugin、SpringCloudPlugin结构图
以上DividePlugin 、AlibabaDubboPlugin 、SofaPlugin、SpringCloudPlugin 四个插件均继承 AbstractSoulPlugin 根据插件链里面的对应插件的开启状态调用执行对应插件真正的 doExecute()方法
*相信看过具体插件的源码的都了解 以上四个插件中divide插件只是完成目标服务分发,即根据选择器和规则找到对应服务,再通过负载均衡找到对应要访问的服务。而真正发起调用目标服务的工作是由其他相应的插件完成,而dubbo与sofa的插件 对应的调用是通过对应的Proxy 发起的泛化调用 *
- 具体的发起调用的插件对应关系如下
DividePlugin -------> WebClientPlugin、
AlibabaDubboPlugin ---> AlibabaDubboProxyService#genericInvoker
SofaPlugin ---->SofaProxyService#genericInvoker
SpringCloudPlugin -------> WebClientPlugin、
泛化调用以sofaProxy 为例如下
http调用是通过WebClientPlugin发起的
- SoulWebHandler分析
SoulWebHandler 是请求处理的起点
初始化方式是通过SoulConfiguration自动装配网关所需的核心 bean 对象