模块三作业
前言
本文是极客时间架构师训练营模块三作业。具体内容为外包学生管理系统备选架构一的详细架构设计文档。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
系统可以容忍小于一小时的不可用时间
数据库采用 MySQL 主备架构
项目开发周期一个月
3. 总体架构
3.1 架构分析
采用 Nginx 作为反向代理把请求转发给对应子系统。
各个子系统独立部署,互不影响。
系统只服务于单个学校,并发访问量不高,所以没有特别针对高性能进行设计。
本方案未考虑服务高可用,容忍一小时以内的服务宕机。
本方案主要考虑数据高可用,保证数据不完全丢失,但不能保证一个同步周期内新增数据的安全性。
4. 详细设计
4.1 核心功能
4.1.1 个人信息与认证模块
账号分配;
用户名密码登录、第三方账号绑定;
账号找回;
个人信息管理;
4.1.2 学生模块
选课;完成作业;参加考试;
4.1.3 教师模块
创建考试;布置作业;
4.1.4 辅导员模块
查询学生信息;设置奖惩;
4.1.5 管理员模块
课程教材录入;审核信息更新;
4.2 关键设计
系统拆分为学生,课程,权限三个子系统。子系统间独立部署共享用户 session。
数据库采用主备方案保证数据安全。
4.3 设计规范
系统采用前后端分离,容器化部署。
子系统间交互分为同步和异步两种:
1)同步交互采用 RESTful 接口
2)异步交互采用消息队列
应用开发采用 SpringBoot,数据库采用 MySQL 主备
5. 质量设计
5.1 可测试性
各个子系统各模块接口可以不依赖外部服务独立测试。
5.2 可维护性
各子系统独立容器化部署可以保证服务上下线便利性。
5.3 可观测性
通过日志系统,APM,以及监控告警来观测系统日常运行状态。
5.4 成本
不涉及。
6. 演进规划
6.1 学生管理系统一期
实现三个子系统业务正常上线运行,保证数据安全。
6.2 学生管理系统二期
实现整个系统高可用。
评论