写点什么

架构实战营 模块三 作业

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

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

【作业要求】

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

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

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

---------------------------------------------------------------------


1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。

为提高学生管理的管理水平,优化资源,尽可能降低管理成本,学校决定制作一个学生管理系统。

学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。


2. 约束和限制

  1. 学校经费有限,只能提供 4 台服务器。(1 台 nginx,1 台应用服务器,2 台数据库)

  2. 学校经费有限,只能有限的预算,经过核算,约 3-4 人,1 季度的开发周期。

  3. 学校约有 4000 的在校学生。


3. 总体架构

3.1 架构分析

  1. 高性能:不需要考虑,由于在校学生只有 4000 人左右,算上教职人员,一共 4000 到 4300 左右。每秒 QPS 基本可以忽略不计。

  2. 高可用:不需要考虑,学生和老师不会每时每刻在使用这个系统,真发生宕机了,对于恢复时间的容忍度应该是很高的。

  3. 高可靠:录入的数据需要有一定的可靠性,不能容忍全部丢失,因此需要对数据有备份。因此,设计了 mysql 的主备架构。


3.2 总体架构

  1. 数据库采用 mysql 主备架构。一台主 MySQL 和一台备 MySQL。备机正常情况下不对外服务。

  2. 业务模块由 3 个子系统组成,课程子系统、学生子系统、权限子系统,全部部署到一台业务服务器上。

  3. Nginx 作为反向代理,http 缓存服务器。负责把请求的路径映射到对应的业务子系统上,并对一些静态页面做缓存。


4. 详细设计

4.1 核心功能

4.1.1 权限子系统

包含账号分配、系统登录、权限管理功能。

  1. mysql 负责存储用户的账户信息包括密码,身份信息,权限信息。

  2. 由权限子系统的 API 服务层负责增删查改这些信息。并针对整个系统的所有请求进行身份验证及权限校验,会使用应用内本地缓存,来提高校验速度。

4.1.2 课程子系统

包含课程管理、考试管理功能。

  1. mysql 负责存储课程信息包括教材信息,课程排课信息,课程的考试信息,平时成绩,以及学生的考试成绩。

  2. 由课程子系统的 API 提供相关的增删查改功能。

4.1.3 学生子系统

包含学生选课、学生上传、下载文件功能。

  1. mysql 负责存储学生的选课信息,学生上传的文件路径,具体文件直接存储在业务服务器上。

  2. 通过权限子系统识别用户是否有权限去选课等。

  3. 通过调用课程子系统的 API 来得到课程和考试的基础信息。 


4.2 关键设计

由于学生管理系统属于常见系统,并且不涉及特别业务,所以无关键设计,每个模块的实现参考市面上的常规产品级实践。


4.3 设计规范

使用 Spring MVC 作为主要开发框架,MyBatis 作为 mysql 的 DAO 层,  以 Restful API 规范来设计对外暴露的 API 路径和管理后台的路径。


5. 质量设计

可测试性:系统异常都要捕获,并且使用 Log 记录异常日志。

可维护性:  不需要考虑,由于不是大型互联网系统,不用专门设计运维工具,直接起停服务器即可

可观测性:增加用户操作日志模块,用于查看所有人员的重要操作记录。


6. 演进规划

第 2 期,当有更多师生在系统上使用更多功能时,考虑使系统支持高可用。

第 3 期,当要把该系统 saas 化后,则需要考虑使系统支持高性能。


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

一雄

关注

还未添加个人签名 2020.03.05 加入

还未添加个人简介

评论

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