写点什么

[架构实战营第一期] 模块三作业

用户头像
trymorewang
关注
发布于: 16 小时前
[架构实战营第一期]模块三作业

前言

本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维


词汇表

SpringBoot:后端开发框架

MyBatis:数据访问层

MySql:数据存储

Nginx:Http 代理

Vue:前端框架


1. 业务背景

随着业务的不断增长,用户反馈使用系统带来的延迟和各种卡顿等不好体验,我们决定对系统进行升级,重构。提高学生使用体验以及老师的工作效率。


2. 约束和限制

  1. 即日起两个月内完成升级改造并可交付投入使用(2021 年 9 月 28 日前)

  2. 后台开发语言使用 Java

  3. 后台开发框架使用 SpringBoot

  4. 前端使用 vue

  5. 数据库使用 MySql

  6. 缓存使用 Redis

  7. Http 代理使用 Nginx

  8. 成本不超过 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 关键设计

  1. 保证数据不丢失

  2. MySql 主备保证,每天进行备份,最多保留最近一周的全量数据。

  3. 数据隔离

  4. 学生之间自己只能看到自己的信息

  5. 老师可以看到所有学生的信息

  6. 各个学校之间的数据不互通

4.3 设计规范

  1. MySQL 使用 Innodb 存储引擎

  2. 后台才用 SpringBoot,前端使用 vue

  3. 前后台交互数据为 json,才用 http 请求

  4. 交互的响应格式分三个字段 code:响应码 data:响应数据 msg:响应消息

5. 质量设计

整体系统操作日志收集与监控,出现系统问题及时同时管理员进行故障修复。


6. 演进规划

学生管理系统一期:引入 SpringCloud 进行微服务改造,每个服务独立库,支撑更大的数据存储与请求。

发布于: 16 小时前阅读数: 7
用户头像

trymorewang

关注

还未添加个人签名 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
[架构实战营第一期]模块三作业