写点什么

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

作者:张祥
  • 2021 年 11 月 10 日
  • 本文字数:1223 字

    阅读完需:约 4 分钟

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

前言

本文是学生管理系统详细架构设计文档。

词汇表

Nginx:一高性能的 HTTP 和反向代理 web 服务器。

MySQL:一开源关系型数据库。

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。

基于以上背景,我们学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

2. 约束和限制

1.支撑 1 万学生的在线使用

2.成本不能超过 15 万

3.数据库采用 MySQL

3. 总体架构

[必选,描述经过备选架构决策后定下来的架构方案,这一章主要是描述架构的 3R:Rank、Role、Relation]

[技巧:1. 系统边界白盒图描述系统内的角色与外界的交互(Rank + Role + 外部 Relation);2. 系统架构图来描述内部的 Role + 内部 Relation]

[注意:不建议一张图同时描述系统架构的 3R 以及与外界的交互,因为图太复杂,画系统边界白盒图的时候,系统内部的 Relation 可以不画]

3.1 架构分析

对于学生管理系统来说,学校的学生一般情况在 1 万人左右,涉及的功能学生信息管理、考试管理、权限管理对于系统的高新能要求不高,对与课程管理,集中选课时有一定的性能需求。对与系统的高可用的要求上,主要是学生信息存储的高可用,避免信息丢失。

3.1.1 系统高可用

关系系统中,如果学生信息丢失,需要大量的工作重新登记录入,所以主要是存储的高可用,采用 MySQL 主备的方案,如果消息丢了,导致没有审核,然后触犯了国家法律法规,则是非常严重的事情;对于等级子系统来说,如果用户达到相应等级后,系统没有给他奖品和专属服务,则 VIP 用户会很不满意,导致用户流失从而损失收入,虽然也比较关键,但没有审核子系统丢消息那么严重。

3.1.2 系统高性能

 学生选课有时间的限制,所能出现同年级的学生集中在线选课的情况,对课程管理系统有一定高并发的的要求。

3.2 总体架构

总体架构图:


1)保证系统一定的高可用,采用系统拆分架构,拆分学生子系统、课程子系统、权限子系统。

2)数据存储高可用一台主 MySQL 和一台备 MySQL,主备数据复制,保障数据不丢失。

4. 详细设计

4.1 核心功能

4.1.1 学生子系统:注册,信息查询,账号管理。

4.1.2 课程子系统:课程信息管理,选课。

4.1.3 权限子系统:账号角色管理,权限分配,账号信息管理。

4.2 关键设计

1)数据存储可靠性

学生信息存储在 MySQL 中,一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据,保证数据高可用。在此基础上可以定期对数据进行冷备,加强保障。

2)课程系统高性能

学生管理系统做任务分解,课程系统,学生系统和权限系统,做服务拆分。

4.3 设计规范

1)使用 Spring Boot 开发框架

2)MySQL 使用 Innodb 存储引擎

5. 质量设计

5.1 云服务器性能监控

5.2 成本设计

1 台 Nginx 代理服务 :2 核 4G,10G 硬盘,带宽 10M

3 台子系统服务:2 核 ,4G,20G 硬盘

2 台数据服务:2 核,8G,500G 硬盘

6. 演进规划

6.1 付费子系统,结合学生信息,管理学费缴费情况,学生住宿费用,生活缴费(水卡、饭卡、网卡)


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

张祥

关注

还未添加个人签名 2019.08.26 加入

还未添加个人简介

评论

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