RuoYi-Vue-Plus

RuoYi-Vue-Plus

分布式集群与多租户场景的全面升级框架

RuoYi-Vue-Plus是一个开源框架,基于Spring Boot构建,针对分布式集群和多租户环境优化。框架集成了权限管理、数据权限控制、多数据源支持、缓存机制和分布式事务处理等核心功能。采用插件化架构设计,便于功能扩展。支持Docker容器化部署,简化运维流程。技术栈包括Vue3、Sa-Token和Mybatis-Plus等现代化工具,有效提升开发效率和系统性能表现。

RuoYi-Vue-Plus分布式系统多租户开源框架Spring BootGithub开源项目
<img src="https://yellow-cdn.veclightyear.com/835a84d5/84b3a30e-d6c4-434e-a132-38cc683a5bbe.png" width="50%" height="50%"> <div style="height: 10px; clear: both;"></div>

平台简介

码云Gitee GitHub 许可证 使用IntelliJ IDEA开发维护 <br> RuoYi-Vue-Plus Spring Boot JDK-17 JDK-21

RuoYi-Vue-Plus 是对 RuoYi-Vue 进行全面重写,针对"分布式集群与多租户"场景进行全方位升级(不兼容原框架)

项目代码和文档均开源免费可商用,遵循开源协议。在项目中保留开源协议文件即可<br> 活到老写到老,为兴趣而开源,为学习而开源,为让大家真正能学到技术而开源

系统演示:传送门

前端项目地址:plus-ui

文档地址:plus-doc

赞助商

MaxKey 业界领先单点登录产品 - https://gitee.com/dromara/MaxKey <br> CCFlow 驰聘低代码-流程-表单 - https://gitee.com/opencc/RuoYi-JFlow <br> 数舵科技 软件定制开发APP小程序等 - http://www.shuduokeji.com/ <br> 引迈信息 软件开发平台 - https://www.jnpfsoft.com/index.html?from=plus-doc <br> 如何成为赞助商 加群联系作者详谈

本框架与RuoYi的功能差异

功能本框架RuoYi
前端项目采用 Vue3 + TS + ElementPlus 重写基于Vue2/Vue3 + JS
后端项目结构采用插件化 + 扩展包形式,结构解耦,易于扩展模块相互注入,耦合严重,难以扩展
后端代码风格严格遵守Alibaba规范与项目统一配置的代码格式化代码书写与常规结构不同,阅读障碍大
Web容器采用 Undertow,基于 XNIO 的高性能容器采用 Tomcat
权限认证采用 Sa-Token、Jwt,静态使用,功能齐全,低耦合,高扩展Spring Security,配置繁琐,扩展性极差
权限注解采用 Sa-Token,支持注解:登录校验、角色校验、权限校验、二级认证校验、HttpBasic校验、忽略校验<br/>角色与权限校验支持多种条件,如 AND OR权限 OR 角色 等复杂表达式只支持是否存在匹配
三方鉴权采用 JustAuth 第三方登录组件,支持微信、钉钉等数十种三方认证
关系数据库支持原生支持 MySQL、Oracle、PostgreSQL、SQLServer<br/>可同时使用异构切换(支持其他 mybatis-plus 支持的所有数据库,只需要增加jdbc依赖即可使用,达梦金仓等均有成功案例)支持 Mysql、Oracle,不支持同时使用、不支持异构切换
缓存数据库支持 Redis 5-7,支持大部分新功能特性,如分布式限流、分布式队列Redis 简单 get set 支持
Redis客户端采用 Redisson,Redis官方推荐,基于Netty的客户端工具<br/>支持Redis 90%以上的命令,底层优化规避很多不正确的用法,例如: keys被转换为scan<br/>支持单机、哨兵、单主集群、多主集群等模式Lettuce + RedisTemplate,支持模式少,工具使用繁琐<br/>连接池采用 common-pool,Bug多,经常性出问题
缓存注解采用 Spring-Cache 注解,对其扩展了实现,支持了更多功能<br/>例如 过期时间、最大空闲时间、组最大长度等,只需一个注解即可完成数据自动缓存需手动编写Redis代码逻辑
ORM框架采用 Mybatis-Plus,基于对象几乎不用写SQL全java操作,功能强大插件众多<br/>例如多租户插件、分页插件、乐观锁插件等等采用 Mybatis,基于XML需要手写SQL
SQL监控采用 p6spy,可输出完整SQL与执行时间监控log输出,需手动拼接sql与参数,无法快速查看调试问题
数据分页采用 Mybatis-Plus 分页插件<br/>框架对其进行了扩展,对象化分页对象,支持多种方式传参,支持前端多排序、复杂排序采用 PageHelper,仅支持单查询分页,参数只能从param传,只能单排序,功能扩展性差,体验不好
数据权限采用 Mybatis-Plus 插件,自行分析拼接SQL,无感式过滤<br/>只需为Mapper设置好注解条件,支持多种自定义,不限于部门角色采用 注解+aop 实现,基于部门角色,生成的sql兼容性差,不支持其他业务扩展<br/>生成sql后需手动拼接到具体业务sql上,对于多个Mapper查询不起作用
数据脱敏采用 注解 + jackson,序列化期间脱敏,支持不同模块不同的脱敏条件<br/>支持多种策略,如身份证、手机号、地址、邮箱、银行卡等,可自行扩展
数据加解密采用 注解 + mybatis 拦截器,对存取数据期间自动加解密<br/>支持多种策略,如BASE64、AES、RSA、SM2、SM4等
接口传输加密采用 动态 AES + RSA 加密请求 body,每一次请求秘钥都不同,大幅度降低可破解性
数据翻译采用 注解 + jackson,序列化期间动态修改数据,数据进行翻译<br/>支持多种模式: 映射翻译 直接翻译 其他扩展条件翻译,接口化两步即可完成自定义扩展,内置多种翻译实现
多数据源框架采用 dynamic-datasource,支持市面大部分数据库<br/>通过yml配置即可动态管理异构不同种类的数据库,也可通过前端页面添加数据源<br/>支持spel表达式从请求头参数等条件切换数据源基于 druid 手动编写代码配置数据源,配置繁琐,支持性差
多数据源事务采用 dynamic-datasource,支持多数据源不同种类的数据库事务回滚不支持
数据库连接池采用 HikariCP,Spring官方内置连接池,配置简单,以性能与稳定性闻名天下采用 druid,bug众多,社区维护差,活跃度低,配置众多繁琐,性能一般
数据库主键采用 雪花ID,基于时间戳的、有序增长、唯一ID,再也不用为分库分表、数据合并主键冲突重复而发愁采用 数据库自增ID,支持数据量有限,不支持多数据源主键唯一
WebSocket协议基于 Spring 封装的 WebSocket 协议,扩展了Token鉴权与分布式会话同步,不再只是基于单机的废物
序列化采用 Jackson,Spring官方内置序列化,靠谱!!!采用 fastjson,bugjson 远近闻名
分布式幂等参考美团GTIS防重系统简化实现(细节可看文档)手动编写注解基于aop实现
分布式锁采用 Lock4j,底层基于 Redisson
分布式任务调度采用 SnailJob,天生支持分布式,统一的管理中心,支持多种数据库,支持分片重试DAG任务流等采用 Quartz,基于数据库锁性能差,集群需要做很多配置与改造
文件存储采用 Minio 分布式文件存储,天生支持多机、多硬盘、多分片、多副本存储<br/>支持权限管理,安全可靠,文件可加密存储采用本机文件存储,文件裸露易丢失泄漏,不支持集群,存在单点故障
云存储采用 AWS S3 协议客户端,支持七牛、阿里、腾讯等所有支持 S3 协议的厂商不支持
短信采用 sms4j 短信融合包,支持数十种短信厂商,只需在 yml 中配置好厂商密钥即可使用,可多厂商共用不支持
邮件采用 mail-api 通用协议,支持大部分邮件服务商不支持
接口文档采用 SpringDoc、javadoc,无注解零侵入,基于 Java 注释<br/>只需写好注释,无需再写大量文档注解采用 Springfox,已停止维护,需要编写大量注解来支持文档生成
校验框架采用 Validation,支持注解与工具类校验,注解支持国际化仅支持注解,且注解不支持国际化
Excel 框架采用 Alibaba EasyExcel,基于插件化<br/>框架对其增加了许多功能,如自动合并相同内容、自动排列布局、字典翻译等基于 POI 手写实现,功能有限,复杂,扩展性差
工具类框架采用 Hutool、Lombok,上百种工具覆盖 90% 的使用需求,基于注解自动生成 get、set 等方法,简化框架大量代码手写工具稳定性差易出问题,工具数量有限,代码臃肿需自己手写 get、set 等方法
监控框架采用 SpringBoot-Admin,基于 SpringBoot 官方 actuator 探针机制<br/>实时监控服务状态,框架还为其扩展了在线日志查看监控
链路追踪采用 Apache SkyWalking,还在为请求去向不明、问题定位困难而烦恼吗?<br/>使用它即可实时查看请求经过的每一处每一个节点
代码生成器只需设计好表结构,一键生成所有 CRUD 代码与页面<br/>降低 80% 的开发量,将精力集中在业务设计上<br/>框架为其适配 MP、SpringDoc 规范化代码,同时支持动态多数据源代码生成代码生成原生结构,只支持单数据源生成
部署方式支持 Docker 编排,一键搭建所有环境,让开发人员从此不再为搭建环境而烦恼原生 jar 部署,其他环境需手动下载安装,自行搭建
项目路径修改提供详细的修改方案文档,并为其做了一些改进,非常简单即可修改成自己想要的需要做很多改造,文档说明有限
国际化基于请求头动态返回不同语种的文本内容,开发难度低,有对应的工具类,支持大部分注解内容国际化只提供基础功能,其他需自行编写扩展
代码单元测试提供单元测试,使用方式编写方法与 maven 多环境单测插件只提供基础功能,其他需自行编写扩展
Demo 案例提供框架功能的实际使用案例,单独一个模块提供了很多全面的示例

本框架与RuoYi的业务差异

业务功能说明本框架RuoYi
租户管理系统内租户的管理 如:租户套餐、过期时间、用户数量、企业信息等支持
租户套餐管理系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等支持
客户端管理系统内对接的所有客户端管理 如: pc端、小程序端等<br>支持动态授权登录方式 如: 短信登录、密码登录等 支持动态控制token时效支持
用户管理用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等支持支持
部门管理配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限支持支持
岗位管理配置系统用户所属担任职务支持支持
菜单管理配置系统菜单、操作权限、按钮权限标识等支持支持
角色管理角色菜单权限分配、设置角色按机构进行数据范围权限划分支持支持
字典管理对系统中经常使用的一些较为固定的数据进行维护支持支持
参数管理对系统动态配置常用参数支持支持
通知公告系统通知公告信息发布维护支持支持
操作日志系统正常操作日志记录和查询 系统异常信息日志记录和查询支持支持
登录日志系统登录日志记录查询包含登录异常支持支持
文件管理系统文件展示、上传、下载、删除等管理支持
文件配置管理系统文件上传、下载所需要的配置信息动态添加、修改、删除等管理支持
在线用户管理已登录系统的在线用户信息监控与强制踢出操作支持支持
定时任务运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等支持仅支持任务与日志管理
代码生成多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载支持仅支持单数据源
系统接口根据业务代码自动生成相关的api接口文档支持支持
服务监控监视集群系统CPU、内存、磁盘、堆栈、在线日志、Spring相关配置等支持仅支持单机CPU、内存、磁盘监控
缓存监控对系统的缓存信息查询,命令统计等。支持支持
在线构建器拖动表单元素生成相应的HTML代码。支持支持
使用案例系统的一些功能案例支持不支持

参考文档

使用框架前请仔细阅读文档重点注意事项 <br>

初始化项目 必看

https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/init

专栏与视频 入门必看

https://plus-doc.dromara.org/#/common/column

部署项目 必看

https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/deploy

如何加群

https://plus-doc.dromara.org/#/common/add_group

参考文档 Wiki

https://plus-doc.dromara.org

软件架构图

Plus部署架构图

如何参与贡献

参与贡献的方式 https://plus-doc.dromara.org/#/common/contribution

捐献作者

作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭
<img src="https://yellow-cdn.veclightyear.com/835a84d5/5dcdf8d4-5205-4382-8aca-df82e2c60bcb.png" width="300px" height="450px" /> <img src="https://yellow-cdn.veclightyear.com/835a84d5/5dd7609a-0e51-4f39-8add-1eac7c4b59fd.png" width="300px" height="450px" />

演示图例

输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多