初探Soul网关week03_06

194 阅读1分钟

前言

四个周的Soul源码学习时间只剩25%了,做事情只有入乎其内,才能体会到靡不有初,鲜克有终的道理。⛽️!

今天分析插件链的东西

插件

插件是 Soul 的soul。

Soul 使用了插件化设计思想,实现了插件的热插拔,且极易扩展。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。

图:DividePlugin的继承关系

图:AbstractSoulPlugin的核心方法,判断插件是否可用,获取 selector rule 的信息

如果插件可用,调用对应具体子类的 doExecute(exchange, chain, selectorData, rule) 图:可以看到divide插件只设置了upstream地址、url、timeout等相关信息

divide插件并没有真正发出请求,然后就到了下一个插件,这是怎么回事?

图:插件链中webclient插件在 divide 插件之后

所以是webclient插件真正发送了请求,这也算是插件链思想的体现吧

插件链