作业
作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业作业
前言
本文是学生管理系统详细架构设计文档,用于指导相关人员进行后续的工作开展,更好的完成系统落地。
词汇表
主备模式:假设你是个妹子,你有一位男朋友,于此同时你和另外一位男生暖味不清,比朋友好,又不是恋人。你随时可以甩了现任男友,另外一位马上就能补上。
双机热备:假设你是个妹子,同时和两位男性在交往,两位都是你男朋友。并且他们还互不干涉,独立共赢。这就是双机热备份。
Nginx: 是一个高性能的 HTTP 和反向代理 web 服务器,用于实现业务服务器的负载均衡与请求路由分发。
MySQL:关系型数据库管理系统,用于存储业务数据。
1. 业务背景
近年来,各大高校不断扩招,对学生信息管理的自动化、统一化、规范化显得尤为重要,传统管理方式:
1. 成本高:由于只用于一所高校,相应维护、运营成本较高。
2. 维护不及时:大多是学生兼职编写的网站,缺乏专职人员维护。
3. 可靠性低:绝大多数采取单体架构,高峰时期(如选课高峰)可能性能无法跟上,导致系统无法访问。
基于以上问题,通过组建一套学生管理 SAAS 系统可以有效提升系统可靠性,并降低建设、维护、运营成本,并有专人 7*24 小时维护。
2. 约束和限制
1.必须在 2021.06.30 号完成
2.支撑 10 万人以上同时使用
3.各组件采用开源版本
4.团队规模 6-8 人
3. 总体架构
3.1 架构分析
3.1.1 可扩展
架构可扩展:采用微服务架构,每个服务仅负责一个子系统,当增加新子系统时,支持横向扩展。
3.1.2 高性能
采用 Redis 分布式缓存,5 节点集群,并有副本支持。
3.1.3 高可用
西咸、廊坊两地三中心机房,秒级切换,保证系统的可靠稳定运行。
3.2 总体架构
4. 详细设计
4.1 核心功能
4.1.1 鉴权
采用 jwt 方式进行授权:用户通过页面、第三方跳转或微信扫码等方式进行登录,登录成功后,返回 token,作为临时访问的令牌。
4.1.2 学生子系统
用于维护学生的基本信息,提供学生信息的增删改查基本能力。
4.1.3 课程子系统
管理员:用于维护课程的基本信息,提供课程信息的增删改查基本能力。
学生:选课阶段可进行选课,平时查看已选课程。
4.2 关键设计
1)数据储存的可靠性
使用一主一备两台 MySQL 服务器,保证数据的可用性。
2)请求分发与控制
Nginx 根据 URL 来决定将请求反向代理至某个子系统,当某个子系统出现性能瓶颈时,通过 Nginx 做负载均衡。
4.3 设计规范
1)采用前后分离,前端采用 React,后端使用 Spring Boot,接口采用 restful 风格。
2)MySQL 使用 Innodb 存储引擎,禁止使用存储过程、触发器,数据库同步使用 canal。
5. 质量设计
可测试性:单元测试用例。
可维护性:详细的设计完档、部署文档、系统宕机可以快速重启。
可观测性:操作日志、系统异常预警,采用 Spring Boot Actuator。
6. 演进规划
6.1 一期:
前端用户量较少,后端服务可仅部署单节点,数据库采用单库并定时备份。
6.2 二期
随着用户量增长,后端可多副本部署,数据库集群异地双活。
评论