前言
四个周的Soul源码学习时间只剩25%了,做事情只有入乎其内,才能体会到靡不有初,鲜克有终的道理。⛽️!
今天分析插件链的东西
插件
插件是 Soul 的soul。
Soul 使用了插件化设计思想,实现了插件的热插拔,且极易扩展。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。
图:DividePlugin的继承关系
图:AbstractSoulPlugin的核心方法,判断插件是否
可用,获取 selector rule 的信息
如果插件可用,调用对应具体子类的 doExecute(exchange, chain, selectorData, rule)
图:可以看到divide插件只设置了upstream地址、url、timeout等相关信息
divide插件并没有真正发出请求,然后就到了下一个插件,这是怎么回事?
图:插件链中webclient插件在 divide 插件之后
所以是webclient插件真正发送了请求,这也算是插件链思想的体现吧