架构实战营 10 期 - 作业 3
前言
本文是学生管理系统的详细架构设计文档,用于指导学生管理系统的后续的开发、测试和运维。
修订历史
版本号 变更内容 修订者 日期
V1.0 创建 炮仗 2022-12-06
词汇表
无
1. 业务背景
学生信息的管理对于学校的管理者来说至关重要,学生信息是高校非常重要的一项数据资产,是一个教育单位不可缺少的一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理等方便都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高。使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,系统针对学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。
2. 约束和限制
1.开发成本不超过 X 万元,硬件成本不超过 X 万元,每年的运维成本不超过 X 万元。
2.硬件资源必须是国产化产品,软件资源彩果国产化产品或非商业化产品。
3.系统可用性要求 99.99%
4.项目实施周期为 3 个月。
5.数据必须有备份机制,对于敏感数据保证其安全性。
6.质量标准符合 IOS9001 标准。
3. 总体架构
3.1 架构分析
3.1.1 高可用
学生管理系统是对于学生信息档案的管理,一般出现宕机的情况,也不会有太大的影响。但是要保证数据的高可用,避免数据全部丢失。
3.1.2 高性能
单个学校的管理系统,没有高性能需求。
3.1.3 可扩展
学生管理系统的需求变化相对较频繁,需考虑可扩展。
3.1.4 低成本、安全
为了响应“过紧日子”的大政策,尽可能的低成本。由于涉及到学生的身份数据需进行加密处理以保证安全。
3.2 总体架构
1.采用 B/S 架构。
2.因为通过公网可以访问,为了保障安全性,需配置公有云 WAF。
3.前置采用 Nginx 作为入口网关。
4.服务器拆分为三个子系统独立部署:学生子系统、课程子系统、权限子系统。
5.三个子系统之间使用 HTTP 协议,JSON 数据格式进行通信交互。
6.数据存储层采用 MySQL,部署一主一备,主备复制。
4. 详细设计
4.1 核心功能
4.1.1 选课流程
4.2 关键设计
1.安全性
基于加密算法,对学生的身份信息进行加密处理,以密文的形式进行存储。
2.可靠性
使用两台一主一备 MySQL 服务器,服务器之间复制消息以保证数据存储高可用。DBA 需要对主备之间的复制延迟进行监控,当复制延迟超过 30 秒需要及时告警并进行处理。
4.3 设计规范
1.使用 SpringMVC+MyBatis+Tomcat 开发。
2.数据库存储采用 MySQL 5.7,Innodb 存储引擎,一主一备异步复制模式。
3.前后端及子系统之间采用 HTTP 接口进行通讯。
4.使用 Java 1.8
5. 质量设计
5.1 可测试性
系统分为三个子系统,对外采用 HTTP 接口,方便进行单元测试和接口测试。
5.2 可维护性
系统有一个基础管理模块,进行基础的维护工作。
5.3 可观测性
系统日志输出到控制台,方便查看。
5.4 安全性
流量入口使用 WAF 作为防火墙,能够过滤大部分的外部攻击。
5.5 成本
为控制成本,不采用存算分离,采用超融合。
6. 演进规划
6.1 学生管理系统一期
完成学生管理系统初始版本的建设,使学生信息电子化,满足学生选课、考试等基础功能。
6.2 学生管理系统二期
引入容器化技术,避免学生抢课难的现象。
版权声明: 本文为 InfoQ 作者【炮仗】的原创文章。
原文链接:【http://xie.infoq.cn/article/55c0ed6cc6ba0b2504ad90d7e】。未经作者许可,禁止转载。
评论