# coj-backend-microservice **Repository Path**: cyanzzy/coj-backend-microservice ## Basic Information - **Project Name**: coj-backend-microservice - **Description**: 编程试题评测助手 COJ 是一款基于 Spring Boot + Spring Cloud Alibaba + Docker 架构的微服务项目,使用 MySQL 存储试题和用户及其提交数据,使用 Redis 实现分布式 Session 登录,使用 RabbitMQ 实现服务解耦。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-10-20 - **Last Updated**: 2023-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目名称 编程试题评测助手 COJ # 目录 - [项目介绍](#项目介绍) - [项目架构](#项目架构) - [技术选型](#技术选型) - [项目部署](#项目部署) # 项目介绍 编程试题评测助手 COJ 是一款基于 Spring Boot + Spring Cloud Alibaba + Docker 架构的微服务项目,不同于传统拘泥于增删改查的管理系统,COJ 基于 Docker 虚拟化技术,使用多种设计模式自主开发出安全可靠、能够复用的代码沙箱服务,项目功能大致如下:
* 在系统前台,仅管理员可以创建、管理题目;用户可自由搜索题目、阅读题目、编写并提交代码 * 在系统后台,能够根据管理员设定的题目测试用例在代码沙箱中对代码进行编译、运行、判断输出是否正确 * 代码沙箱可以作为独立服务提供给开发者使用 > 题目模块 * 创建题目(仅管理员) * 删除题目(仅管理员) * 修改题目(仅管理员) * 搜索题目(全部用户) * 在线做题(全部用户) * 提交题目代码(全部用户) > 用户模块 * 注册功能 * 登录功能 > 判题模块 * 提交判题(结果正确与否) * 错误处理(内存溢出、安全性、是否超时) * 自主实现 **代码沙箱**(安全沙箱) * 开放接口(对外服务) # 项目架构 > 技术架构 ![](https://cyan-images.oss-cn-shanghai.aliyuncs.com/images/docs-oj-21.png) > 业务流程 ![](https://cyan-images.oss-cn-shanghai.aliyuncs.com/images/docs-oj-06.png) # 技术选型 * Java Spring Cloud + Spring Cloud Alibaba 微服务 * Nacos 注册中心 * OpenFeign 客户端调用 * Gateway 网关 * 聚合接口文档 * Java Spring Boot * Java 进程控制 * Java 安全管理器 * Docker 代码沙箱实现 * 虚拟机 + 远程开发 * MySQL 数据库 * MyBatis-Plus 及 MyBatis X 自动生成 * Redis 分布式 Session * RabbitMQ 消息队列 * 多种设计模式:策略模式、工厂模式、代理模式、模板方法模式 # 项目部署 > Docker Compose [Docker Compose](https://cyanzzy.github.io/2023/07/20/%E4%BC%81%E4%B8%9A%E5%BC%80%E5%8F%91%E8%BF%9B%E9%98%B6-5-DockerAdvance/#Docker-Compose-%E5%AE%B9%E5%99%A8%E7%BC%96%E6%8E%92 ) 通常适用于把所有微服务部署在同一台服务器的场景,真实企业级项目中往往使用 K8S 等更专业的容器编排和自动化部署工具,更方便地在多个服务器上部署容器 ## 本地部署 1. 梳理服务部署表格 2. Maven 子父模块打包 3. Dockerfile 编写 4. 编写环境依赖配置 5. 编写服务配置 6. 调整程序配置 7. 测试访问 本地执行 Docker Compose,启动环境依赖,包括 MySQL、Redis、RabbitMQ、Nacos 服务,
执行 Docker Compose 启动业务服务。访问聚合文档,依次调用用户注册--登录--获取登录用户信息--创建题目接口,查看是否运行成功。 ## 服务器部署 ### 准备服务器 自行准备阿里云服务器。 ### Docker Compose 安装 自行安装 Docker Compose
Docker Compose V2 地址:https://docs.docker.com/compose/migrate/
Docker Compose Linux 安装:https://docs.docker.com/compose/install/linux/#install-using-the-repository
### 同步文件 将本地的微服务项目源码同步到服务器中。 ### 获取 jar 包 服务器安装 maven,在服务器上打包。 ### 服务启动 >启动环境依赖 以后台方式启动环境依赖: ```shell docker compose -f docker-compose.env.yml up -d ``` > 启动业务服务 ```shell docker compose -f docker-compose.service.yml up ``` 如果要单独重新启动某服务,比如网关服务: ```shell docker compose -f docker-compose.service.yml up coj-backend-gateway ``` ### 测试访问 访问线上网关接口文档,依次调用用户注册--登录--获取登录的用户消息--创建题目