架构实战营 1 期 - 模块三作业
架构实战营 1 期 - 模块三作业
写出外包学生管理系统的架构文档
作业要求
基于模块一第五课 15 页的外包学生管理系统备选架构 1, 写出完整的架构设计文档
注意不是备选架构文档,而是最终落地的的详细架构设计文档
无需考虑数据库表设计,因为表设计是方案设计阶段做的,不是架构设计阶段做的
提示
架构设计文档是完整的文档,Word 或者语雀文档之类的都可以,不是 PPT
架构文档涵盖的内容请参考模块三第四课,细化架构设计参考模块三第六课
外包学生管理系统的业务请参考模块一第五课的课件
架构文档模板可以参考
前言
本文档用户描述学生管理系统 Study Management System 架构方案。实现学生信息在线管理、课程信息在线管理,增强校园信息化程度,方便学生及时了解课程信息。
词汇表
学生:通常指被学校录取,进入学校学习,尚未毕业的学习活动参与者。
课程:学校将知识拆分为不同课程,供学生选择和学习。
Nginx: 一种 HTTP 反向代理负载均衡服务软件
MySQL: 一种开源关系数据库,使用简单,可以通过命令行、不同语言、工具访问该数据库。
子系统:软件开发过程中,将不同功能模块拆分后使用的名字。一般复杂软件系统,会划分多个子系统。
1. 业务背景
配合学校教学工作,完成学生课程学习过程中的信息化。解决学生基于网站维护信息、选课的功能,减少行政人员工作负担。
2. 约束和限制
资源有限,建议使用 Nginx 作为 HTTP 入口, MySQL 作为数据库存储
开发语言以 Java 为主
开发资源有限, 不会划分过多模块
3. 总体架构
3.1. 架构分析
学生信息和课程信息没有太多关联。将学生信息拆分为一个子系统,课程拆分为一个子系统。中间通过权限子系统互相连接。
使用一个 MySQL 服务足够支撑 1000 用户访问。
提供数据库备份服务,防止数据丢失。
3.2. 总体架构
首先,根据学生、课程拆分为学生子系统、课程子系统、权限子系统。
其次,学生数据、课程数据、权限数据存储到同一个 MySQL 服务不同的数据库
外部请求,先通过 Nginx 调用到不同子系统。
前期用户量 1000,一个 MySQL 服务完全够用,将学生、课程信息分开,方便后期根据系统运行情况增加不同功能。
4. 详细设计
4.1. 核心功能
学生子系统提供学生注册、学生信息修改、学生成绩记录、学生成绩查询。
课程子系统提供添加课程、维护课程、删除或隐藏课程。
权限子系统提供学生登录、学生选课。
4.2. 关键设计
MySQL 需要定期检查数据同步,防止意外宕机导致数据丢失。
4.3. 设计规范
简单、适用优先。
5. 质量设计
保证 1000 人登录系统、选课系统正常提供服务。
每周对系统运行情况进行检查,评估系统稳定性。
6. 演进规划
课程子系统可以展示学生成绩历史分布,方便学生评估课程难度。
版权声明: 本文为 InfoQ 作者【李东旭】的原创文章。
原文链接:【http://xie.infoq.cn/article/5e55ba9bbd3ea842612a2880e】。文章转载请联系作者。
评论