【项目】【在线判题系统】简介与准备
2026/4/22 23:43:20 网站建设 项目流程

目录

  • 一、简介
  • 二、开发环境
  • 三、需求分析
  • 四、架构选型
  • 五、微服务划分
  • 六、技术选型

一、简介

这个项目就是仿照leetcode做的一个阉割版项目,普通用户端提供参加竞赛(类似leetcode周赛),刷题,个人信息展示的功能,管理员端,提供用户管理,题库管理,竞赛管理三大功能。
码云链接:https://gitee.com/yj20040627/oj
使用到的技术主要有:

前端技术vue3, html, JavaScript , css , element plus
服务架构Spring Cloud微服务架构
代理服务器Nginx
分布式任务调度中心Xxl-Job
注册与发现中心/配置中心Nacos
服务间调用OpenFeign
网关Spring Cloud Gateway
数据存储MySQL
数据库持久层MyBatis/MyBatis-Plus
缓存Redis
消息队列rabbitMQ
搜索引擎ElasticSearch
加密算法Bcrypt
身份认证JWT
代码沙箱Docker
对象存储oss

二、开发环境

idea2023专业版,JDK17,Spring Boot3+,SpringCloud,Node.js 18.3以上

三、需求分析

需求分类

  • 业务需求:指反映企业或组织对系统的⽬标要求,通常来⾃与企业内部。
  • ⽤⼾需求:描述软件系统的⽤⼾期望和需求,如⽤⼾界⾯、操作⽅式、数据展⽰等
  • 系统需求:从系统⻆度来说明软件的需求,包括功能需求(系统必须实现的功能)、⾮功能需求(⽐如软件的质量,可维护性,效率等等)和设计约束(交付时的⼀些限制条件,⽐如必须采⽤国有⾃主知识产权的数据库,必须运⾏在某个操作系统下)等等。
需求种类需求内容
业务需求题⽬列表,刷题,竞赛的列表,竞赛⽤⼾排名,⽐赛,⾃动判题,题⽬管理,竞赛管理
⽤⼾需求我的竞赛,我的消息,获取⽐赛结果,查看历史竞赛排名
系统需求⽤⼾登录、注册,⽤⼾管理,安全防护(⾝份认证、防sql注⼊、防xss攻击),SEO优化

四、架构选型

我们使用 B/S 架构和微服务架构

五、微服务划分

按照业务划分:

服务名称具体功能
后台数据管理题库管理、竞赛管理、C端⽤⼾管理、定时任务管理
⽤⼾服务登录、注册、退出登录、个⼈中⼼、我的竞赛、我的消息
题库竞赛服务题库列表、竞赛列表、竞赛报名、查看排名、竞赛或者刷题时题⽬切换、提交代码、运⾏代码、获取代码执⾏结果

按照技术划分:

服务名称具体功能拆分原因(不包含原有服务)
⽹关服务统⼀的权限控制,统⼀的请求⼊⼝动态路由转发等功能即原因
后台数据管理服务题库管理、竞赛管理、C端⽤⼾管理
定时任务服务定时任务增删改查、定时任务功能实现从技术的⻆度分析定时任务的执⾏可能需要和多个服务配合完成。并且定时任务的执⾏可能会周期性或⻓时间占⽤资源。那么我们可以将定时任务管理拆分出来。
登录注册服务登录、注册可能需要与第三⽅的认证服务进⾏交互,存在性能瓶颈
⽤⼾服务退出登录、个⼈中⼼、我的竞赛、我的消息
消息服务发送消息,接收消息消息种类较多,短信、站内信、邮件等等。和多个第三⽅组件交互
题库竞赛服务题库列表、竞赛列表、竞赛报名、查看排名
答题服务竞赛或者刷题时题⽬切换、提交代码、获取代码执⾏结果竞赛、刷题时⾼频使⽤功能。
判题服务判题判题逻辑可能⽐较复杂,不同类型的题⽬判题逻辑不⼀致,存在⼤量复杂计算。
代码沙箱服务运⾏代码与第三⽅组件进⾏交互,可能是性能瓶颈

按照实际情况划分:
按照技术划分:

服务名称具体功能合并原因
⽹关服务统⼀的权限控制,统⼀的请求⼊⼝动态路由转发等
后台数据管理服务题库管理、竞赛管理、C端⽤⼾管理
定时任务服务定时任务增删改查、定时任务功能实现(竞赛结果统计、发送消息)消息发送仅实现系统消息,暂不是先实时通讯。掌握消息系统表结构设计、缓存设计等。
⽤⼾端服务登录、注册、退出登录、个⼈中⼼、我的竞赛、我的消息,题库列表、竞赛列表、竞赛报名、查看排名、竞赛或者刷题时题⽬切换、提交代码、获取代码执⾏结果登录注册不需要与第三⽅的认证服务进⾏交互。⾝份认证通过token性能可以保障。
判题+代码沙箱服务判题、运⾏代码题⽬只有编程题,并且仅⽀持Java编码。判题逻辑并不繁琐。性能瓶颈只是代码沙箱服务,我们需要借助docker

最终服务架构:

六、技术选型

后端技术选型:项⽬选择springcloudAlibaba作为后端核⼼框架
前端技术选型:选择易于上⼿的Vue作为前端框架。编程语⾔采⽤JavaScript、Html。⻚⾯样式使⽤语法⽐css更简洁的scss

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询