如何保证设计出合理架构 - 作业
前言
本文是学生管理系统详细架构设计文档,用于指导消息队列后续的开发、测试和运维
修订历史
词汇表
[可选,用于明确定义和说明一些英文缩写、术语等,请用表格来呈现,infoq 写作平台不支持表格,所以只能一个一个的列,实际编写的时候请用表格来展示]
[样例:
Reactor: 网络编程模式
Netty: 开源的网络编程框架
]
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等 功能设计的管理系统。
2. 约束和限制
保证学生数据的可用性,数据不丢失
模块间功能明确,不相互干扰
3. 总体设计
学生管理
账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、删除、查询权限。
信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
权限管理
学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。
学生只能查看自己的成绩,教师可以修改学生的成绩。辅导员可以查看学生的信息,可以设置学生的奖惩信息。
课程管理
课程录入: 由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
选课功能: 学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
排课功能: 此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。
3.1 架构分析
高性能
只有 1000 用户,不需要考虑 (合适原则)
高可用
数据库数据主备部署,防止数据库节点宕机,防止数据丢失。出现主机宕机,可以进行主备切换。
可扩展性
外包一次性项目,适当考虑扩展性,进行了任务拆分。
成本控制
对小型项目非常重要,学生管理、课程管理、权限管理仅使用一台服务器,数据库主从为两台服务器,nginx 一台服务器。考虑到是内部系统,服务中断一段时间也可以容忍。
3.2 总体架构
本设计对架构进行分层,遵循简单、合适、演进的原则,可以分为负载层,服务层,数据层。
负载层由 nginx 来担当负载组件,对 url 进行反向代理,路由请求到合适的服务。同时担当负载均衡的角色,利用 hash、轮询、随机等算法对请求进行分发。
服务层包含学生管理,课程管理,权限管理三个子服务,分别承担不通业务功能,服务之间使用 Rest API 来做内部调用。
数据层选用 MySQL 作为数据库,利用 MySQL 的主备方案,来保证数据的高可用性。数据复制采用 MySQL binlog 的复制机制,数据复制格式是数据(Row),数据复制方式是异步+半同步
4. 详细设计
4.1 核心功能
4.1.1 账号分配
学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、删除、查询权限。
4.1.2 选课功能
学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
4.2 关键设计
1)消息存储可靠性
消息存储在 MySQL 中,数据库有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
2)数据库主备借切换
4.3 设计规范
1)服务使用 Spring Boot 作为 MVC 框架
2)MySQL 使用 Innodb 存储引擎
3)Restful API 接口, Http 协议, 支持 JSON 格式数据返回
5. 质量设计
5.1 学生管理系统后台
学生管理系统后台可以进行课程录入,教师初始化,角色权限分配等管理员功能
6. 演进规划
版权声明: 本文为 InfoQ 作者【阿拉阿拉幽幽】的原创文章。
原文链接:【http://xie.infoq.cn/article/feb78bdbc3272bbd80543c793】。文章转载请联系作者。
评论