Soul数据库设计

简介: 本插件采用数据库设计,存储插件、选择器、规则及其关联关系。核心四表:plugin、selector、rule、condition,体现Soul三大核心:插件、规则、选择器。支持多层级匹配,适用于Dubbo、SpringCloud等协议,灵活配置路由与处理逻辑。(238字)

● 插件采用数据库设计,来存储插件,选择器,规则配置数据,以及对应关系。
● 数据库表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

相关文章
|
缓存 Ubuntu Linux
|
XML 机器学习/深度学习 人工智能
电子税务财务发票全生命周期API接口集合-自动开票-发票查验-发票识别-发票下载-开票信息
本文将介绍发票全生命周期API接口,包括:自动开票,发票识别,发票查验,发票下载,企业开票信息查询。
873 1
|
7月前
|
缓存 Dubbo Java
什么是API网关
API网关是一种架构思想,用于统一接收外部请求并转发至后端服务,实现协议转换、路由、鉴权、限流、熔断降级等功能。通过网关,可简化客户端调用,提升系统安全性与可维护性。常见实现如Kong、Zuul、Spring Cloud Gateway等,广泛应用于微服务架构中,支持异步处理、全链路监控与多维度流量控制。
|
开发者
2024 乘风者计划全新启航!快来加入吧!
 2021年,阿里云开发者社区焕新升级,重磅推出“乘风者计划”!诚邀四海技术博主入驻社区,泼墨云间,书写天地。入驻社区,即可享丰厚权益! 新的一年,乘风者计划重磅升级!
252408 81
|
安全 开发者 Windows
开发者论坛一周精粹(第五期):安全组规则让你的win主机更安全
近期4-14又曝光一个win安全漏洞,但是有些人无法使用linux怎么办,这样的问题 总会出现,那么我们就要利用手边的工具去做到安全
2853 0
|
7月前
|
存储 缓存 安全
One Trick Per Day
初始化Map应避免默认容量导致扩容,推荐Guava的`newHashMapWithExpectedSize`;禁用Executors创建线程池,防止OOM,应手动通过`ThreadPoolExecutor`设置合理参数;`Arrays.asList`返回不可变列表,禁止修改操作;遍历Map使用`entrySet`提升性能;`SimpleDateFormat`非线程安全,建议用`ThreadLocal`或Java8时间类;并发修改记录需加锁,优先乐观锁,冲突高则用悲观锁。
|
7月前
|
Java 测试技术 API
从Google线上故障,谈灰度发布的重要性
2025年6月12日,Google Cloud因未灰度发布的新配置引发空指针异常,导致Gmail、YouTube等服务中断超7小时。故障暴露了缺乏配置灰度与错误处理机制的风险。本文结合Nacos等配置中心的IP/标签灰度方案,探讨如何通过渐进式发布保障系统稳定性,避免全局故障。
|
7月前
|
运维 安全 Devops
生产环境缺陷管理
git-poison基于go-git实现分布式bug追溯,解决多分支开发中bug漏修、漏发等问题。通过“投毒-解毒”机制,自动化卡点发布流程,降低协同成本,避免人为失误,已在大型团队落地应用,显著提升发布安全与效率。
|
7月前
|
消息中间件 监控 Java
RocketMQ:底层Netty频繁OS OOM
本文记录了一例Java应用因多ClassLoader加载多个Netty的PooledByteBufAllocator导致堆外内存超限,引发OS OOM的排查过程。尽管MaxDirectMemorySize设为1G,但多个中间件独立占用堆外内存,总量远超限制。通过NMT、Arthas等工具定位到RocketMQ客户端为主要占用者。最终建议短期调小堆内存以腾出空间,并推动中间件优化。
|
7月前
|
自然语言处理 fastjson Java
FastJson:大面积故障规避案例
本文分享了一次因Kotlin语法误用导致FastJson反序列化全局异常的排查经历。在多语言混编工程中,`{}`被误赋值为Java对象字段,触发FastJson解析Kotlin类时将静态标记`kotlin_error`置为true且无法恢复,最终引发全量反序列化失败。问题隐蔽性强,影响范围大,历时两天定位。反思指出:多语言开发需谨慎、框架有局限、灰度发布至关重要,并强调Bug是成长的阶梯。