架构实战营模块 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 总体架构
基于需求拆分成学生、课程、权限 3 个子系统,各自分别使用 1 台服务器。
请求通过一台 Nginx 服务器按照规则做转发到不同的系统应用服务器上。
客户端采取轮询的策略读写数据。
数据存储包含一台主 MySQL 和一台备 MySQL,主备数据复制。
正常情况下,主库对外提供读写服务,备库不对外提供服务。
主库宕机的情况下,备库对外提供读服务。
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 第二期规划:
由于是外包系统一次性交付,暂时不考虑系统演进。
后续如果扩展市场做成通用的系统可以考虑微服务化方式演进架构。
版权声明: 本文为 InfoQ 作者【星夜】的原创文章。
原文链接:【http://xie.infoq.cn/article/b84baa0874ce1120a0fbb88bf】。文章转载请联系作者。
评论