</a>
一款面向高校实验室提供的GPU预约系统
用于解决高校实验室中GPU资源的使用冲突问题。持续更新中~
FastReserve是一款面向高校实验室提供的GPU预约系统,用于解决高校实验室中GPU资源的使用冲突问题。
├─asset // 图片
├─backend // 后端代码
├─flask // Python代码,实现简单GPU监控
├─frontend // 前端代码
├─sql // 数据库脚本
│ └── reserve_system.sql // 初始化脚本
├─docker-compose.yml // 供参考的docker-compose文件
├─Dockfile // 用于构建java应用镜像
├─nginx.conf // 供参考的简单nginx配置
├─README.md // 项目文档
功能 | 技术 |
---|---|
前端核心框架 | Vue3 |
运行环境 | Node.js v18.12.1 |
构建工具 | Vite |
状态管理 | Pinia |
网络请求 | Axios |
UI框架 | Element Plus |
UI组件库 | FullCalendar |
路由管理 | Vue Router |
Markdown渲染 | Markdown-It |
功能 | 技术 |
---|---|
开发语言 | Java8 |
后端核心框架 | Spring Boot |
构建工具 | Maven |
安全框架 | Spring Security |
ORM框架 | MyBatis-Plus |
Token | jjwt |
关系型数据库 | MySQL 5.7 |
缓存数据库 | Redis |
Api文档 | Swagger |
功能 | 技术 |
---|---|
开发语言 | Python3.7 |
部署服务器 | gunicorn |
虚拟环境 | Anaconda |
Web框架 | Flask |
GPU信息获取 | gpustat |
首页:
预约:
工单:
审核:
cd frontend
yarn # 安装依赖
yarn dev # 启动
Flask 写的py脚本用于监控GPU的运行情况,每台服务器需单独部署和配置。
前提:
首先执行下面命令,创建conda虚拟环境。
# 安装虚拟环境
conda create --name gpu_monitor_py37 python=3.7
# 启动环境
conda activate gpu_monitor_py37
# 安装依赖
pip install flask
pip install gunicorn
pip install pyyaml
# 部分情况下需要安装gpustat
pip install gpustat
配置config.yml:见上面【配置项】部分。
启动脚本:sh start.sh
创建数据库:
reserve_system
sql
目录中的SQL文件自行启动本地redis
下面教程假设pwd为用户自己新建的项目目录,以目录名gpu为例。
准备:
首先完成数据卷挂载的准备工作:
# mysql 挂载准备
mkdir mysql
cd mysql
mkdir data
mkdir init
mkdir conf
cd ..
# nginx 挂载准备
mkdir nginx
cd nginx
mkdir html
# nginx配置文件
vim nginx.conf # 根据需求写配置文件,默认用80端口
# 将dist文件放到nginx/html并解压
cd ..
mv dist.zip nginx/html
cd nginx/html
unzip dist.zip
rm -rf dist.zip
部署前,请检查当前目录是否有下面文件和目录,如果没有,请自行通过FTP上传。
gpu.jar
(打包后的java程序)mysql
(前面步骤创建的目录)nginx
(前面步骤创建的目录)Dockerfile
docker-compose.yml
如果没问题,执行下面命令构建并运行容器:
docker compose up -d
检查容器情况,执行下面命令,如果redis、MySQL、Java、nginx四个容器都启动了,说明部署成功。
docker compose ps
接下来是导入数据库数据:
reserve_system.sql
。docker cp reserve_system.sql gpu-mysql:/home
docker exec -it gpu-mysql mysql -uroot -p # 进入容器
# 下面是进入MySQL终端后执行的命令
CREATE DATABASE IF NOT EXISTS reserve_system CHARACTER SET utf8mb4
use reserve_system
source /home/reserve_system.sql
最后,查看各个容器的日志,观察服务是否正常启动,尤其是Java程序,可以观察有无报错信息。
docker logs gpu-mysql -f # 查看MySQL运行日志
docker logs gpu-java -f # 查看Java运行日志
docker logs gpu-redis -f # 查看Redis运行日志
docker logs nginx -f # 查看Nginx运行日志
到这里,整个应用就部署完毕了,在确认服务器开放了80端口后,可以前往:http://ip/
,查看网站是否正常运行(如果有域名,应该配置到Nginx中)
本项目为V1.0版本,于2023年10月开发,也是本人的第一个全栈项目,目前整理过后开源出来。
V1.0前端基于Vue3+ElementPlus+FullCalendar,后端基于Spring Boot+MySQL+Redis,GPU监控服务基于Flask,实现了GPU预约、GPU管理、GPU状态监控、用户管理、基础工单系统等内容。
项目能基本满足高校的大部分需求,如需个性化需求可以自行clone后定制化开发。
Q:为什么有V2.0?
1.0版本因赶工期开发导致代码并未进行模块化设计,代码不好懂、难维护。因此本人在1.0开发过后又提出了V2.0重构代码的设想。
Q:V2.0有何不同?
前端方面,V2.0版本计划基于优秀开源框架pure-admin重构,极大提升用户体验。
后端方面,引入如下新特性:
Q:V2.0在哪获取
V2.0暂未发布,开发进度为基本完成后端重构,前端重构还未开始。
众所周知,重构是一件非常麻烦的事情。本人最初也兴致勃勃地设想V2.0并着手开发,可开发到中间发现越来越难以进行下去。本质上在于重构仅仅只是满足我的个人技术爱好,并没有什么实际的需求在推动。此外本人还想花一些时间在学习AI技术上面,因此V2.0暂时的开发计划暂时搁浅。