模块三 - 学生管理系统架构设计文档
前言
本文是学生管理系统 0-1 业务架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Reactor: 网络编程模式
1.业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,
处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
系统边界黑盒图:
2.约束和限制
必须在三个月内完成
开发成本不超过 20 万,硬件成本不超过 10 万每年
数据库采用 Mysql
质量标准符合 ISO9001-2015 标准
3.总体架构
系统边界白盒图:
系统架构图
3.1 架构分析
3.1.1 高可用
对于学生管理系统来说,如果学籍信息丢失,将造成严重影响,且如果课程服务无法访问,将造成混乱,扰乱正常的教学活动。
综合来看,学生管理系统需要高可用性。
3.2 总体架构
1)采用业务分布式集群计算的架构,将学生管理系统按领域划分为学生子系统、课程子系统、权限子系统,分开计算。
2)每个子系统包含一台主 MySQL 和一台备 MySQL,子系统内主备数据复制,子系统间数据不同步。
3)正常情况下,MySQL 主服务器对外提供消息写入和消息读取服务,备服务器不对外提供服务
4)MySQL 主服务器宕机的情况下,备服务器对外提供消息读取的服务。
5)各子系统均为无状态服务,客户端采取轮询的策略写入和读取消息。
4.详细设计
文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限
排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。
排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上
课的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统
自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。
选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比
4.1 核心功能
4.1.1 文件上传/下载
【客户端 Role 设计】
1)客户端采用 H5 开发
2) 学生或者老师,通过客户端上传作业或者试卷到服务器
3)老师通过客户端下载作业或者试卷进行批改
【客户端和服务器的 Relation 设计】
1)客户端与服务端采用 HTTP 连接,采用 multipart/form-data 文件编码格式传递数据
2)服务器上传文件至远程的对象存储
3)客户端从远程对象存储下载文件
4.1.2 排课功能
【客户端 Role 设计】
1)客户端采用 H5 开发
2)老师或者管理员通过客户端进行排课
【客户端和服务器的 Relation 设计】
1)客户端与服务端采用 HTTP 连接,采用 json 格式传递数据
4.1.3 选课功能
【客户端 Role 设计】
1)客户端采用 H5 开发
2)学生通过客户端进行选课
【客户端和服务器的 Relation 设计】
1)客户端与服务端采用 HTTP 连接,采用 json 格式传递数据
4.2 关键设计
1)文件的存储
租用第三方的对象存储服务器,减少文件服务器的运维成本 。
2)数据存储可靠性
各子系统数据存储在 MySQL 中,每个子系统有独立的数据库实例,共享一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.3 设计规范
1)系统服务端使用 Spring Boot + H5 开发
2)MySQL 使用 Innodb 存储引擎
5.质量设计
5.1 可测试性:ELK 日志管理平台
5.2 可维护性:k8s 运维管理平台
5.3 可观测性:Prometheus+Grafana 监控平台
6.演进设计
6.1 外包项目一次性交付
评论