写点什么

架构实战营第一期 -- 模块三作业

用户头像
clay
关注
发布于: 3 小时前

前言

学生管理系统详细架构设计文档。


词汇表


1. 业务背景

学生管理系统主要应用于学校学生的信息管理,实现学生信息管理的系统化,规范化和自动化,通过对学生相关信息,例如学籍、课程、成绩等方面的管理,提高学校的管理以及学生学习的效率。

2. 约束和限制

3. 总体架构


3.1 架构分析

3.1.1 高可用

因为该系统对学生信息的管理只是起辅助作用,即便系统宕机,学校仍然可以进行上课、考试等,所以对系统的高可用要求并不高。但是如果数据丢失,重新录入数据会很麻烦,对存储系统的高可用的要求比较高,所以采用 MySQL 的主备模式。

3.1.2 高性能

学校在校学生人数最多为几万人,单体结构加 MySQL 单机足以满足性能需求。

3.1.3 成本

因为总体对性能和高可用性要求不高,大概需要 6 台机器即可,成本不高,不需要额外做更多的考虑。

3.1.4 安全

虽然都是公开的数据,但仍然需要保护好数据,防止篡改。需要做好权限管理。

3.1.5 可拓展性

学校的需求变化频率较高,拆分成子系统,易于修改,或通过添加子系统来实现新功能的开发。


3.2 总体架构

1)将系统拆分成 3 个子系统。分别是学生子系统,课程子系统,权限子系统。

2)子系统前端采用 Nginx 做反向代理,将不同的请求分配到对应子系统的服务器中。

3) 三个子系统使用同一个数据库进行数据存储。

4)存储系统采用 MySQL 主备的模式,以保证大部分的数据不丢失。


4. 详细设计

4.1 核心功能

4.1.1 学生子系统

1. 系统登录

2. 账号分配

3. 账号绑定

4. 组织管理层级

5. 文件上传/下载

6. 信息查询


4.1.2 课程子系统

1. 课程录入

2. 选课功能

3. 排课功能

4. 教材选择

5. 试卷区域分割。

6. 平时成绩

7. 评分判定


4.1.3 权限子系统

1.系统使用者有学生、教师、管理员、辅导员。

2.学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。

3.学生只能查看自己的成绩,教师可以修改学生的成绩。

4.辅导员可以查看学生的信息,可以设置学生的奖惩信息。

5.教师可以上传考试试题,学生可以做题


4.2 关键设计

4.2.1 MySQL 主备模式

由于数据丢失的结果比较难以接受,所以采用 MySQL 主备模式,保证数据的安全。

4.2.2 JWT

由于拆分为 3 个子系统,每个子系统部署在不同的机器上,且系统没有引入 redis 等缓存组件,所以

设计使用 jwt 作为授权校验和记录用户状态。


4.3 设计规范


1)使用 HTTP 协议通信。(ABNF)详细描述包括 header、message-body 的详细格式...。

2)采用 ubantu。

2))使用 spring boot 集成 spring mvc 和 mybatis。

2)JWT 做授权校验和状态管理。

2)接口命名规范。...。

2)代码管理规范。使用 git 做版本控制,确定 workflow、commit 模板、change log、tag 命名等。...

3)代码编写规范。...。

4)项目文档规范。项目关键信息记录,子系统负责人、技术文档 ...。

5)数据库规范,建表规范(数据引擎,字符集、行格式等)、字段命名规范 (字符集、类型、长度等)、索引命名 &创建规范...。

6)发版规范。...。

8)生产操作规范。...。

...


5. 质量设计

5.1 各子系统页面上的功能测试。

5.2 接口测试。

5.3 单元测试及覆盖率要求。


6. 演进规划

预估在发布第一个版本后系统架构在比较长的时间内不再进行大的演变。

下面列出项目开发关键节点:

  1. 权限子系统编码,单元测试,部署。

  2. 权限子系统测试。学生子系统编码,单元测试,部署。

  3. 学生子系统测试。课程子系统编码,单元测试,部署

  4. 学生管理系统整体测试。

  5. 正式发布第一个版本。


发布于: 3 小时前阅读数: 8
用户头像

clay

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营第一期 -- 模块三作业