写点什么

架构实战营模块 3 作业

作者:星夜
  • 2022 年 6 月 08 日
  • 本文字数:1756 字

    阅读完需:约 6 分钟

架构实战营模块 3 作业

前言

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

词汇表

NginX:是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。

SpringBoot:框架,用来简化新 Spring 应用的初始搭建以及开发过程。

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

MyBatis:持久层框架,它支持自定义 SQL、存储过程以及高级映射。

1. 业务背景

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

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

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

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

2. 约束和限制

  • 开发周期 2 个月完成

  • 成本控制 20w

  • 开发语言采用 Java

  • 可以支持 10000 名师生使用

  • 数据高可用,不可丢失

3. 总体架构

3.1 架构分析

3.1.1 可拓展

系统拆分成学生、课程、权限 3 个子系统,降低单个子系统的内部复杂度。

3.1.2 高性能

外包学生管理系统,单个学校使用并发也不高,对系统性能要求不高,系统无需满足高性能要求。

3.1.3 高可用

校方要求数据不可丢失,通过主备机制储存学生管理系统相关数据,即使一台数据库故障,可以从另一台数据库做恢复。

3.1.4 低成本

由于是外包学生管理系统,整体研发和运维成本不能太高,开发周期不能太长,部署架构需要简单,每年服务器的维护成本不能太高。

3.1.5 安全性

学生管理系统不涉及学生敏感信息,信息无需脱敏处理,安全性不用考虑,只需要做好权限控制即可。


3.2 总体架构


  1. 基于需求拆分成学生、课程、权限 3 个子系统,各自分别使用 1 台服务器。

  2. 请求通过一台 Nginx 服务器按照规则做转发到不同的系统应用服务器上。

  3. 客户端采取轮询的策略读写数据。

  4. 数据存储包含一台主 MySQL 和一台备 MySQL,主备数据复制。

  5. 正常情况下,主库对外提供读写服务,备库不对外提供服务。

  6. 主库宕机的情况下,备库对外提供读服务。

4. 详细设计

4.1 核心功能

4.1.1 系统登录及请求资源逻辑

4.1.2 学生选课流程

4.2 关键设计

4.2.1 数据存储高可用

MySQL 采用主备架构,保证了系统绝大多数情况的数据的存储高可用。少数的如果主备间出现复制延迟过程中出现 MySQL 主服务器宕机会导致数据丢失无法恢复,这种情况可通过人工方式完善丢失数据。

4.2.2 系统可扩展

学生管理系统拆分为学生子系统、课程子系统、权限子系统,从业务功能上进行隔离解耦,未来有新的业务很容易扩展新的子系统。

4.3 设计规范

  • MySQL 使用 InnoDB 储存引擎

  • 开发语言:Java 8

  • 开发框架:SpringBoot 框架

  • 数据库:Mysql InnoDB 存储引擎,主备架构

  • 数据源管理:Alibaba Druid

  • 接口规范:符合 RESTful API 规范

  • 数据包格式:JSON

  • 前端技术栈:Vue 全家桶

  • UI 框架:Alibaba Ant Design

5. 质量设计

5.1 可测试性

接口服务 RESTful API 规范,测试可采用 Swagger 或者 Postman 来管理。

5.2 可维护性

系统拆分成了 3 个子系统,维护成本低,后续新需求或新业务方便扩展。

5.3 可观测性

系统监控:使用 SpringBoot Actuator 进行管理

数据库监控:使用 Druid 监控功能

5.3 成本

系统架构比较简单,实现起来复杂度不高,整体研发、测试、运维成本较低。

未使用云服务、文件存储及 CDN 等产品无需额外成本。

5.4 安全

系统不涉及敏感数据,数据库储存的密码经过加密算法进行存储。

6. 演进规划

6.1 第一期规划:

完成学生管理系统学生子系统、课程子系统、权限子系统的开发、测试及部署上线。

  • 学生管理:查询课程信息、考试成绩、维护基本资料。

  • 课程管理:老师录入课程、教材,学生选课排课。

  • 权限控制:权限一次性由管理员写入,其中包括学校的组织机构及相应的角色权限配置。

6.2 第二期规划:

  • 由于是外包系统一次性交付,暂时不考虑系统演进。

  • 后续如果扩展市场做成通用的系统可以考虑微服务化方式演进架构。

发布于: 刚刚阅读数: 4
用户头像

星夜

关注

还未添加个人签名 2018.05.07 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块 3 作业_架构实战营_星夜_InfoQ写作社区