写点什么

外包学生管理系统架构方案

作者:Trent
  • 2022 年 4 月 21 日
  • 本文字数:1364 字

    阅读完需:约 4 分钟

外包学生管理系统架构方案

前言

本文是学生管理系统的架构设计文档,目标是指导学生管理系统的开发、测试、交付以及运维。

词汇表

Nginx:一个高性能的反向代理服务,是系统请求的入口。

MySQL:开源关系性数据库管理系统,用作结构化数据的存储。

一、业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的数据也日益增长。纯人工处理这些数据的矛盾日益凸显,主要有如下几个:

  1. 需要消耗大量的人力资源进行重复、枯燥的数据处理工作;

  2. 人工处理数据不具有稳定性,也没有固定的流程和规范,不同的人处理的质量有差别;

  3. 在数据处理的高峰时段比如开学、选课等,学生等待的时间过长。

为提高学生相关数据的管理效果,优化人力资源、稳定数据处理质量、提升数据处理效率,进而提升整体教学流程质量,一个实用的学生管理系统尤为必要。

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

二、约束和限制

  1. 2022 年 7 月 30 日前完成;

  2. 系统一次性投入成本不超过 100 万月;

  3. 处于数据安全的考虑,系统部署在学校已有机房;

三、架构设计

3.1 架构分析

下面根据业务背景对系统的扩展性、性能、可用性进行分析。

3.1.1 扩展性分析

学生管理系统的业务复杂度较低,且业务发展也较为稳定,因此,拆分成功能聚合度高的子模块进行开发即可。

3.1.2 性能分析

学生管理系统的目标用户为学生和相关的教职工,数量级为万级,且不存在特别明显的高峰,因此不需要复杂的架构来支撑性能。

3.1.3 可用性分析

学生管理系统的可用性主要体现在数据可用性,因此数据库需要是主备结构来满足这个要求。

3.2 总体架构


整个系统的入口是 Nginx,业务系统有 3 个子系统:学生子系统、课程子系统、权限子系统。数据都存储在 MySQL 中,MySQL 采用主备模式实现数据高可用。

3.3 架构详细描述

3.3.1 架构层次(rank)

如 3.2 中的架构图,整体架构分为 3 个层次,依次为 Nginx、业务系统(前端和服务端)、数据库。对于 Ngxin 和 MySQL 主要是安装、启动、配置和少量的脚本编写(运维);中间的业务系统实现业务逻辑,需要进行开发,为了提升开发效率,采用 spring-boot 技术栈进行开发,子系统间的 api 通过 restful 接口暴露,实现子系统间的交互以及前端、服务端之间的交互。

3.3.2 架构的角色(role)和关系(relation)

架构中的角色如下:

Nginx:反向代理、负载均衡,系统入口。

业务系统实现具体业务功能,其分为 3 个子系统,各个子系统的角色如下:

  1. 学生子系统,该子系统实现学生数据录入、学生注册、学生数据维护功能。

  2. 课程子系统,该子系统实现课程数据录入、选课、排课、作业下发、作业提交、课程资料发布、课程讨论功能。

  3. 权限子系统,该子系统实现角色管理、角色权限管理、用户管理、用角色管理功能。

各个子系统间的交互通过 http 协议,对外暴露 restful 的 api,提供服务能力。

MySQL:数据库,实现数据存储。为各个子系统创建各自的数据库。

3.3.3 架构的规则(rule)

系统数据初始化

系统数据初始化数据分为两块:系统运行的初始化数据由系统管理员完成,业务数据的初始化由接口老师完成。

学生数据初始化

系统正式运行后,学生数据的初始化工作由学生按系统要求自主填报,并由老师审核后生效。获得对应的权限。

课程数据维护

课程数据由学校课程维护人员按照实际教学需求维护。


用户头像

Trent

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统架构方案_架构文档_Trent_InfoQ写作社区