架构实战营模块 3 作业
写出外包学生管理系统的架构文档
【作业要求】
1. 基于模块 1 第 5 课 P15 页的外包学生管理系统备选架构 1(见下 1 页),写出完整的架构设计文档;
2. 注意不是备选架构文档,而是最终落地的详细架构设计文档;
3. 无需考虑数据库表设计,因为表设计是方案设计阶段做的,不是架构设计阶段做的;
【提示】
架构设计文档是完整的文档(Word 或者语雀文档之类的都可以),而不是 PPT;
架构文档涵盖的内容请参考模块 3 第 4 课,细化架构设计参考模块 3 第 6 课;
外包学生管理系统的业务请参考模块 1 第 5 课的课件;
架构文档模板可以参考:架构实战营详细架构设计文档模板
前言
本文是外包学生管理系统的详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。
词汇表
Nginx:一个高性能的 HTTP 和反向代理的 web 服务器
MySQL:一个关系型数据库管理系统
RPC: Remote Procedure Call,即远程过程调用
1. 业务背景
随着学校规模的不断扩大,学生数量急剧增加,需要处理的信息也成倍增长,各类学生统计分析工作也越来越耗时、越来越困难。
学生管理系统从学生管理现状出发,根据学生管理的新需求进行设计,它主要解决学生管理数据信息量大、修改不方便,对一系列数据进行分析花费时间长等问题。学生管理系统可以通过高效率、规范化的学生信息管理,帮助学生管理人员减轻工作负担,避免人为操作导致的错误和不规范行为,进而提高信息的准确度和日常管理的工作效率。
2. 约束和限制
必须在 2021.08.30 号完成
成本不能超过 5 万
要支持至少存储 5 万个学生的数据和 1000 个学生的并发访问
学生信息不允许大面积的丢失
能够外网访问
管理员可以创建本校的教师、学生、其他角色,每个角色(除超管)的权限和功能可以动态配置
数据读写分离
不同子系统通过 CAS 统一登录认证
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于学生管理系统来说,如果大量学生数据丢失,重新补录会耗费大量的人力成本,降低用户使用系统的积极性,而对于丢失少量用户数据是可以容忍的。学生和老师的主要教务工作都是在线下进行的,因此在整个系统服务短时间不可用的情况下,不会产生太大的影响,因此允许 2 个小时内的宕机。
3.1.2 高性能
学生管理系统的使用人员不会太多,基本小于 10 万,除了在选课、考试等高峰期会产生一定的并发,但是并发也不会太高,因为前期不用太考虑性能问题。
3.2 总体架构
整个学生管理系统分成三个子系统:权限子系统、学生子系统、课程子系统
权限子系统,主要负责统一身份认证、账号管理、角色管理、每个角色的权限分配。
学生子系统,主要负责维护学生的学籍相关信息。学生可以修改自己的基本信息、绑定第三方账号以及记录自己课堂笔记和日常作业等相关信息;老师可以管理学生的学籍信息。
课程管理系统,主要负责完成排课管理、试卷管理、成绩管理以及课程管理。老师可以在上面进行排课、管理课程、录入成绩、布置/批改作业;学生可以查询课程、成绩、课表等信息并完成老师布置的作业。
4. 详细设计
4.1 核心功能
4.1.1 系统登录认证流程
4.2 关键设计
数据存储可靠性
数据存储在 MySQL 中,采用主从的架构形式,实现读写分离。
统一身份认证
4.3 设计规范
1 前后端分离,前端用 Vue,后端用 Laravel 框架
2 MySQL 使用 Innodb 存储引擎,进行读写分离
3 后端 API 接口统一请求参数和返回参数的结构及拼写规范,如:参数名多个单词用“_”分隔。
5. 质量设计
可测试性:单元测试用例
可维护性:详细的设计完档、部署文档、系统宕机可以快速重启
可观测性:操作日志、系统异常预警
成本:控制在 5 万以内
6. 演进规划
一期:完成用户的所有功能,主要实现高可用
二期:实现系统的高性能
评论