外包学生管理系统架构文档
前言
随着学校的规模不断扩大,学生数量的增加,需要处理的信息也日趋增大。为提高学生管理的管理水平、设计学生管理系统来解决学生信息管理数量信息量大、修改不方便,对数据难以进行分析等问题。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规划化、自动化
修订历史
词汇表
1. 业务背景
随着学校的规模不断扩大,学生数量的增加,需要处理的信息也日趋增大。为提高学生管理的管理水平、设计学生管理系统来解决学生信息管理数量信息量大、修改不方便,对数据难以进行分析等问题。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规划化、自动化,主要任务是统计学生各类信息,进行日常的管理,如学生信息的增删改查以及学生选课和成绩查询等功能
2. 约束和限制
1.必须在 2022.09.1 号前完成
2.成本不能超过 100 万
3.数据库采用 Oracle
4.质量标准符合 ISO9001-XXXX 标准
5.必须支持管理 20000 个学生
3. 总体架构
3.1 架构分析
高性能:对于学生管理系统来说,总学生应该也就几万人,对学生管理系统的要求不高;针对一些抢课或者考试成绩查分等场景,并发也不会超过 500,对于一个系统的处理性能要求也不高。
高可用:学生信息不能全部丢失,对于数据的储存稳定性要求比较高,对于服务器宕机几个小时并不会特别有影响
可扩展:需要对接学生、以及学生的成绩,后续还有教师的课程以及选课等业务,需要考虑后续业务发展
成本、安全:由于只在一个学校中使用,服务器成本应该不高;由于系统中不涉及学生、教师等的私密信息,不涉及资金流转,安全性上的要求也不算高。
3.2 总体架构
网关层:
Nginx 作为网关,通过公网域名访问网站,使用 nginx 转发到下游服务器
服务层:
包含三个微服务,学生微服务、课程微服务以及权限微服务,教师和学生的权限不一样,需要对其进行权限管理
数据层:
数据层通过一主一从两台 MySQL 数据库服务器来组成,主服务器负责日常所有业务数据的读写,并实现主备数据同步,发生故障时可以进行主备切换。
因为学生信息比较重要,且不能丢失,通过主备服务来保证数据的可用性
4. 详细设计
4.1 核心功能
4.1.1 查询基本信息
判断当前登陆用户权限
学生和教师的权限不一致,教师可以查询所授课程以及学生信息,学生只能查询自己的信息
4.1.2 考试分数管理
判断当前登陆用户权限
教师可以进行分数的上传、修改以及查询
学生只能进行分数的查询
4.2 关键设计
主备 MySQL 设计:
通过主备 MySQL 来保证数据的高可用性,保障学生信息不会轻易丢失,同时保障大部分时间数据是可用的
4.3 设计规范
1) 数据交互采用 Json 格式
2) 服务层采用 Java 语言开发
3) 数据库使用 Mysql 5.7 版本 存储引擎采用 innodb 存储引擎
5. 质量设计
可测试性:
http 接口建立 postman 测试用例。
Dubbo 接口通过 Dubbo 管理控制台建立测试用例。
超级管理员具有学生信息、教师信息、权限信息的删除权限,这样能保证测试后的一些测试脏数据可以通过超级管理员进行删除。
可维护性:
Dubbo 具有控制台进行管理。
mysql 可通过运维控制台进行管理。
可观测性:
系统性能观测,Dubbo、zookeeper、服务器、mysql 等,使用云平台提供的控制台进行系统监控。
业务数据由于没有多少,不需要监控。
成本:
目前云服务器的成本还是比较低的,而且由于性能要求不高,整体服务器可以选普通的服务器即可。
6. 演进规划
一期完成学生的基础信息管理以及课程服务和权限服务等功能
二期完成选课以及考试成绩录入以及查询等功能
评论