在上一系列,对 RuoYi(若依)的单体项目比较简单地进行了探秘。虽然 RuoYi 的单体项目有很多缺乏,可是瑕不掩瑜,RuoYi 仍是一个在小项目、验证项目、紧急项目时,可用的基础结构项目。本系列将会品鉴一个更有意思的项目:pig
。
项目介绍
pig
项目分为前端项目和后端项目,在 Gitee
和 GitHub
上都有保护,项目地址如下:
渠道 | 项目 | 地址 |
---|---|---|
Gitee | 前端 | gitee.com/log4j/pig-u… |
GitHub | 前端 | github.com/pig-mesh/pi… |
Gitee | 后端 | gitee.com/log4j/pig |
GitHub | 后端 | github.com/pig-mesh/pi… |
咱们与 RuoYi 比照一下 Star
、Fork
和 Watch
,因为 pig 是前后端分离的两个独立项目,所以咱们也进一步比照一下 RuoYi 的前后端分离的单体项目。
截止 2023.01.09,比照数据如下表:
渠道 | 项目 | Star | Fork | Watch |
---|---|---|---|---|
Gitee | RuoYi | 34.1K | 18.2K | 5.3K |
Gitee | RuoYi-Vue | 24.1K | 16.4K | 2.6K |
Gitee | pig-ui | 2.2K | 3.6K | 384 |
Gitee | pig | 37.5K | 11.4K | 4.2K |
GitHub | RuoYi | 3.4K | 1.1K | 68 |
GitHub | RuoYi-Vue | 1.4K | 860 | 31 |
GitHub | pig-ui | 139 | 135 | 13 |
GitHub | pig | 4.3K | 685 | 81 |
从比照表中能够看到,在数据上 pig 有稍微更高一些的热度,而且咱们能够从作者主页看到,pig 项目的作者还有很多其他的 Gitee GVP
项目,项目涉及规模更广。
在文章开源界的卷王中,项目引荐中,咱们能够看到 pig 的引荐理由如下:
引荐理由
1.【作者】一位专心开源界的大佬,库房中有多个 GVP 项目证明了他的实力,该项目也在 Gitee 上登顶
2.【文档】文档、教育视频丰富,不少关键环节进行了细致的文档讲解,乃至供给了常见问题总结的 FAQ,文档地址
3.【运维】Docker 布置,一键布置作者都供给了解决方案
4.【整合才能】与优异的开源产品的融合度很高,供给了 jfinal、Ruoyi、Guns、renren、jeesite 等优异结构的接入
5.【分布式】因为项目选用微服务架构,结合文档你能够深化的体会服务注册、网关、负载均衡、限流、熔断、链路追踪、缓存、分布式事务等功用,让没有运用场景的同学背八股文的时分了解的更深入。
6.【代码】代码遵循《Alibaba Java 开发手册》(这条看着简单,可是其实很难,很多项目都是乱写的)
7.【项目依靠】核心依靠的版本一直与时俱进,选用核心组件的版本十分新,没有运用明显的具有缝隙的依靠
8.【前端】已支撑 Vue3,项目运用的 element-ui 也是在 Vue 领域应用最广泛的前端组件库
以上这些引荐点中,咱们能够看到,pig 项目不只代码十分规范,运用了微服务架构,乃至还能与 RuoYi 结合运用,扩展性仍是很强的。
看外观
一头好吃的猪,必定有一个美丽的外观。咱们先看看这头 pig 究竟长得怎么样。
下面咱们以 pig 的主线分支进行分析。
咱们先用 coding.net
对后端代码进行扫描,结果如下:
全体评分略低于 RuoYi,警告问题远远小于 RuoYi,但提示问题比 RuoYi 多了一个数量级。其间,大量问题也是代码细节风格问题,但不像 RuoYi 运用的 C# 风格,pig 的风格仍是 Java 的。
运用 IDEA 打开后端项目今后,目录结构如下图:
其间,db
目录包含数据库脚本以及 Docker 文件。
子项目目录为:
-
pig-auth
:认证子项目。 -
pig-common
:为项目相关的通用组件的子项目,包含pig-common-bom
、pig-common-core
、pig-common-datasource
等。 -
pig-gateway
:网关子项目。 -
pig-register
:服务注册子项目(Nacos)。 -
pig-upms
:办理体系子项目,包含pig-upms-api
、pig-upms-biz
。 -
pig-visual
:附加的一些可视化子项目,包含pig-codegen
(代码生成)、pig-monitor
(监控)、pig-sentinel-dashboard
(sentinel 大屏)、pig-xxl-job-admin
(xxl-job 守时使命)。
从以上概览能够看出来,pig 作为后端项目,不是一个独立的单体应用,而是多个微服务一起组成的。
前端项目初看一下,能够看到 docker
目录,里边也有 Dockerfile
,说明 pig-ui 也是官方支撑直接做成容器。因为我对前端涉猎不深,对 pig-ui 不作分析。
pig 项目的介绍中,咱们知道项目运用了 Spring Boot
、Spring Cloud
、Spring Security
等结构,后端拆分为了多个微服务,还供给了容器化支撑。也便是说,经过这一个项目,咱们就能够了解三个事情:基础结构项目的建立运转、微服务的拆分运转、容器化的布置运转。这便是经过 pig 这头猪,咱们能够学到三方面的常识,这便是“一猪三吃”。
运转后端
咱们先按官方文档,配置好运转依靠的环境,包含 JDK
、Redis
、MySQL
和 Node.js
等。
咱们接着初始化相关的数据库,sql 文件存放于 db
文件夹中,咱们随意打开一个文件 pig.sql
,如下图:
咱们能够看到,pig 的 sql 文件中,建数据库和建数据表都选用了存在性断定,并且一切 sql 关键字都运用了大写风格,十分专业。
然后,咱们按文档配置注册中心项目 pig-register
的数据库衔接,配置文件示例如下图:
能够看到,配置文件中运用了标准的“环境变量+默认值”的方法进行配置,点个赞,专业的看起来便是让人很舒畅。咱们不直接修正默认值,而是在相应的项目发动项中运用环境变量配置本地环境信息。
发动项目 pig-register
后,再按文档,在注册中心中,将 MySQL、Redis 等环境信息配置到相应的配置文件中。如下图:
最终,按官方文档依次运转主要项目,IDEA 中的运转项目如下图所示:
运转前端
后端项目运转成功后,咱们再按官方文档运转前端项目。按文档运用 npm
运转项目即可。
最终运转成功后,拜访 http://localhost:8080
,能够看到如下界面:
看界面
前后端项目运转成功后,咱们运用默认用户名 admin
和 123456
登录进入体系,如下图:
能够看到,pig 的全体界面十分简洁,或者说有点丑,可是像 RuoYi 一样,假如仅仅用于后台办理体系,也是足够用的。
菜单项,相同的挑选布局在左侧,这是现在比较常见的布局方法,咱们看一下菜单结构,大体如下:
顶级菜单包含:
- 权限办理
- 体系办理
- 开发渠道
- 服务监控
- 体系官网
权限办理
包含如下子菜单:
- 用户办理
- 菜单办理
- 人物办理
- 部分办理
- 岗位办理
权限办理
中主要是针对 RBAC 的办理功用,是一个体系最核心也最不可缺少的一部分。包含的仍是“用户——安排——人物”三驾马车,或许还有像 pig 中的非后台必需功用的“岗位办理”这类偏事务的功用。
体系办理
包含如下子菜单:
- 终端办理
- 文件办理
- 字典办理
- 日志办理
- 令牌办理
- 参数办理
开发渠道
包含如下子菜单:
- 代码生成
- 表单办理
- 表单规划
- 数据源办理
开发渠道整个功用依靠于项目 pig-codegen
,也便是代码生成项目,假如没有运转代码生成项目,开发渠道相关功用是不可用的。
剩下的“服务监控”一级菜单,直接对接的便是 pig-monitor
监控项目,假如没有运转项目,相关界面直接无法打开。
界面全体规划上,右上角的部分可点击按钮,指向时是没有超链接的图标,这个在前端交互规划上是有问题的,需要改善。
而针对菜单来说,因为整个体系规划上是微服务架构,不同部分的菜单对应的或许是不同的服务,按当时这个状况看,假如部分服务没有运转,菜单功用便是不可用的。针对这个问题,假如全体体系胀大,功用更多了,咱们一般会有两种规划挑选。
一种规划是,当后端服务不可用时,由前端给出提示,如“某服务不可用”,而不是像当时规划一样直接将 “503” 反常在前端展示;
另一种规划是,完成一个菜单注册机制,不同服务初始化布置时,会向注册中心注册菜单数据,前端经过一个菜单接口获取当时可用的菜单项。
两种规划有各自的适用方向,有时乃至还会结合运用。特别是当微服务化下,后端服务和前端服务由多个开发部分或开发组进行时,选用一种规划来保证界面一致性是十分必要的。但就当时示例这个界面来说,项目还在必定规模以下,是不必考虑这个问题的,毕竟开发的实质是一个成本核算。
小结
本篇,咱们开始触摸了 pig 项目的前后端,了解到 pig 能够让咱们“一猪三吃”,并且开始运转起来了项目,看了下这只美丽的猪长什么样。
pig 项目的代码咱们还没有检查,但就从 sql 文件的风格来说,可重复执行性、关键字大写这些,十分专业,值得初学者或者需要提高的人学习。
下一篇,将展开对各模块的解构,本篇就到这儿,比心,❤。