Apache-shenYu源码阅读04-表结构梳理

191 阅读3分钟

Soul 表结构梳理 主要介绍一次调用请求涉及到的表

整体表结构如下所示

请求涉及表结构梳理

plugin 表

字段含义
id主键ID
name插件名称
config插件配置 json存储 在divide插件中没有数据存储,在dubbo插件中需配置注册中心地址,其它插件还需追踪
role插件角色 0系统插件 1自定义插件
enabled是否启用 1启用 0未启用

plugin_handle 表

字段含义
id主键ID
plugin_id所属插件ID 多对一关系
field字段
label描述
data_type数据类型 1数字 2字符串 不太理解
type类型 1选择器 2规则 3插件 不太理解
sort排序
ext_obj其它数据 json存储

感觉这个表没啥在处理流程里没啥作用,就是提供一个展示作用??? 后续跟进一下

selector 表

字段含义
id主键ID
plugin_id所属插件ID 多对一关系
name名称
match_mode匹配模式 0 代表or 1代表 and,在此处代表满足条件
type类型 取值 1代表full 指代代理整个 0代表custom 猜测代理条件下的
sort执行顺序 猜测当有多个选择器满足条件,有限执行sort值高的
handle存储json信息 在divide插件中存储负载均衡的机器节点,后续插件下对应选择器的handle存储持续跟踪
enabled是否启用 1启用 0未启用
loged是否记录日志 1记录 0未记录
continued是否记录后继选择器 1继续 0不继续(暂不明确具体含义)

handle字段存储格式展示

[
    {
        //主机
        "upstreamHost": "localhost",
        //协议
        "protocol": "http://",
        //地址
        "upstreamUrl": "127.0.0.1:8188",
        //权重
        "weight": 50,
        //存活状态?有点疑问 后续跟踪
        "status": true,
        //时间戳 有点疑问 后续跟踪
        "timestamp": "0",
        //预热???有点疑问 后续跟踪
        "warmup": "0"
    }
]

selector_condition 表

字段含义
id主键ID
selector_id选择器ID 多对一
param_type参数类型 目前提供了post、uri、query、host、ip、header类型 下文会详细介绍
operator条件匹配的表达式 有match、=、regEx、like
param_name有些类型需要填写post、uri、query、header
param_value参数值

rule 表

字段含义
id主键ID
selector_id选择器ID 多对一关系
match_mode匹配模式 0 代表or 1代表 and,在此处代表满足条件
name名称
type类型 取值 1代表full 指代代理整个 0代表custom 猜测代理条件下的
sort执行顺序 猜测当有多个选择器满足条件,有限执行sort值高的
handle存储json信息 在divide插件中指代负载策略及相关重试次数 具体json结构如下图所示
enabled是否启用 1启用 0未启用
loged是否记录日志 1记录 0未记录
handle字段存储格式展示
{
    //下面四个字段 在divide页面未提供配置窗口,根据字面意思猜测如下
    //请求阈值数?有点疑问 后续跟踪
    "requestVolumeThreshold": "0",
    //错误百分比?有点疑问 后续跟踪
    "errorThresholdPercentage": "0",
    //最大并发量?有点疑问 后续跟踪
    "maxConcurrentRequests": "0",
    //睡眠窗口时长?以毫秒为单位 有点疑问 后续跟踪
    "sleepWindowInMilliseconds": "0",
    //负载策略有hash、random、roundRobin三个策略可选  目前还不知道其具体含义 后续跟踪
    "loadBalance": "hash",
    //超时时间?
    "timeout": 3000,
    //重试次数
    "retry": "3"
}

rule_condition 表

字段含义
id主键ID
rule_id规则ID 多对一
param_type参数类型 目前提供了post、uri、query、host、ip、header类型 下文会详细介绍
operator条件匹配的表达式 有match、=、regEx、like
param_name有些类型需要填写post、uri、query、header
param_value参数值

关于handle字段的使用 详情见官方文档:dromara.org/zh-cn/docs/…