引言

2023年3月30日
Ruoyi探讨:

  1. 它的业务应用场景是什么?
  2. 有什么应用使用了Ruoyi?
  3. 它作为一个后台系统对应的前台是什么?
  4. 为什么选择Ruoyi-Cloud去部署?
  5. 为什么是kubesphere平台部署Ruoyi?

Ruoyi的业务应用场景是什么?

Ruoyi的作者写道:

一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。

按照作者的意思,也就是说,所有Web应用程序都可以使用Ruoyi作为后台管理系统。
Ruoyi的内置模块可以对公司的部门、角色进行划分和授权,还可以查看日志、通知公告。
在上面这些内置模块的基础上,可以开发一些别的模块,以完成目标需求。
比如可以作为公司内部的一个请假管理系统或工资管理系统,也可以作为一个售后支持工单系统……需要强调的是,Ruoyi自带的内置模块,不足以满足全部需求,只是提供了比较基础的用户、部门等模块。
想学习Ruoyi后台系统如何使用可以参考这篇博客及其后续博客:

https://blog.kdyzm.cn/post/44

也有人在Ruoyi-Cloud的基础上进行了二次开发,增加了一层租户模式

http://platform.vctgo.cn/system/config

在知乎上,也有人在回答中现身说法,自己在公司就在使用Ruoyi框架。

https://www.zhihu.com/question/365634958/answer/2063830296

有什么应用使用了Ruoyi吗?

前文我们提及了有的人在回答中现身说法,但是要找到一个实际的公司使用Ruoyi,还是有些难找。
于是我转而从Ruoyi解决方案的角度去寻找,看看能寻找到什么蛛丝马迹。
Ruoyi解决了什么痛点吗?

Ruoyi是一款基于Spring Boot和Vue.js开发的通用后台管理系统,其主要解决了以下痛点:
开发效率低下:传统的后台管理系统需要从零开始编写,包括基础框架、权限管理、代码生成等等,耗费时间和精力。而Ruoyi基于Spring Boot和Vue.js,提供了一套快速开发的后台管理系统框架,开发人员可以在这个框架上进行快速的二次开发。
权限管理繁琐:传统的后台管理系统权限管理通常需要手动编写代码,设置用户、角色、权限等等,管理繁琐。而Ruoyi提供了一套完整的RBAC权限管理系统,可以通过简单的配置即可实现权限管理。
数据库开发效率低下:传统的后台管理系统开发中,需要手动编写各种CRUD操作代码,工作量大,效率低。而Ruoyi提供了一套代码生成器,可以快速生成常见的CURD操作代码,提高开发效率。
系统部署麻烦:传统的后台管理系统部署需要手动搭建环境,部署复杂,容易出错。而Ruoyi支持快速部署,可以使用Docker容器技术部署到云平台上,简化了系统部署流程。

总之,Ruoyi解决了后台管理系统开发效率低下、权限管理繁琐、数据库开发效率低下、系统部署麻烦等痛点,提供了一套高效、易用、可靠的后台管理系统框架,帮助开发人员快速开发和部署后台管理系统。

Ruoyi作为一个后台系统对应的前台是什么?

按照作者的意思,也就是说,所有Web应用程序都可以使用Ruoyi作为后台管理系统。
以下是一些可能是应用场景:

电商管理后台:可以提供商品管理、订单管理、用户管理等功能,可以方便地构建电商管理后台。
学校信息管理系统:可以提供学生信息管理、教师信息管理、课程管理等功能,可以用于构建学校信息管理系统。
医院信息管理系统:可以提供医生信息管理、病人信息管理、药品管理等功能,可以用于构建医院信息管理系统。
政府信息管理系统:可以提供政务管理、人事管理、公文管理等功能,可以用于构建政府信息管理系统。
企业管理后台:可以提供员工管理、部门管理、任务管理等功能,可以用于构建企业管理后台。

对这些应用场景进行更细致的描述的话,会是这样的:

人事管理:对部门的人事信息进行管理,包括人员档案、工资福利、考勤请假等方面的信息。
数据统计:对数据进行统计和分析,了解政务事务的运行情况和趋势,为决策提供科学依据。
商品管理:支持商品的增删改查、上下架、价格管理等功能。管理员可以方便地对商品进行管理和调整。
订单管理:支持订单的查询、修改、取消、发货等功能。管理员可以方便地对订单进行管理和跟踪。

为什么选择Ruoyi-Cloud去部署?

Ruoyi提供不同的版本
RuoYi-Vue:基于SpringBoot、Spring Security、Jwt、Vue的前后端分离的后台管理系统。
Ruo Yi-Cloud:基于Spring Boot、Spring Cloud & Alibaba的微服务的权限管理系统。
RuoYi-App:基于uniapp+uniui封装的一套基础模版,支持H5、APP、微信小程序、支付宝小程序等。
我们主要从RuoYi-Vue和Ruo Yi-Cloud进行考虑,RuoYi-App主要是面向小程序的,所以我们这里先暂不考虑。
让我们看一下它们的后端项目结构。
RuoYi-Vue的后端项目结构

//RuoYi-Vue的后端项目结构
com.ruoyi     
├── common            // 工具类
│       └── annotation                    // 自定义注解
│       └── config                        // 全局配置
│       └── constant                      // 通用常量
│       └── core                          // 核心控制
│       └── enums                         // 通用枚举
│       └── exception                     // 通用异常
│       └── filter                        // 过滤器处理
│       └── utils                         // 通用类处理
├── framework         // 框架核心
│       └── aspectj                       // 注解实现
│       └── config                        // 系统配置
│       └── datasource                    // 数据权限
│       └── interceptor                   // 拦截器
│       └── manager                       // 异步处理
│       └── security                      // 权限控制
│       └── web                           // 前端控制
├── ruoyi-generator   // 代码生成(可移除)
├── ruoyi-quartz      // 定时任务(可移除)
├── ruoyi-system      // 系统代码
├── ruoyi-admin       // 后台服务
├── ruoyi-xxxxxx      // 其他模块

Ruo Yi-Cloud的后端项目结构

com.ruoyi     
├── ruoyi-ui              // 前端框架 [80]
├── ruoyi-gateway         // 网关模块 [8080]
├── ruoyi-auth            // 认证中心 [9200]
├── ruoyi-api             // 接口模块
│       └── ruoyi-api-system                          // 系统接口
├── ruoyi-common          // 通用模块
│       └── ruoyi-common-core                         // 核心模块
│       └── ruoyi-common-datascope                    // 权限范围
│       └── ruoyi-common-datasource                   // 多数据源
│       └── ruoyi-common-log                          // 日志记录
│       └── ruoyi-common-redis                        // 缓存服务
│       └── ruoyi-common-seata                        // 分布式事务
│       └── ruoyi-common-security                     // 安全模块
│       └── ruoyi-common-swagger                      // 系统接口
├── ruoyi-modules         // 业务模块
│       └── ruoyi-system                              // 系统模块 [9201]
│       └── ruoyi-gen                                 // 代码生成 [9202]
│       └── ruoyi-job                                 // 定时任务 [9203]
│       └── ruoyi-file                                // 文件服务 [9300]
├── ruoyi-visual          // 图形化管理模块
│       └── ruoyi-visual-monitor                      // 监控中心 [9100]
├──pom.xml                // 公共依赖

Ruoyi-Cloud的项目结构,以业务模块为例,划分的更加细致,更便于我们把这些服务模块分开部署上云,并且这些服务以后将会以一个pod的形式部署到kubesphere上,一个pod的起落,对其他pod起落并没有太多影响,降低了每个pod之间的耦合度,这么一想,是不是与软件工程中的“高内聚,低耦合”理念一致呢?

pod,是容器的集合。一个pod内可以有一个或多个容器。

高内聚,低耦合:"高内聚,低耦合" 是软件工程中一个非常重要的设计原则,它指的是在设计软件模块时,应该让一个模块内部的各个组件紧密地联系在一起(高内聚),而让不同的模块之间的联系尽可能地少(低耦合)。
高内聚指的是一个模块内部各个组件之间的联系紧密程度。如果一个模块内部的各个组件都围绕着一个共同的目标或功能展开,那么这个模块就具有很高的内聚性。高内聚的模块可以让代码更加清晰、易于理解和维护,因为模块内的各个组件都是紧密相关的,它们共同完成了一个任务。
低耦合指的是不同模块之间的联系尽可能地少。如果两个模块之间的联系太紧密,就会出现一个模块修改了代码,另一个模块也需要相应地做出修改的情况,这样就增加了代码的复杂度和维护难度。通过降低模块之间的耦合度,我们可以使得代码更加灵活,容易修改和维护。

为什么是kubesphere?

KubeSphere 是一个开源的 Kubernetes 管理平台,它提供了一系列的工具和功能,可以帮助企业更加高效地在 Kubernetes 上运行应用程序。而在 KubeSphere 上部署 Ruoyi-cloud 有以下优点:

简化部署:KubeSphere 提供了基于 Web 的图形化界面,可以简化 Ruoyi-cloud 的部署过程,使得非专业人员也可以轻松地进行部署。
自动化管理:KubeSphere 可以自动管理 Ruoyi-cloud 应用程序的生命周期,包括创建、部署、升级、扩展和回滚等操作,大大降低了管理的工作量。
高可用性:KubeSphere 提供了多种容器编排技术,例如 Kubernetes 的 ReplicaSet 和 Deployment 等,可以确保 Ruoyi-cloud 应用程序的高可用性和可靠性。
安全可控:KubeSphere 提供了严格的权限管理和访问控制机制,可以确保 Ruoyi-cloud 应用程序的安全性和可控性。

综上所述,KubeSphere 可以帮助企业更加高效、自动化地管理 Ruoyi-cloud 应用程序,并提高应用程序的 可靠性 和 安全性。