写点什么

架构实战营模块 3 作业

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

写出外包学生管理系统的架构文档

【作业要求】

1. 基于模块 1 第 5 课 P15 页的外包学生管理系统备选架构 1(见下 1 页),写出完整的架构设计文档;

2. 注意不是备选架构文档,而是最终落地的详细架构设计文档;

3. 无需考虑数据库表设计,因为表设计是方案设计阶段做的,不是架构设计阶段做的;

【提示】

  1. 架构设计文档是完整的文档(Word 或者语雀文档之类的都可以),而不是 PPT;

  2. 架构文档涵盖的内容请参考模块 3 第 4 课,细化架构设计参考模块 3 第 6 课;

  3. 外包学生管理系统的业务请参考模块 1 第 5 课的课件;

  4. 架构文档模板可以参考:架构实战营详细架构设计文档模板

前言

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

词汇表

Nginx:一个高性能的 HTTP 和反向代理的 web 服务器

MySQL:一个关系型数据库管理系统

RPC: Remote Procedure Call,即远程过程调用

1. 业务背景

随着学校规模的不断扩大,学生数量急剧增加,需要处理的信息也成倍增长,各类学生统计分析工作也越来越耗时、越来越困难。

学生管理系统从学生管理现状出发,根据学生管理的新需求进行设计,它主要解决学生管理数据信息量大、修改不方便,对一系列数据进行分析花费时间长等问题。学生管理系统可以通过高效率、规范化的学生信息管理,帮助学生管理人员减轻工作负担,避免人为操作导致的错误和不规范行为,进而提高信息的准确度和日常管理的工作效率。

2. 约束和限制

  1. 必须在 2021.08.30 号完成

  2. 成本不能超过 5 万

  3. 要支持至少存储 5 万个学生的数据和 1000 个学生的并发访问

  4. 学生信息不允许大面积的丢失

  5. 能够外网访问

  6. 管理员可以创建本校的教师、学生、其他角色,每个角色(除超管)的权限和功能可以动态配置

  7. 数据读写分离

  8. 不同子系统通过 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. 演进规划

一期:完成用户的所有功能,主要实现高可用

二期:实现系统的高性能

用户头像

zlz

关注

If Not Now,When? 2019.05.16 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块 3 作业