一、介绍
使用Ocelot作为网关,在遇到配置的时候遇到一些麻烦。最初是使用ocelot.json,后来将配置写到consul keyValue中,但随着项目越来越多,发现配置越发不好管理,于是就想到做一个可视化的配置中心。搜索其他人的解决方案,大多数是ocelot读取数据库配置,但实现成本较高,且灵活度不够。于是我想,如果将配置写到数据库中,然后生成ocelot json,调用consul的编辑keyvalue的接口,不就可以把配置同步到ocelot中了吗?说干就干。目前项目完成度已经基本达到可用,还存在少量文案和配置模型参数未对应上的问题,还在持续修复中。
二、项目地址
https://gitee.com/zhipeng2zaizai/ocelot-admin
三、所用技术或中间件
- Furion框架
- SqlSugar
- ArcoDesignVue
- 使用 SignalR | .NET 的实时 ASP.NET (microsoft.com)
- Ocelot
- Consul Documentation | Consul | HashiCorp Developer
四、代码结构
ocelot-admin
├─ocelot-admin-api
│ ├─net6 基于net6的ocelot管理后台接口
│ ├─Ocelot.Admin.Api.Application 接口、服务层
│ ├─Ocelot.Admin.Api.Core 公共的数据层
│ ├─Ocelot.Admin.Api.Web.Core 中间件层
│ ├─Ocelot.Admin.Api.Web.Entry 默认启动项
├─ocelot-admin-master 基于net6的ocelot服务
│
├─ocelot-admin-web 基于arco design vue的管理后台页面
│
└─documents
│ ├─mssql.sql sqlserver数据库初始化脚本
五、系统架构
六、系统介绍
6.1 Consul管理
6.1.1 Consul备份查询
每次同步配置后,会备份上一次ocelot配置,可以在此进行配置回滚。
6.1.2 Consul预览
可以在这儿预览线上配置
6.2 全局配置
这里配置ocelot的全局配置内容
6.3 项目
6.3.1 查询项目
对路由配置进行分组,以项目为单位进行管理
6.3.2 项目同步
对即将同步的路由进行预览,初步判断是否有错误。
6.3.3 新增或编辑路由
6.3.4 同步路由
通过调用consul相关接口,同步路由至指定的consul keyvalue配置中。