架构实战训练 模块三
前言
本次开发需求是实现一套外包学生管理系统,本文档在基于已确定的架构选型下,进行详细架构的描述和说明,用于指导后续架构设计的落地实现。
词汇表
kratos: go 语言开源 web 框架
Json: 一种轻量级序列化方案
MySQL:是一个数据库管理系统,也是一个关系数据库。
Nginx:是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器。
1. 业务背景
1.1 主要问题
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
1.2 目标
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
2.1. 必须在 8.30 号完成。
2.2. 使用云服务器。
2.3. 数据库使用 Mysql
2.4. Go 语言为开发语言
3. 总体架构
3.1 架构分析
3.1.1 高可用
学生要进行正常的生活学习,高可用需要进行保证。
3.1.2 高性能
考试完成成绩查询的时候会出现峰值,这个时候增加云服务器提高性能服务,其它的时候可以不用考虑高性能。
3.1.3 可扩展
可扩展方面,没有过多的需求,当前系统架构即可支持上万量的学生使用,如果后续要扩展直接进行服务器的升级即可。
综合来看,学生管理系统需要高可用性,包括消息写入、消息存储、消息读取都需要保证高可用性。
3.2 总体架构
4. 详细设计
4.1 核心功能
主要分为三个子系统,学生子系统,课程子系统,权限子系统。
4.2 关键设计
4.2.1 可扩展性
将整个系统拆分为多个子系统,从而保证系统的可扩展性,在后续业务需求发生变更或者有新的业务需求时可以做到良好的扩展。
4.2.2 高可用
数据的存储采用 MySQL 主备模式,保证了数据不会完全丢失。
4.2.3 安全
使用非对称加密的 jwt,降低密钥存放多处子系统引起的安全风险;
使用 HTTPS 协议。
4.3 设计规范
4.3.1 前后端分离,后端使用 Go web 框架 kratos;
4.3.2 MySQL 使用 InnoDB 引擎;
4.3.3 登录之后的 token 采用 JWT。
5. 质量设计
5.1 可测试性
系统实现后首先通过内部的自测,保证系统整体功能的可用性的前提下,再让业务方试运营一段时间后,以试代测试,出现问题快速修复。
5.2 可维护性
可让外包人员保证基础的功能维护,定期对数据及安全性进行维护。
5.3 可观测性
系统监控设计要考虑,包括日志监控,操作监控等。
5.4 成本
成本结合项目预算进行合理的配置
6. 演进规划
6.1. 前/后端接口定义,数据结构定义。5.21 完成。
6.2. 权限子系统。6.21 完成。
6.3. 用户子系统。7.21 完成。
6.4. 课程子系统。8.21 完成。
评论