架构实战营 模块三作业
外包学生管理系统的架构文档
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx:轻量级的高性能的 HTTP 和反向代理 web 服务器。
MySQL:最流行的关系型数据库管理系统
SpringBoot:简化配置来进一步简化了 Spring 应用搭建的
MyBatis:开源的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改
不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息(如学籍、课程、成绩、奖惩)进行日常管理,以及学生选课、成绩的查询等功能设计的管理系统。
管理员:管理教师、辅导员的账号和权限分配,以及学生的学籍信息(学院、专业、班级、姓名、学号);管理课程信息及安排课程上课信息
教师:课堂考勤;批阅课堂笔记、课后作业;课程试卷上传、批阅;学生学习的评分考核
辅导员:查看管理权限下的学籍信息,设置奖惩信息
学生:账号绑定;选课;录入课堂笔记、课后作业
2. 约束和限制
1、成本不能超过 50 万
2、要求可以通过公网域名访问
3、在校学生和教辅人员的人数在 1 万人左右,支持最大在线访问人数在 3000
4、需要在 3 个月之后上线
5、数据库采用 MySQL
3. 总体架构
系统边界白盒图:
系统架构图:
3.1 架构分析
3.1.1 高性能
用户规模比较固定,并发访问量也不高,只需要做双机集群部署即可
3.1.2 高可用
应用服务故障对业务容忍度较高,不需要特别处理。但是数据需要支持高可用,保证数据不要全部丢失
3.1.3 可扩展
业务需求比较复杂,拆分成权限、课程、学籍三个业务子系统进行开发部署。
3.1.4 成本、安全
在满足业务和性能的基础上,考虑到降低综合成本,硬件资源尽可能好,从而降低开发运维的成本。由于对安全要求不高,只需要做到内外网访问隔离;对于业务安全,需要根据用户角色管控不同的菜单与数据的访问权限,用户隐私信息及账户密码需加密保存在数据库, 及时修复系统组件的安全漏洞,加强教辅人员的安全教育。
3.2 总体架构
3.2.1 总体架构图
3.2.2 部署架构图
3.2.3 架构设计说明
Nginx 提供静态网页服务,区分教职人员和学生访问两个目录。
Nginx 将远端服务请求代理至后端服务子系统。
数据库采用 MySQL 主备架构,主库提供 CRUD 功能,采用 binlog 日志同步复制做实时备份。
三个服务子系统共享一套 MySQL 服务。
三个服务子系统部署在一台服务器中,共在两台业务服务器中部署两组应用服务。Nginx、MySQL 主库、MySQL 备库各部署一台服务器,共需要 5 台服务器。
4. 详细设计
4.1 核心功能
核心业务场景流程图:
业务架构图:
4.2 关键设计
1) 三个应用部署在一台业务服务器中,各个业务子系统可以单独开发、测试、上线,降低耦合,具有良好的扩展性、伸缩性。
2)应用服务同时部署在两台服务器上,提供较好的可用性。
3)数据库采用 MySQL 主备架构,提供较好的灾难恢复能力,并保证较好的一致性。
4.3 设计规范
1)采用动静分离,页面采用 EasyUI 开发,使用 AJAX 调用后端服务,数据格式为 JSON;
2)静态页面、JS、图片等资源,部署在 Ngnix 上;
3) 各个子系统采用 Springboot+MyBatis 开发;
4)子系统之间通过 RESTFUL 风格 API 进行调用,参数通过 JSON 数据格式传输;
5)MySQL 数据库 Innodb 存储引擎。
5. 质量设计
5.1 可测试性
不考虑可测试性
5.2 可维护性
不考虑可维护性
5.3 可观测性
除了 Nginx、中间件和 Mysql 的系统日志外,对于重要业务操作需要记录业务日志,在管理员业务功能中增加业务统计、运行看板相关的页面。
5.4 成本
按照架构采购硬件,不再考虑单独成本压缩
6. 演进规划
6.1 一期
按照业务需求交付各个功能子系统,满足管理员、教师、辅导员、学生的日常使用。
6.2 二期
根据客户需求,可以完善系统的日志管理、业务监控功能;丰富统计报表功能;增加用户要求的新增功能。
版权声明: 本文为 InfoQ 作者【felix】的原创文章。
原文链接:【http://xie.infoq.cn/article/f48636fc2703b9191f383beb4】。未经作者许可,禁止转载。
评论