写点什么

模块三

用户头像
Winston
关注
发布于: 20 小时前
模块三

外包学生管理系统详细架构设计文档

前言

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

词汇表

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. 各业务系统支持降级处理。

 

用户头像

Winston

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

发布
暂无评论
模块三