[架构实战营第一期] 模块三作业
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维
词汇表
SpringBoot:后端开发框架
MyBatis:数据访问层
MySql:数据存储
Nginx:Http 代理
Vue:前端框架
1. 业务背景
随着业务的不断增长,用户反馈使用系统带来的延迟和各种卡顿等不好体验,我们决定对系统进行升级,重构。提高学生使用体验以及老师的工作效率。
2. 约束和限制
即日起两个月内完成升级改造并可交付投入使用(2021 年 9 月 28 日前)
后台开发语言使用 Java
后台开发框架使用 SpringBoot
前端使用 vue
数据库使用 MySql
缓存使用 Redis
Http 代理使用 Nginx
成本不超过 30w
3. 总体架构
学生子系统:查询成绩、账号注册、个人信息修改等等
课程子系统:课程录入、发布等等
教师子系统:教师信息录入
权限子系统:权限分配
3.1 架构分析
高性能:由于学生总体的用户数量不会过于庞大暂时不考虑。
高可用:MySql 主备保证数据不丢失,或者说极少丢失。
可拓展:多租户,支持多个学校同时使用,互不影响。
安全:教学资源信息不属于机密。
成本:依据实际情况可考虑服务器的增减,不过最少需要 4 台,
3.2 总体架构
1、采用 Nginx 进行负载均衡,将不用的业务路由到不用的服务器上。
2、整个系统数据存储采用 MySql 一主一备
3、学生、课程、教师、权限各个子系统部署在不同服务器上彼此相互不影响
4. 详细设计
[必选,描述核心场景或者流程的实现机制]
4.1 核心功能
[必选,描述核心场景或者流程的实现机制,对应 4R 架构中的 Rule,每个核心场景一个小节]
[样例:
4.1.1 消息发送流程
4.1.2 消息消费流程
]
[技巧:使用系统序列图来描述 Rule,跟项目开发中写设计文档一样的写法]
4.2 关键设计
保证数据不丢失
MySql 主备保证,每天进行备份,最多保留最近一周的全量数据。
数据隔离
学生之间自己只能看到自己的信息
老师可以看到所有学生的信息
各个学校之间的数据不互通
4.3 设计规范
MySQL 使用 Innodb 存储引擎
后台才用 SpringBoot,前端使用 vue
前后台交互数据为 json,才用 http 请求
交互的响应格式分三个字段 code:响应码 data:响应数据 msg:响应消息
5. 质量设计
整体系统操作日志收集与监控,出现系统问题及时同时管理员进行故障修复。
6. 演进规划
学生管理系统一期:引入 SpringCloud 进行微服务改造,每个服务独立库,支撑更大的数据存储与请求。
版权声明: 本文为 InfoQ 作者【trymorewang】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b9e4ab140a655eff3cceeb56】。文章转载请联系作者。
评论