模块三作业
前言
本文是学生管理系统的详细架构设计文档,用于指导系统后续开发、测试和运维。
1. 业务背景
1. 解决问题:随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
2. 系统功能:统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能
3. 实现目标:学生信息及相关信息的系统化、规范化、自动化、便利化
4. 带来价值:提高学生管理的管理水平,优化资源,尽可能降低管理。
2. 约束和限制
1. 学校学生人数按几万人计算
2. 无需高可用,但数据需要安全
3. 项目需要控制成本
4. 一次性交付,无需考虑演化
5. 考虑技术沉淀,通用模块独立开发
3. 总体架构
3.1 架构分析
3.1.1 高性能
学校的学生总人数不会有太大的变化,并发性能要求不高。对于抢课等特殊场景来说,并发峰值也不高。
3.1.2 高可用
系统宕机不会对其日常上学产生影响,但是学生的数据不能丢失,至少数据不能全部丢失。
3.1.3 可扩展
需求较复杂,针对复杂业务需要达到可扩展
3.1.4 安全
系统不涉及金融,学生个人信息也没有包含私密信息。
结论:学生管理系统需要满足可扩展性,数据存储的高可用性。
3.2 系统架构
1. 采用分层子系统的架构,一保证了复杂业务可扩展,二有利于外包模块复用。
2. 数据存储采用 Mysql 主备模式,系统采用读写分离。主机宕机情况下,不可写入,但可以查看历史记录。备机宕机情况下,查询走主库,毫无影响。
4. 详细设计
4.1 核心功能
4.1.1 学生端系统流程
4.1.2 教师端系统流程
4.2 关键设计
4.2.1 权限安全性
权限控制维度到页面的按钮级别,所有请求的接口需要依赖权限系统验证。
4.2.2 数据可靠性
Mysql 主备采用半同步复制,如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.3 设计规范
1. 子系统开发使用 Spring Boot + MySQL +Mybatis 开发
2. 通讯 API 接口采用 http json 请求,类型全部为 POST
3. API 的 URL 中需要携带版本号
4. MySQL 使用 Innodb 存储引擎,数据库采用双主
5. 质量设计
1. 成本:预计两台 4 核 8G 服务器,每台机器每个子系统各启一个进程
2. 可测试:编写 POSTMAN 脚本测试,后期脚本回归测试
3. 可维护:crontable 脚本检测 java 进程
6. 演进规划
目前无
评论