极客时间架构训练营模块三作业

前言
本文是外包学生管理系统的详细架构设计文档,用于指导系统后续的开发、测试和运维
修订历史
- 版本号:1.0;变更内容:外包学生管理系统架构文档;修订者:李晨;日期:2022.10.24 
词汇表
MySQL:关系式数据库
1.业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
2.约束和限制
- 能够支撑管理 5000 名学生 
- 数据不能全部丢失 
- 成本不能超过 20 万 
- 要考虑可扩展性 
- 系统可以容忍小于 3 小时的不可用时长 
3.总体架构
3.1 架构分析
3.1.1 高性能
能够支撑管理 5000 个学生,所以高性能 pass 掉
3.1.2 高可用
学生管理系统是辅助系统,短时间挂掉的话不会对学校的日常运行造成过大的影响
学生的数据可以丢失几条,甚至几十条,但是如果一个学校的学生数据全部都是的话,是不可以接受的
综上所述,服务高可用此阶段可以不用考虑,此阶段需要考虑的是存储高可用
3.1.3 可扩展
由于是只管理本校的学生信息,所以不会上云
该版本的业务也不会太过复杂
综上所述,根据简单原则和演进原则,可扩展并不是该阶段需要考虑的复杂度来源之一
3.1.4 成本
- 人力成本 
- 服务运行成本 
3.1.5 安全
需要考虑功能安全,例如隐私数据加密、sql 注入、跨站脚本攻击等
综合来看,需要考虑存储高可用以及功能安全
3.2 总体架构
 
 - 使用 nginx 实现后端服务的反向代理 
- 将系统拆分为三个子系统,分别是学生服务、课程服务、权限服务 
- 数据库采用 mysql,设计为主备架构,保证存储高可用 
4.详细设计
4.1 核心功能
4.1.1 学生信息查询
 
 4.1.2 学生在线选课
 
 4.1.3 评分判定
 
 4.2 关键设计
- 存储高可用 
- MySQL 采用主从架构,保证消息的存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计。DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 10 秒的时候需要及时告警并进行处理 
- 可扩展 
- 对学生管理系统进行业务拆分,拆分成三个子系统,每个子系统负责自己单独的业务逻辑 
4.3 设计规范
- 系统采用前后端分离的方式进行开发 
- 前端使用 vue 框架开发,提升开发效率 
- 后端使用 springboot 框架开发,并采用 restful 风格的 api 接口 
- 网络协议采用 https 协议 
- MySQL 使用 InnoDB 存储引擎 
5.质量设计
5.1 可测试性
各个服务的各模块接口可以不依赖外部服务独立测试
5.2 可维护性
各服务独立部署可以保证服务上下线便利性
5.3 可观测性
通过 APM 或者监控数据库来观测系统日常运行状态
5.4 成本
- 开发团队控制在 3-4 人,开发周期控制在 1-1.5 个月 
- 测试服务器数量控制在 3 台左右 
- 生产服务器数量控制在 6 台左右 
6.演进规划
6.1 一期
完成基本业务功能,保证按时开发完成并上线
6.2 二期
提升系统的服务高可用指标
6.3 三期
如果后期业务增多,复杂性提升,考虑引入微服务
版权声明: 本文为 InfoQ 作者【李晨】的原创文章。
原文链接:【http://xie.infoq.cn/article/27ff98b66fc7a010a0e618eef】。文章转载请联系作者。










 
    
评论