Kubesphere部署Ruoyi(一):为什么是Ruoyi和Kubesphere?
引言
2023年3月30日
Ruoyi探讨:
- 它的业务应用场景是什么?
- 有什么应用使用了Ruoyi?
- 它作为一个后台系统对应的前台是什么?
- 为什么选择Ruoyi-Cloud去部署?
- 为什么是kubesphere平台部署Ruoyi?
Ruoyi的业务应用场景是什么?
Ruoyi的作者写道:
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。
按照作者的意思,也就是说,所有Web应用程序都可以使用Ruoyi作为后台管理系统。
Ruoyi的内置模块可以对公司的部门、角色进行划分和授权,还可以查看日志、通知公告。
在上面这些内置模块的基础上,可以开发一些别的模块,以完成目标需求。
比如可以作为公司内部的一个请假管理系统或工资管理系统,也可以作为一个售后支持工单系统……需要强调的是,Ruoyi自带的内置模块,不足以满足全部需求,只是提供了比较基础的用户、部门等模块。
想学习Ruoyi后台系统如何使用可以参考这篇博客及其后续博客:
也有人在Ruoyi-Cloud的基础上进行了二次开发,增加了一层租户模式
在知乎上,也有人在回答中现身说法,自己在公司就在使用Ruoyi框架。
有什么应用使用了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 应用程序,并提高应用程序的 可靠性 和 安全性。