前期我们基于vue gin的模式开发了一个简单的后台运维开发管理系统,不过主要面向入门级开发,熟悉整个开发流程,并且没有涉及数据库的使用。而根据我的运维开发写作计划来看,我们的目的就是在六月底之前开发一款属于咱们自己的开源项目,主要是运维开发的管理平台,虽然不求大而全,但是基础的功能设计必须有,这样的项目对于自己和其他开发者才算是有价值的,那么如何做到,除了有自己的想法之外,也要学习他人优秀的项目,避免一些功能重复造轮子,从中也能学习到优秀的开发思想以及规范,对于后期的维护扩展或重构也是及其有益的。
那么今天我们就来介绍一款比较完善的基于go-zero的分布式微服务后端管理系统脚手架,名字叫做Simple Adim。这个项目提供了丰富的后台管理功能,而且支持k8s快速部署,可以帮助开发者快速开发高并发微服务集群,而且项目是可以自用和商用的。
先摆出Simple Adim项目地址:
Github:
代码语言:javascript复制https://github.com/suyuan32/simple-admin-core
Gitee:
代码语言:javascript复制https://gitee.com/hopefire/simple-admin-core
再说说go-zero又是什么呢,简单来说就是一款云原生微服务框架客户端。Github星星数高达24k的项目,官方是这么介绍的:
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,具有高性能、易扩展和低门槛的推特性,感兴趣的朋友可以自行查阅:
项目地址:
代码语言:javascript复制https://github.com/zeromicro/go-zero
官网简介:
支持以下的功能:
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识,接口权限等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 会员管理:管理注册会员信息
- 接口文档:根据业务代码自动生成相关的api接口文档。
- 代码生成:根据数据表结构生成对应的增删改查相对应业务
- 服务监控:查看一些服务器的基本信息
再来看看具体的页面:
在线预览地址如下:
代码语言:javascript复制http://101.132.124.135/
整体页面也就是主流后台管理布局页面,左侧导航栏有三个示例选项,但导航栏的菜单选项是可以通过ui界面直接添加的,这也是亮眼细节之一。再看看系统管理里面的子项:
是包含了在介绍页中的所有功能的,刚才提到的细节之处菜单管理就在第一栏:
是可以直接添加目录或者菜单的:
至于角色和用户以及部门管理这里就不介绍了,看看这个API管理:
目前simple admin实现了API数据库的管理功能,可以在这个基础上自行开发添加:
其他的就不一一介绍了,大家可以自行体验,比如导航栏模式更改等都是vbean admin模式所具有的。
接下来就是二次开发,介绍下基本的要求:
涉及技术栈:
代码语言:javascript复制Go-zero Ent Vben Admin Go Swagger Ant Design
vue casbin kafka GORM Mysql
看着涉及的比较多,不要怕,一个一个拆解,就能有机组合了。
1、环境需求
代码语言:javascript复制golang 1.20
nodejs 18.8.0
mysql 8.0.21 | MariaDB 10.7 | Postgres
13 (Postgres 14 推荐)
redis 7.0
go-swagger
Simple Admin Tool
注意,官网推荐在 linux 下开发,因为需要用到 make 命令,官方在 Ubuntu 22.10 环境下开发.
Windows 用户建议在 WSL 环境下开发, 你也可以自行配置环境:
代码语言:javascript复制首先安装 git , 我们需要 git
bash 命令行执行 linux 命令
其次需要安装 make 命令, 我们通过 Chocolatey 进行安装
# 在管理员状态下的POWERSHELL 执行
Set-ExecutionPolicy Bypass -Scope Process
-Force; [System.Net.ServicePointManager]::SecurityProtocol =
[System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object
System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
## 然后执行
choco install make
安装完成 make 后重启 IDE 即可,IDE 的命令行均选择 git bash
前端代码:
代码语言:javascript复制git clone https://github.com/suyuan32/simple-admin-backend-ui.git
后端代码:
代码语言:javascript复制git clone https://github.com/suyuan32/simple-admin-core.git
docker部署:
在 deploy/docker-compose/all_in_one 文件夹下
代码语言:javascript复制1. 启动docker-compose
docker-compose up -d
2. 初始化数据库
http://localhost/init
3. 重启 API
K8s 部署:
执行 deploy/k8s/setup.sh
开发流程:
如果感兴趣的话,可以贡献你的pr:
代码语言:javascript复制Fork 代码!
创建自己的分支: git checkout -b feat/xxxx
提交你的修改: git commit -am 'feat(function): add
xxxxx'
推送您的分支: git push origin feat/xxxx
提交pull request
到这这个项目的介绍就结束了,前端可以参考vben admin,数据库管理涉及ent,restfulAPI涉及go swagger 适用于微服务系统开发,casbin是用于权限管理的框架基于RBAC访问控制模型,rpc(remote procedure call)涉及go zero微服务框架,相关的命令也需要好好研究一番。
这里我觉得可以学习使用一下ent这个框架,github star数超13k,是一个简单又功能强大的Go语言实体框架,因为simple admin的推荐,我也正在学习使用,主要用于管理和产讯数据库数据,支持的数据库有pg、mysq、sqlite、sql server。
项目地址:
代码语言:javascript复制https://github.com/ent/ent
后端涉及的知识点也还是比较多,好的项目需要学习其思想,慢慢消化,相信未来的某一天会被咱自己灵活使用。