Soul 学习笔记插件流程初步分析(十二)

摘要:
springcloud和divide插件可以工作。现在让我们看看请求是如何转发的。从调用堆栈中,我们可以看到程序的入口类是SoulWebHandler。稍后,在AbstractSoulPlugin中,浏览pluginlist并逐个调用打开的插件。这种模式给出了请求的类型,并将请求的发送方和接收方解耦。如果跳过为真,将执行下一个插件。否则,将执行当前插件。当您使用DividePlugin时,调用DividePlugin类。实际执行是使用httpClient插件执行的,该插件在此处执行。我今天简单地运行了插件执行过程,整理了divide插件的一般执行顺序,明天将继续分析具体细节。

springcloud ,divide插件都能跑通了,现在就看下请求是如何转发的。

从调用栈可以看到,程序进来的入口类是 SoulWebHandler。

Soul 学习笔记插件流程初步分析(十二)第1张

后面在 AbstractSoulPlugin 中,遍历 plugin list,一个个去调用开启的插件。这就是传说中的责任链模式了。责任链模式是行为型设计模式的一种,为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。一般每个接收者包含对另一个接收者的引用,如果一个对象不能处理该请求,那么会将请求传递给下一个接收者。

image-20210127224503300

可以看到 chain 上面绑定了好几层。

image-20210127231303557

这里就是一个个去执行插件。

Soul 学习笔记插件流程初步分析(十二)第4张

这个 skip 方法,每个插件也是有自己的内部实现。如果 skip 为true,就去执行下一个插件,否则在当前插件执行。这里判断 DividePlugin 就是 rpcType 需要是 HTTP 的。

Soul 学习笔记插件流程初步分析(十二)第5张

走到divide插件时,调用的是 DividePlugin 类。可以看到,这里拿对应的映射地址时,是从缓存拿的。

image-20210127225755070

从这边也能看到,插件选择器等数据都是从 BaseDataCache 类获取的,之前分析数据同步时,数据都是放在这个类里面的,其中去匹配选择器和规则时,里面也使用了很多设计模式,整个代码流程看起来很流畅。

拿完链接后。真正执行是用的 httpClient 插件,也就是这里执行的。

Soul 学习笔记插件流程初步分析(十二)第7张

今天就简单跑了下插件的执行流程,理了下 divide 插件大概的执行顺序,具体的细节明天再继续分析。

免责声明:文章转载自《Soul 学习笔记插件流程初步分析(十二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Xamarin发布XobotOS源码,C# 实现的Android系统 操作系统 ITeye资讯Django基础(1)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

arcgispro 计算字段示例

使用两个或四个空格来定义每个逻辑级别。Python计算表达式字段将使用感叹号(。简单计算简单字符串示例一系列Python字符串函数支持使用字符串。字符串字段中的字符可以通过索引和拆分操作访问“”bcd“”Python还支持使用format()方法的字符串格式!)常用Python字符串操作简单数学示例Python提供了处理数字的工具。...

Debian忘记密码重置

我使用的系统是Debian8,但这种方法也适用于Debian7以上的系统。具体步骤是重新启动VPS。您可以使用“CTRL+ALT+DEL”按钮直接在面板或VNC上重新启动VPS,然后按图中的“e”按钮;在BIOS界面上,按“e”进入GRUB引导菜单,然后按“e”进入编辑;输入GRUB编辑红色框中的内容,并将“ro”替换为“rwinit=/bin/sh”;修改...

四、使用ADB命令清除缓存

1、 ADBShell应用程序查看目录结构:adbshells查看系统当前日期:adbselldate查看系统CPU使用情况:adbsHELcat/proc/cpuinfo查看系统内存使用情况:adbshellcat/proc/meminfo显示所有应用程序:adbshelpmlistpackages显示系统自带的应用程序:adshellpmlistpack...

Oracle 12c新特性(For DBA)

2: Oracle12cIn-MemoryOracle12cIn-Memory提供了一种独特的双格式体系结构,它可以使用传统的行格式和新的内存列格式同时在内存中存储表。与其他NOSQL分片结构相比,OracleSharding提供了优异的运行时性能和更简单的生命周期管理。OracleSharding使用GDS体系结构自动部署和管理分片和复制技术。GDS还提供...

sqlmap 安装使用

Id=1“”8)从配置文件加载攻击目标,并使用参数“-c”指定配置文件。Sqlmap将解析配置文件并根据配置文件的配置执行操作。sqlmap conf文件的安装目录中有一个名为sqlmap的文件,它是配置文件的模板。Id=1“--当前用户#列出数据库sqlmap.py u的所有用户”http://192.168.12.157:30336/#/login?...

推荐几种加快火狐浏览器速度的办法

键入browser.cache。内存容量,指定值65536。确认后,重新启动Firefox以获得更大的缓存。这对于减少数据传输非常有帮助,特别是如果您的月流量有限,并且它几乎可以使Firefox浏览器的性能翻倍。...