模块三
外包学生管理系统详细架构设计文档
前言
本文是外包学生管理系统详细架构设计文档,用于知道外包学生管理系统后续的开发,测试,运维。
词汇表
无
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系。
2. 约束和限制
l 3 个月完成
l 成本不能超过 30 万
l 数据库使用 mysql8.1
3. 总体架构
3.1 架构分析
3.1.1 业务隔离
整个系统按照业务类型划分为学生系统,课程系统,权限系统并且分别部署至不同的服务器,由 nginx 网关进行业务数据请求的分发,各系统互不影响。方便后期升级与维护。
3.1.2 高可用
因为学生的相关数据很重要,只能少部分丢失,系统使用 mysql 主备模式部署,在成本范围内极大的保证了数据的高可用。
3.1.3 可扩展
因为业务是相互隔离,所以有新业务的话,只需要在 nginx 上做个代理即可,不会影响原有的业务。
3.2 总体架构
图 2.系统架构图
1. 采用业务隔离架构,按业务类型进行分组,由 nginx 按分组进行请求数据代理,各组共享数据库。
2. 数据库按主备模式部署,如果主机出现故障立即启动备机。
4. 详细设计
l 客户端 Role 设计
客户端采用 javascript 语言开发,基于 ajax 和服务端通信。
l 服务器 Role 设计
1. 服务器端采用 golang 语言开发,使用 http 网络模块,提供 CRUD 接口。
2. 使用 github.com/go-sql-driver/mysql 模块与 mysql 交互。
l 客户端和服务器的 Relation 设计
客户端和服务器端使用 http 进行数据交互
l MySQL 的 Role 和 Relation 设计
Mysql 采用主备模式部署,使用主从方式同步数据。
4.1 核心功能
4.1.1 学生信息请求流程
1. 客户端将以 student 开始的 url 发送至 nginx 网关处,并将处理结果返回。
2. Nginx 根据 url 的前缀 student 将此请求转发只学生管理系统对应的服务器,并将处理结果返回。
3. 学生管理服务器接收请求根据 method 进行相应的操作。如果 method 是 POST|PUT|DELETE,需要对 mysql 进行相应的操作,并将处理结果返回。
4. Mysql 接收 sql 操作并执行,并将处理结果返回。
4.1.2 课程信息请求流程
1. 客户端将以 class 开始的 url 发送至 nginx 网关处,并将处理结果返回。
2. Nginx 根据 url 的前缀 class 将此请求转发只课程管理系统对应的服务器,并将处理结果返回。
3. 课程管理服务器接收请求根据 method 进行相应的操作。如果 method 是 POST|PUT|DELETE,需要对 mysql 进行相应的操作,并将处理结果返回。
4. Mysql 接收 sql 操作并执行,并将处理结果返回。
4.1.3 权限信息请求流程
1. 客户端将以 authority 开始的 url 发送至 nginx 网关处,并将处理结果返回。
2. Nginx 根据 url 的前缀 authority 将此请求转发只权限管理系统对应的服务器,并将处理结果返回。
3. 权限管理服务器接收请求根据 method 进行相应的操作。如果 method 是 POST|PUT|DELETE,需要对 mysql 进行相应的操作,并将处理结果返回。
4. Mysql 接收 sql 操作并执行,并将处理结果返回。
4.2 关键设计
l 信息存储可靠性
存储使用 mysql,mysql 采用主备模式部署。通过主从方式将将业务操作数据同步至备机,在成本范围内最大程度保证数据可靠。
l 可扩展性
因架构模式是按业务类型划分的,所以扩展不同类型业务时,和容易融合到当前系统。
4.3 设计规范
l Mysql 使用 innodb 存储引擎。
l 客户端和服务端使用 restful api 通信,通信内容结构使用 json 格式。
l 服务端 restful api 处理使用 go-restful 库
5. 质量设计
l 可测试性
整个系统使用 restful api 进行交互,可以编写测试脚本快速验证系统稳定性。
l 可维护性
使用业务隔离方式部署,业务少,部署容易,排查问题快。
l 可观测性
提供 web 页面,可以清晰看到系统各业务信息,通过 web 页面进行业务配置。
l 成本
按照成本控制设计系统,满足数据存储高可用。
6. 演进规划
l 一期
1. 使用 restful api 进行客户端与服务端进行数据交互。
2. 网关 nginx 使用单机部署。
3. 各业务系统单机部署。
l 二期
1. 客户端和服务端数据交互增加 grpc 方式。
2. 各业务系统支持降级处理。
评论