架构实战营
前言
用于指导实现外包学生管理系统,以及管理系统的部署,运行,维护
词汇表
NGINX:反向代理服务器
MYSQL:关系型数据库,用于存储数据
1. 业务背景
随着学校规模扩大,学生数量增加,课程增加,管理成本大幅增加
1. 学生信息管理数据信息统计慢,不方便
2. 学生选课、成绩查询学生自己去问或者等通知,浪费时间
基于以上原因,需要设计一个学生管理系统,辅助管理,提高管理水平
3. 约束和限制
1. 项目期限:2022.01.29
2. 成本不得超过 20 万
3. 支持 5 万个学生和 1000 个学生并发访问
4. 数据库限制 Mysql
5. 数据要有备份,尽量不丢失
3. 总体架构
3.1 架构分析
3.1.1 将业务拆分为三个子系统
3.1.2 数据库采用主备架构,避免数据丢失
3.1.3 使用 Nginx 反向代理,方便部署
3.2 总体架构
1. Mysql 数据库主备
2.将业务分为三个子系统,学生子系统是访问频率最高,然后课程子系统大多数时候访问量不大,不过课程选课开启,会有瞬时高访问量。权限控制系统最重要,不能出错。
3.客户端访问时,根据业务分发到不同的子系统处理
4. 详细设计
4.1 核心功能
4.2 关键设计
1. Nginx 网关:使用 nginx 进行反向代理,对以后系统的扩展性,可靠性有了保证
2.使用 MySQL 数据库:学生数据很适合采用关系数据库,而且便宜,采用主备架构,避免数据丢失
3.各个子系统可以有各种不同语言的实现,方便外包
4.3 设计规范
1. MySQL 使用 Innodb
2.接口遵循 restful
5. 质量设计
可测试性:
每个子系统单元测试
子系统对外接口规范,可进行接口测试
可维护性:学生信息系统管理后台
可观测性:云服务器厂商提供
6. 演进规划
第一期:实现各个子系统的功能,并且单元测试通过
第二期:系统架设完毕,并且联调通过
第三期:实现运维平台,使学生管理系统可以随时更新
评论