写点什么

模块三作业

用户头像
potti
关注
发布于: 1 小时前

前言

本文是学生管理系统的详细架构设计文档,用于指导系统后续开发、测试和运维。

 

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. 演进规划

目前无

 

用户头像

potti

关注

还未添加个人签名 2017.10.19 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业