写点什么

模块三作业 - 学生管理系统架构文档

作者:alan
  • 2021 年 12 月 25 日
  • 本文字数:1695 字

    阅读完需:约 6 分钟

学生管理系统详细架构文档

 

前言

     本文是学生管理系统的详细架构设计文档,用于指导系统的后续开发、测试和运维。

 

词汇表

Nginx:一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。

Mysql:开源关系型数据库

 

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

 

2. 约束和限制

1.   能够支撑管理 1000 个学生;

2.   成本不超过 100 万;

3. 总体架构

 

3.1 架构分析

1.   系统并发度分析

需求要求支持 1000 学生,则假设师生比为 1:20,则有教师用户 50 人,系统总用户数为 1050 人;

在线比例约为 5%~20%,则在线人数约为 50~200 人;

系统并发请求比例按照 10%-20%来计算,则系统并发请求 QPS 约为 5~40。

由此得知,系统并发压力较小;

2.   业务复杂度分析

业务需求比较复杂,且未来存在需求大量变动的可能性,需要保留一定的扩展性;

3.   数据复杂度分析

数据要求不能全部丢失,故需要对存储模块进行高可用设计;

 

3.2 总体架构

系统架构图如下:


系统主要分为三层:

l  第一层负载均衡和服务转发层,包含一台 nginx 服务器

l  第二层为应用层,分为学生子系统、课程子系统、权限子系统三个模块,各模块分别运行在一台独立服务器上;

l  第三层为存储层,包含一台主 MySQL 和一台备 MySQL,主备数据复制;

 

客户端将服务请求发生至 Nginx 服务器;

Nginx 将服务请求分发至各应用服务器;

学生子系统、课程子系统、权限子系统三台应用服务器连接存储层,进行数据的读写操作;

主服务器对外提供消息写入和消息读取服务,备服务器不对外提供服务;主服务器宕机的情况下,备服务器对外提供消息读取的服务。

 

4. 详细设计

4.1 核心功能


客户端发送访问请求至 Nginx 服务器。

Nginx 服务器将请求转发至学生子系统或课程子系统;

如该请求需要权限认证,则学生子系统和课程子系统将访问权限子系统,进行鉴权操作;通过后访问存储模块,之后将结果返回给客户端;

 

4.2 关键设计

1.     数据存储可靠性

数据存储在 MySQL 中,包括一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

2.     应用系统设计

     应用系统拆分为三个子系统,以提升整体性能和可用性;降低单台服务器发生故障后的不良影响;

 

4.3 设计规范

1.   学生子系统、课程子系统、权限子系统采用 java 语音编写,使用 springboot 框架,使用 JDBC 连接数据库;

2.   Mysql 使用 Innodb 存储引擎;

 

5. 质量设计

Ngxin 服务转发层

Nginx 业界应用广泛,其可测试性、可维护性、可观测性良好,成本低廉;

应用层

学生子系统、课程子系统、权限子系统采用 java 编写,使用 springboot 框架,业界应用广泛,其可测试性、可维护性、可观测性良好,开发成本较低;

存储层

Mysql 为业界广泛使用的开源关系型数据库,可测试性、可维护性、可观测性良好,开发成本较低;

 

6. 演进规划

近期规划:

1.   采用外购 CDN 服务的方式来提升静态信息的访问速度;

 

中远期规划:

1.   采用应用服务器集群的方式,提升应用服务性能;

2.   考虑到诸如抢课等特殊高并发场景,引入 Redis 服务器,降低对数据库的压力;

 

用户头像

alan

关注

还未添加个人签名 2021.11.02 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业-学生管理系统架构文档