模块 3 作业
学生管理系统架构设计
一、前言
本文是学生管理系统架构设计文档, 用于指导外包学生管理系统后续的开发、测试和运维.
二、词汇表
2.1、Nginx
Nginx (engine x)是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,是一个很强大的高性能 Web 和反向代理服务
2.2、Mysql
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
三、业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。学生管理系统是为提高学生管理的管理水平,优化资源,并尽可能降低管理成本。从学生管理现状出发,根据学生管理的新要求进行开发设计,解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等一系列问题,并帮助学生管理人员有效管理学生信息。该系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。学生管理系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
四、 约束和限制
必须在两周内完成
服务器费用不能超过 10 万
维护成本一年不超过 2 万
数据库必须用 mysql
必须有负载均衡
必须有高可用方案
必须可以满足 2 万学生同时在线
五、 总体架构
5.1、架构分析
学生管理系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
5.2、总体架构
架构设计分为 3 层, 网关层、业务层、数据层
网关层:
使用 Nginx 作为服务器网关,主要用于请求的负载均衡与服务路由分发,学生信息的相关请求路由到学生子系统,课程信息、考试相关的请求路由到课程子系统,教师、权限相关的请求路由到权限子系统。
业务层:
业务服务层由三个子系统组成:学生子系统、课程子系统、权限子系统。
数据层:
数据层由一主一备两台 Mysql 数据库服务器组成,主数据库负责日常所有业务数据的读写,并实时备份数据到备库,备份方式使用 binlog 异步同步。备库负责存储备份数据并在主库出现故障时临时切换到备库,保障可用性.
根据架构分析采用的总体架构图如下:
六、 详细设计
6.1、核心功能
学生管理系统总体划分为三个子系统:学生子系统、课程子系统、权限子系统。
学生子系统:包括系统登录信息、账号分配、账号绑定、组织管理层级、文件上传/下载、信息查询等子功能模块;
课程子系统:包括课程录入、选课功能、排课功能、教材选择等子功能模块;
权限子系统:包括成员权限组、成员信息修改权限、成绩查看权限、超级管理权限、考试信息管理权限等子功能模块
6.2、关键设计
nginx 请求路由
三个子系统的 http 请求链接中,分别加不同的关键字,如学生子系统-查询学生信息链接:http://www.stuMgmt.com/stuSubSys/queryStuInfo.html,课程子系统-查询课程信息链接:http://www.stuMgmt.com/stuCourseSys/queryCourseInfo.html,这样在 nginx 路由配置时只需要基于关键字配置路由的子系统指向即可。
数据存储可靠性
采用主备的数据库架构,可以在很大程度上保证数据的可靠性。在主备节点复制中,主节点发生宕机,并出现数据损坏的情况,可不做考虑,概率极小,而且实际的业务操作,会有纸质的逻辑可以对照。
6.3、设计规范
nginx 配置管理规范
mysql 主备配置规范
java 开发应用模块规范
七、 质量设计
7.1、可测试性
每个子系统在具体的研发设计阶段根据设计好各功能细节,并配备各功能介绍,并配套详细测试方案.
7.2、可维护性
学生管理系统有管理后台进行维护, mysql 数据库有 web 管理后台方便管理员进行相关操作.
7.3、可观测性
对访问流量、访问/操作日志、服务器性能指标、数据库连接及主备数据库状态均可用通过控制台进行数据化观测及监控.
7.4、成本
根据成本约束条件在服务器选择方面可直接选择 aws 云服务满足功能需求,达到成本控制目的.
八、 演进规划
I 期建设目标: 第 1 周完成学生注册、管理、课程、权限等管理上线;
II 期假设目标: 第 2 周完成考试、考核奖惩、成绩统计等功能上线.
评论