写点什么

架构实战营 - 模块三作业

作者:随风King
  • 2021 年 11 月 11 日
  • 本文字数:1522 字

    阅读完需:约 5 分钟

前言

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

 

词汇表

DNS:域名解析服务器

Nginx: 高性能的 HTTP 和反向代理 web 服务器

Java:一门面向对象的编程语言

MySQL:关系型数据库管理系统

 

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,人工管理方式处理效率也十分低下,需要优化提高学生管理水平优化资源。

从 0 到 1 的构建业务系统。

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

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

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

 

2. 约束和限制

1.使用高校已有 DNS 服务器或 Nginx 服务器。

2.成本需要用到 1 台服务器作为业务服务器,2 台数据库做主备。

3.数据库采用 MySQL。

4.编程语言采用 Java。

 

3. 总体架构

3.1 架构分析

3.1.1 高性能

对于学校的学生人数是有人数上限,服务器性能足够处理,不需要过多考虑高性能设计。   

3.1.2 高可用

对于学校的教学不完全依赖学生管理系统,服务器宕机影响不大;对于学生管理系统来说,如果学生相关数据丢失,导致需要人工重新录入是浪费资源和时间成本的,数据需要每日定时备份。

3.1.2 可扩展

系统可扩展相对比较复杂度,系统不容易理解。

学生子系统:学生管理

课程子系统:课程管理、考试管理

权限子系统:权限管理

 

综合来看,学生管理需要可扩展,业务需求比较复杂,多人协同开发需要对模块进行划分学生管理、课程管理、考试管理和权限管理;学生管理需要高可用性,包括写入、存储、读取都需要保证高可用性。

 

3.2 总体架构



1)使用 nginx 做反向代理,统一对外出口,对内根据业务类型分配请求。

2)根据学生管理系统业务类型分成学习子系统、课程子系统和权限子系统。

3)数据库采用 MySQL,数据架构采用的主备架构,主备数据复制。

4)正常情况下,主服务器对外提供消息写入和消息读取服务,备服务器不对外提供服务。

5)主服务器宕机的情况下,备服务器对外提供消息读取的服务。

 

4. 详细设计

4.1 核心功能

1)学生子系统

1 系统登录流程

2 账号分配流程

3 账号绑定流程

4 组织管理层级流程

5 信息查询流程

2) 课程子系统

     1 课程录入流程

     2 选课功能流程

     3 排课功能流程

     4 评分判定流程

3)权限子系统

     1 注册审核流程

     2 教师上传考题流程

 

4.2 关键设计

1)存储高可用

在 MySQL 中,有一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计。

2)可扩展

业务复杂度较高,需要多人协同,需要对相应模块进行划分,保证业务子系统的隔离。

3)安全

面向单个学校,安全不需要过多考虑。

 

4.3 设计规范

1)业务服务器使用 Spring Boot + Netty 开发

2)MySQL 使用 Innodb 存储引擎

3)交互协议采用 HTTP

4)数据格式采用 JSON

 

5. 质量设计

5.1 运维管理后台。

5.2 成本。

5.3 日志,命令行测试不需要。

5.4 监控系统不需要。

 

6. 演进规划

6.1 一次性交付,无需考虑太多后期演化;

6.2 学校的学生数量不会发生很大变化,系统架构够用多年。

发布于: 2021 年 11 月 11 日阅读数: 3
用户头像

随风King

关注

还未添加个人签名 2020.08.24 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块三作业