序
在前面的文章里,我们都是从案例上去分析,不管是 soul 的数据怎么传递,还是怎么让 soul 集成我们的项目。
从今天开始,我们将会从 soul-admin 模块去深入源码分析,看看具体的功能是怎么实现的,比如启动之后做了什么样的准备,加载的配置会怎么样处理等等
1. 了解 soul-admin 的功能
我们先结合前面运行的案例去思考,soul-admin 模块提供了什么样的功能。
- 提供可视化的操作界面
- 管理 soul 网关的各个插件和路由
- 提供权限管理和分配
对于可视化的操作界面我们已经很熟悉了,总共就两个一级菜单,分别是「插件管理」和「系统管理」。
前者是 soul 网关支持的插件,每个插件会有自己的「选择器」和「规则」。
后者也就是上面提到的针对管理员的权限管理和分配。
那么除此之外呢,是否就没有了呢?
当然不是,结合之前的案例,我们还知道 soul 网关会从 soul-admin 这个模块去同步数据,同时还需要保证数据的准实时性,毕竟如果在 soul-admin 的可视化界面修改了「选择器」和「规则」数据,soul 网关那边也得根据修改的结果做出相应的调整。
了解了 soul-admin 的功能之后呢,我们就可以针对性的去看各个功能是怎么实现的了。
2. soul-admin 的数据库设计
由于 soul-admin 提供了数据存储的功能,存储的是各个服务的路由啊配置等数据,所以会有数据库。
我们就先从数据库表结构开始分析。
设计详解:
- 一个插件对应多个选择器,一个选择器对应多个规则。
- 一个选择器对应多个匹配条件,一个规则对应多个匹配条件。
- 每个规则在对应插件下,不同的处理表现为 handle 字段,handle 字段就是一个 json 字符串。具体的可以在admin 使用过程中进行查看。
以上内容摘自官方文档。
可以看出,整体的表结构设计很简单,一共也就 5 张表。分别对应了「插件」「选择器」「规则」以及之前没怎么接触过的「匹配条件」。
总结
今天我们从 soul-admin 的功能开始讨论,结合之前的案例去分析 soul-admin 在 soul 网关中起到的作用。
然后从官网里找到数据库设计结构,下一篇文章我们继续针对这个数据库结构结合代码去分析 soul-admin 里面是怎么处理这些表结构的。