架构实战营模块 3 作业
前言
本文是外包学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维
词汇表
Nginx:是一个高性能的 HTTP 和反向代理 web 服务器。
SpringBoot:框架,用来简化 Spring 应用的初始搭建以及开发过程。
MySQL:是一个开源的关系型数据库。
MyBatis Plus:是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
Forest:Forest 是一个高层的、极简的声明式 HTTP 调用 API 框架。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
解决的问题:学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
实现的目标:提高学生管理的管理水平,优化资源,尽可能降低管理成本。系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率
完成的任务:统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询
2. 约束和限制
开发时间 1 个月
开发语言 Java,框架 Spring Boot,数据库 MySQL
内网访问,加密防刷
数据存储高可用,不可丢失
3. 总体架构
3.1 架构分析
高可用:内部系统,服务间高可用(重试、幂等)数据高可用(事务、数据库主从备份,每日备份)
可扩展:每个模块独立部署,如有新需求类型可以继续扩展出新服务模块。
高性能:无高性能需求,选课也就几百 QPS
安全:请求安全(内网访问、防刷限流、加密),数据安全(脱敏)
3.2 总体架构
系统架构图
系统边界白盒图
4. 详细设计
4.1 核心功能
考试流程
4.2 关键设计
拆分多个子系统,降低代码耦合度,不同人开发不同模块,提升效率
数据库主备同步,每日备份
服务间调用重试机制,调用幂等性
数据补偿机制
4.3 设计规范
语言:Java 8
语言框架:SpringBoot 框架
数据库:Mysql InnoDB 存储引擎,主备架构
数据源管理:Alibaba Druid
接口规范:RESTful API,JSON 格式
HTTP 调用 API 框架:Forest
单点登录:JWT
5. 质量设计
可测试性
RESTful,接口测试使用 Postman,压测 ab 命令
可维护性
接口文档,表结构设计
可观测性
服务监控:SpringBoot Actuator
日志监控:系统文件,定时切割
成本
架构简单,研发、测试、运维成本忽略
6. 演进规划
一期:权限管理、学生管理、课程管理、系统管理
二期:外包项目,暂不考虑。如需考虑可接入短信推送,报表管理
评论