zoukankan      html  css  js  c++  java
  • Soul 学习笔记插件流程初步分析(十二)

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

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

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

    image-20210127224503300

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

    image-20210127231303557

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

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

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

    image-20210127225755070

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

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

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

  • 相关阅读:
    YXY-压测
    禅道使用
    抓https包
    数据库基本查询语句
    限制网速 制造测试条件
    测试中认识 sqlite
    Adb 命令
    jmeter 查看提取的参数
    jmeter传入字符时文本显示乱码
    nginx 访问springboot项目
  • 原文地址:https://www.cnblogs.com/fightingting/p/14385271.html
Copyright © 2011-2022 走看看