模块三外包学生管理系统架构文档
前言
本文为学生毕业设计作业,用于指导学生管理管理系统的后续开发、测试和运维
词汇表
1、业务背景
随着全国各个学校加快信息化,各个学校急需一套完善的学生管理系统,加上学生管理系统的主要功能大体一致,全国学校数量庞大,幼儿园 21 万所,九年义务教育学校 21w 所,高中 2.4w 所,大学高校 2000 多所,所以开发一个外包的学生管理系统拥有极大的商业价值。经过分析该业务为典型的多商户类型的网站,为满足各个学校之间的差异性,系统采用服务拆分已满足今后的业务扩展性问题。
2、约束和限制
1、使用 java 语言做开发语言
3、总体架构
3.1、架构分析
3.1.1 高可用
鉴于本体统设计的是为多商户的系统,覆盖人数可能会达到一个比较可观的规模,如果可用性过低会导致外界口碑太差影响业务的规模,学生信息的录入一般采用集中录入或者学生自己注册,如果数据丢失重新恢复就非常麻烦,所以需要满足系统的高可用性,至少前期数据库的高可用性必须要满足。
3.1.2 高性能
学生管理系统,平时用户使用的频率比较低,只有在高校选课以及查询课程成绩的时候才会有比较多的用户访问量,鉴于各个学校的选课时间以及查询考试成绩的时间比较集中,如果后期用户量增长用户的集中访问,必然会导致系统的性能下降,所以需要系统满足高性能。
3.1.2 可扩展
因为是多商户系统,每个学校之间必然会有各自的细微差别的业务需求,为满足各个学校之间的业务需求,前期系统采用服务拆分架构,后期商户多了,可以考虑使用微服务,以提高系统的扩展性。
3.2、总体架构
1、系统采用服务拆分集群,初期拆分为学生系统、课程系统、权限系统三个业务集群。
2、学生系统、课程系统依赖权限系统,权限系统作为整个系统的核心基础。
3、业务初期 mysql 采用主备架构,一台主库和一台备库。正常情况下主库对外提供数据的读写服务,备库不对外提供服务。
4、主库故障,备库对外提供服务。
4、详细设计
本系统核心功能权限系统,管理员在管理后台分配权限后,由管理员统一录入或者是用户自行注册登录后,通过后台分配的权限,在学生系统和课程系统中可以访问想相应的功能
4.1、核心功能
4.2、关键设计
1、用户信息存储可靠性
采用主备架构,业务正常情况下,由主库提供服务,在主库故障的情况切换备库对外提供服务。因为主备原因,所以需要监控备库的同步情况,在备库同步数据落后于主库过多时可以采用邮件、微信等形式进行预警通知。
2、课程系统选课高性能
选课服务在管理后台发布选课内容之后,将选课信息以及数量使用 reids 进行集中缓存进行存储。当用户进行并发选课时,可以暂时先使用 redis,提供的队列功能进行削峰处理避免并发计算导致系统的急剧下降。
3、成绩查询高性能
老师发布学生成绩之后,将学生成绩全部用 redis 进行缓存存储。
4.3、设计规范
1、应用系统使用 spring cloud alibaba 版本使用 2021.1
2、MySQL 使用 Innodb 存储引擎
3、系统通信协议采用 http
4、系统间交互数据格式采用 json 交互
5、涉及数据序列化采用 spring 自带的 jaskson 序列化
6、各个系统的启动命令行、日志、关闭、基础工具类以及相关基础功能统一提供一个 core 包,在三个系统使用,禁止各个项目自定义相关功能。
7、系统交互 json 格式统一
{
"requrestId":"123456",
"code":123,
"data":{},
"message":"success"
}
5、质量设计
1、提供用户管理后台
2、搭建 ELK 日志管理后台
3、搭建 jenkins 构建、发布平台
6、演进规划
1、一期满足用户的功能
2、二期学校入驻数量增加,为提高性能、可用性需要引入微服务相关治理服务以及监控服务
评论