- 插件采用数据库设计,来存储插件,选择器,规则配置数据,以及对应关系。
- 数据库表UML类图:
- 设计详解:
-
- 一个插件对应多个选择器,一个选择器对应多个规则。
- 一个选择器对应多个匹配条件,一个规则对应多个匹配条件。
- 每个规则在对应插件下,不同的处理表现为handle字段,这个一个不同处理的json字符串。具体的可以在admin使用过程中进行查看。
说明:
- meta_data:对dubbo泛化调用使用,每条记录对应一个dubbo接口的方法,http协议不会保存,而springcloud协议,只会存储一条数据, path为 :/contextPath/**
- plugin:存储当前支持插件,我们对应配置的插件相关参数,就会更新这样表
- rule:插件管理中,我们配置的具体规则。实际在这里我们也可以看出Soul的三大核心:plugin,rule,selector
- rule_condition:rule表中配置的,对应的具体匹配规则
- selector:规则表
- selector_condition:规则条件表
实际上,上面这张图,就对应上述四个表中的
selector-选择器列表,选择器里面的配置对应-selector_condition
rule-选择器规则列表,规则列表中的配置对应-rule_condition