[架构实战营] 模块三作业
前言
本文是学生管理系统详细架构设计文档。
词汇表
Nginx:一高性能的 HTTP 和反向代理 web 服务器。
MySQL:一开源关系型数据库。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
基于以上背景,我们学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
2. 约束和限制
1.支撑 1 万学生的在线使用
2.成本不能超过 15 万
3.数据库采用 MySQL
3. 总体架构
[必选,描述经过备选架构决策后定下来的架构方案,这一章主要是描述架构的 3R:Rank、Role、Relation]
[技巧:1. 系统边界白盒图描述系统内的角色与外界的交互(Rank + Role + 外部 Relation);2. 系统架构图来描述内部的 Role + 内部 Relation]
[注意:不建议一张图同时描述系统架构的 3R 以及与外界的交互,因为图太复杂,画系统边界白盒图的时候,系统内部的 Relation 可以不画]
3.1 架构分析
对于学生管理系统来说,学校的学生一般情况在 1 万人左右,涉及的功能学生信息管理、考试管理、权限管理对于系统的高新能要求不高,对与课程管理,集中选课时有一定的性能需求。对与系统的高可用的要求上,主要是学生信息存储的高可用,避免信息丢失。
3.1.1 系统高可用
关系系统中,如果学生信息丢失,需要大量的工作重新登记录入,所以主要是存储的高可用,采用 MySQL 主备的方案,如果消息丢了,导致没有审核,然后触犯了国家法律法规,则是非常严重的事情;对于等级子系统来说,如果用户达到相应等级后,系统没有给他奖品和专属服务,则 VIP 用户会很不满意,导致用户流失从而损失收入,虽然也比较关键,但没有审核子系统丢消息那么严重。
3.1.2 系统高性能
学生选课有时间的限制,所能出现同年级的学生集中在线选课的情况,对课程管理系统有一定高并发的的要求。
3.2 总体架构
总体架构图:
1)保证系统一定的高可用,采用系统拆分架构,拆分学生子系统、课程子系统、权限子系统。
2)数据存储高可用一台主 MySQL 和一台备 MySQL,主备数据复制,保障数据不丢失。
4. 详细设计
4.1 核心功能
4.1.1 学生子系统:注册,信息查询,账号管理。
4.1.2 课程子系统:课程信息管理,选课。
4.1.3 权限子系统:账号角色管理,权限分配,账号信息管理。
4.2 关键设计
1)数据存储可靠性
学生信息存储在 MySQL 中,一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据,保证数据高可用。在此基础上可以定期对数据进行冷备,加强保障。
2)课程系统高性能
学生管理系统做任务分解,课程系统,学生系统和权限系统,做服务拆分。
4.3 设计规范
1)使用 Spring Boot 开发框架
2)MySQL 使用 Innodb 存储引擎
5. 质量设计
5.1 云服务器性能监控
5.2 成本设计
1 台 Nginx 代理服务 :2 核 4G,10G 硬盘,带宽 10M
3 台子系统服务:2 核 ,4G,20G 硬盘
2 台数据服务:2 核,8G,500G 硬盘
6. 演进规划
6.1 付费子系统,结合学生信息,管理学费缴费情况,学生住宿费用,生活缴费(水卡、饭卡、网卡)
版权声明: 本文为 InfoQ 作者【张祥】的原创文章。
原文链接:【http://xie.infoq.cn/article/8ca86ad9732e09ce6973bdbf8】。文章转载请联系作者。
评论