【来源:晋城市人民政府_部门动态】8月27日上午,市数据局邀请华中科技大学电子信息与通信学院副教授、博导杨鹏,围绕“人工智能大模型基本概念与创新应用”...
2025-08-29 0
项目地址:https://github.com/makemyownlife/magic-admin
从职业生涯伊始,我一直是微服务架构的坚定拥趸,这很大程度上源于长期深耕互联网行业,习惯了高并发、分布式架构下的开发模式。
然而,去年在优化某航空公司核心用户中心系统时,我的技术认知受到了不小的冲击。
因为航空公司用户中心是一个典型的单体应用——尽管业务量不小,但稳定的业务模型和有限的扩展需求,使得单体架构反而比微服务更高效、更经济。
事实上,单体应用在 IT 领域始终占据着不可替代的生态位。甚至可以说,在大多数业务场景下,单体架构不仅完全够用,甚至可能是更优解。
它的价值主要体现在:开发效率高、运维复杂度低,尤其适合业务边界清晰、迭代节奏可控的中小型系统。
因此,我想自己写一个单体开发框架,但考虑到从零开始,会花费较长的时间,最终决定在成熟的单体开发框架上定制开发。
在知乎、Github 上搜索【快速开发框架】 ,很多的话题都绕不开若依 RuoYi 。开源世界 RuoYi 单体框架有三个不同的项目,分别是:ruoyi-vue 、ruoyi-vue-plus 、ruoyi-vue-pro 。
这三个项目源码,我都仔细研读过了,功能对比细节如下表 :
评估维度 RuoYi-Vue RuoYi-Vue-Plus RuoYi-Vue-Pro 核心优势 极简开箱即用 多租户/功能增强 全生态功能预制 二次开发 ⭐⭐⭐⭐⭐(源码简洁) ⭐⭐⭐☆(需理解模块化) ⭐⭐(需深度裁剪) 成本效益 人力/时间成本最低 中等投入高回报 (中等偏上)需评估功能利用率
有兴趣的同学可以参看对比文章 ,https://mp.weixin.qq.com/s/J_FUQHB3Ji35Uk1e40yHWg
最终,我选择基于 RuoYi-Vue-Pro 进行定制开发 ,原因很简单:基础功能丰富,且 UI 界面也符合我的口味。
项目的名称:magic-admin , 保留了 RuoYi-Vue-Pro 的基础功能 ,同时在客户端管理、代码组织结构、 多租户管理这三个层面做了定制。
后端单体开发平台基于开源项目 ruoyi-vue-pro 重构 。
模块设计图如下:
1、基础模块
功能 描述 用户管理 用户是系统操作者,该功能主要完成系统用户配置 角色管理 角色菜单权限分配、设置角色按机构进行数据范围权限划分 菜单管理 配置系统菜单、操作权限、按钮权限标识等,本地缓存提供性能 部门管理 配置系统组织机构(公司、部门、小组),树结构展现支持数据权限 岗位管理 配置系统用户所属担任职务 客户端管理 配置系统客户端信息 字典管理 对系统中经常使用的一些较为固定的数据进行维护 操作日志 系统正常操作日志记录和查询 登录日志 系统登录日志记录查询,包含登录异常 通知公告 系统通知公告信息发布维护 地区管理 展示省份、城市、区镇等城市信息,支持 IP 对应城市
2、基础设施
描述 代码生成 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 系统接口 基于 Swagger 自动生成相关的 RESTful API 接口文档 表单构建 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 配置管理 对系统动态配置常用参数,支持 SpringBoot 加载 定时任务 在线(添加、修改、删除)任务调度包含执行结果日志 文件服务 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 消息队列 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 服务保障 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景
界面截图见下图:
1、删除多租户功能
多租户功能是指一套系统可以同时服务多个不同的租户(客户或组织),并且每个租户的数据和配置相互隔离,彼此不可见。
方式 说明 优缺点 独立数据库 每个租户使用单独的数据库 ✅ 隔离性好,安全性高
❌ 运维成本高 共享数据库,独立Schema 同一数据库,不同租户使用不同表结构(Schema) ✅ 资源利用率高
❌ 需数据库支持 共享数据库,共享表(租户ID字段) 所有租户数据存同一表,用 tenant_id 区分 ✅ 成本最低
❌ 需严格代码控制
ruoyi-vue-pro 是采用了第三种方式来实现的,每张表需要添加 tenant_id 字段 ,我认为不同的业务形态对于多租户功能的需求是不一样,采用一刀切的使用 tenant_id 区分可能会导致系统的复杂度更高 , 出现 BUG 的风险系数高,所以我删除了多租户功能,保持和 ruoyi-vue (若依版本) 一致。
2、客户端管理
后台系统不仅仅可以支持后台登录,也应该可以支持 APP 或者 小程序等其他终端登录。
不同终端在发送请求时,都需要再请求头中传输客户端 Key , 不同终端可配置独立的 Token 有效期、权限策略。
3、Token 管理
下图是 ruoyi-vue-pro 的 Token 记录表 即:数据库是 Token 的存储容器 。
虽然每次查询 accessToken 都会先从 Redis 先查询一次 ,但假如在同一时刻有大量 Token 失效,那么数据库就会成为瓶颈,可能会有缓存雪崩的风险。
而且 Token 的生命周期通过数据库管理,需要考虑很多的细节,我不确定从功能角度形成闭环。
我的做法是所有的 Token 都通过 Redis 来存储,同时每个客户端都有独立的 namespace ,见下图:
4、包层级结构
相比 ruoyi-vue-pro , 我更加倾向于相对简洁的包层级结构。
如图,包结构分为 controller 、domain、mapper 、 service 四个核心包,同时 domain 根据领域分为五个子包:
同时,我也修改了代码生成逻辑,生成的目录也完全按照上面的标准。
本地电脑上项目运行环境依赖组件以及版本信息如下:
打开 Github 项目地址, 复制对应的 SSH 或 HTTP 克隆地址。
打开 IntelliJ IDEA,菜单栏顶部找到 Git -> Clone 选项。
点击 Clone 后,URL 文本框填写项目的 HTTP 或 SSH 地址,比如 HTTP 的地址:git@github.com:makemyownlife/magic-admin.git,Directory 填写项目存储在本地的目录地址。
等待克隆及 Maven 初始化即可。
拉下来后,可在项目根目录执行 mvn clean install 测试是否具备运行环境。
项目当前支持 MySQL 5.7 + ,首先需要创建一个名字为 magic-admin 数据库 。
然后分别导入 magic_admin.sql ,quartz.sql 这两个文件。
项目依赖 JDK 1.8 + ,因此理论上兼容性非常强。
配置文件分为 生产 prod 、本地开发 local 两个环境文件,在本地运行,需要修改本地环境文件。
1、修改 MySQL 数据库信息:
2、修改 Redis 数据库信息:
个人本地环境,一般笔者并不会开启密码,建议生产环境开启。
启动 MagicAdminApplication.java 即可。
前端 UI 需要在本机安装 NodeJs ,可参考:
https://www.runoob.com/nodejs/nodejs-install-setup.html
https://blog.csdn.net/weixin_45565886/article/details/141828707
打开 Githu 项目地址:https://github.com/makemyownlife/magic-admin-ui 复制对应的 SSH 或 HTTP 克隆地址。
通过 git clone 命令克隆到本地自定义目录,然后执行如下命令:
# 安装 pnpm,提升依赖的安装速度npm config set registry https://registry.npmjs.orgnpm install -g pnpm# 安装依赖pnpm install# 启动服务npm run dev
启动完成后,浏览器会自动打开 http://localhost:80 ,可以看到前端界面。
默认账号密码:admin/magic123456
框架设计的原则还是要简洁和易于维护,未来会在如下两个层面持续优化:
1、客户端管理优化(加密签名增强)
2、添加流程引擎模块(企业级工作流支持)
相关文章
【来源:晋城市人民政府_部门动态】8月27日上午,市数据局邀请华中科技大学电子信息与通信学院副教授、博导杨鹏,围绕“人工智能大模型基本概念与创新应用”...
2025-08-29 0
来源:上海证券报8月28日,中芯国际发布公告称,公司上半年营收323.48亿元,同比增长23.1%;归母净利润23.01亿元,同比增长39.8%。同日...
2025-08-29 0
看到一条让人揪心的新闻:北京一个14岁的初中女生,身高1米57,体重却只有70斤。为了暑假能穿上好看的制服裙,她疯狂节食减肥,结果现在走路都喘气,连2...
2025-08-29 0
黄山日报2025-08-28 18:19:318月28日上午,位于徽州区城北工业园的黄山永新新材料·绿色软包装智能制造示范工厂项目和徽州循环经济园的黄...
2025-08-29 0
您好:这款游戏可以开挂,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到-人的牌一样。所以很多小伙伴就怀疑这...
2025-08-29 0
8月22日至24日,第33届广州博览会在中国进出口商品交易会展馆盛大举行。本届广博会以“双向赋能促循环,新质发明创未来”为主题,设新质生产力、“百千万...
2025-08-29 0
作者:陆雨中国又有两家企业选择在海外解决市场竞争下的知识产权纠纷。2025年8月27日,中国清洁智能家居产品两大领头羊——科沃斯和石头科技,在美国正式...
2025-08-29 0
您好:这款游戏可以开挂,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到-人的牌一样。所以很多小伙伴就怀疑这...
2025-08-29 0
发表评论