架构实战营 模块三 作业
前言
本文是学生管理系统详细架构设计文档,用于指导管理系统后续的开发、测试和运维
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
资源有限
数据高可用,不能全部丢失
可扩展,业务需求较为复杂
数据存储使用 MySQL
能支持 5000 人同时访问
3. 总体架构
3.1 架构分析
3.1.1 高性能
系统面向校内师生使用,支持 5000 名师生同时访问即可
3.1.2 数据高可用
防止数据库故障情况下可能导致数据丢失,需要对数据进行备份
3.1.3 可扩展
系统需求方面学生管理,课程管理,并且使用角色分为了学生和教师两种,所以还需要加上权限管理
3.1.4 安全以及隐私
系统是学校内部使用,没有涉及到证券,金融以及资金等,并且使用者为学校内部学生和老师,信息都是公开的,所以无需担心安全以及隐私方面
综合来看,系统复杂度主要在高扩展以及数据高可用两方面
3.2 总体架构
1)将系统分为学生子系统,课程子系统,权限子系统以便于后期扩展
2)数据库包含一台主 MySQL 和一台备 MySQL,进行主备复制
3)使用 Nginx 进行请求转发
4. 详细设计
4.1 核心功能
4.1.1 权限子系统
权限子系统控制账号角色以及操作权限
4.1.2 课程子系统
学生:查看课程信息,进行选课,查看考试时间,考试结果
教师:录入/查看课程信息,查看学生选课信息,录入/查看考试信息
4.1.3 学生子系统
学生:查看自己的信息
教师:录入/查看学生信息
4.2 关键设计
数据高可用,MySQL 采用主备模式防止数据丢失
高扩展,把系统分为权限子系统,学生子系统,课程子系统,便于后续的演进,并且对不同的系统进行扩容
4.3 设计规范
使用 Nginx 进行请求转发
MySQL 使用 Innodb 存储引擎
使用 PHP yaf 框架进行开发
子系统之间通过网络进行通信
子系统之间通信数据格式使用 json
5. 质量设计
5.1 可维护
管理后台可查看访问量,可查看系统负载,CPU 使用率,内存占用,MySQL 使用,SQL 慢查
可针对某个子系统进行扩容
5.2 成本
开发成本,开发时间预计 3 人月,测试预计时间 3 人月,共计 6 人月
服务器可使用阿里云服务器和阿里云 MySQL 服务器
5.3 安全方面
需要防止 SQL 注入,防止 xss 攻击,系统不可部署在服务器超级管理员权限下面,MySQL 进行权限控制,与外网隔离
6. 演进规划
6.1 学生管理系统一期
在课程子系统中增加网课功能,学生可以通过在线网课达到学习的目的
6.2 学生管理系统二期
增加考试子系统,学生可以查看考试信息,考试成绩,查看往期考试券,进行考试报名等操作
评论