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

相关文章
|
4月前
|
缓存 Dubbo Java
什么是API网关
API网关是一种架构思想,用于统一接收外部请求并转发至后端服务,实现协议转换、路由、鉴权、限流、熔断降级等功能。通过网关,可简化客户端调用,提升系统安全性与可维护性。常见实现如Kong、Zuul、Spring Cloud Gateway等,广泛应用于微服务架构中,支持异步处理、全链路监控与多维度流量控制。
|
4月前
|
Dubbo JavaScript 前端开发
Soul网关接入与验证
本文介绍如何将服务提供者与消费者接入Soul网关,涵盖pom依赖、Controller注解(@SoulSpringMvcClient)、配置文件参数说明(如adminUrl、contextPath、full模式等),并支持HTTP与Dubbo双协议。通过zookeeper注册,结合soul-admin与soul-bootstrap启动,完成服务注册与网关路由验证,附完整代码与测试示例。
|
4月前
|
存储 API 数据库
Activiti框架拓展
Activiti表结构以ACT_开头,分五类:ACT_RE_*存流程定义等静态资源;ACT_RU_*存运行时实例、任务等数据;ACT_HI_*存历史记录;ACT_ID_*管理用户组信息;ACT_GE_*处理通用数据。各表协同支持流程引擎高效运作。
|
4月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev/test/pre/prod)高效发布与运维。涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支管理、一键发布及日志排查方案,结合Skywalking实现链路追踪,提升发布效率与问题定位能力。(238字)
|
4月前
|
存储 Java
超长String接收处理
Java中字符串变量最大长度可达Integer.MAX_VALUE,但字符串字面量受class文件格式限制,理论最大65535,实际仅支持65534。超长字面量编译报错,需通过StringBuilder分段处理,避免“常量字符串过长”问题。
|
4月前
|
Java 数据安全/隐私保护
脱敏工具
提供身份证、姓名、手机号脱敏的Java实现,通过正则替换隐藏敏感信息:身份证保留前后部分,中间用*代替;姓名仅显示首尾字符;手机号显示前3后4位,中间4位脱敏,保障数据安全。
|
4月前
|
自然语言处理 fastjson Java
FastJson:大面积故障规避案例
本文分享了一次因Kotlin语法误用导致FastJson反序列化全局异常的排查经历。在多语言混编工程中,`{}`被误赋值为Java对象字段,触发FastJson解析Kotlin类时将静态标记`kotlin_error`置为true且无法恢复,最终引发全量反序列化失败。问题隐蔽性强,影响范围大,历时两天定位。反思指出:多语言开发需谨慎、框架有局限、灰度发布至关重要,并强调Bug是成长的阶梯。
|
4月前
|
运维 安全 Devops
生产环境缺陷管理
git-poison基于go-git实现分布式bug追溯,解决多分支开发中bug漏修、漏发等问题。通过“投毒-解毒”机制,自动化卡点发布流程,降低协同成本,避免人为失误,已在大型团队落地应用,显著提升发布安全与效率。
|
4月前
|
存储 缓存 监控
EFC&CTO:缓存引发数据不一致问题排查与深度解析
EFC客户端更新缓存架构后,CTO测试出现data mismatch。经排查,因分布式缓存版本号回退,导致旧NULL数据被读入pagecache并刷入文件系统,破坏了NAS数据一致性。修复后10轮测试通过。
|
4月前
|
存储 缓存 安全
One Trick Per Day
初始化Map应避免默认容量导致扩容,推荐Guava的`newHashMapWithExpectedSize`;禁用Executors创建线程池,防止OOM,应手动通过`ThreadPoolExecutor`设置合理参数;`Arrays.asList`返回不可变列表,禁止修改操作;遍历Map使用`entrySet`提升性能;`SimpleDateFormat`非线程安全,建议用`ThreadLocal`或Java8时间类;并发修改记录需加锁,优先乐观锁,冲突高则用悲观锁。

热门文章

最新文章