写点什么

架构训练营模块 3 作业

用户头像
慕溶枫
关注
发布于: 4 小时前

外包学生管理系统架构设计

前言

本文是针对公司新接学生管理系统做的新系统架构。

1. 业务背景

学生数量增多,需要处理的信息越来越大,花费了教师大量时间,单处理效率低下,投资方要求管理系统可以规范管理,提升效率,科学性的统计信息及保证信息的准确度。

系统主要解决学生信息关系的系统化,规范化,自动化,并能够管理学生信息,实现学生选课,成绩查询等功能。

性能问题:学校的学生人数大致上几年内是不会有太大变化的,当前只需要能够支持所有学生使用即可,未来可以通过水平扩展进行性能扩展。

基于以上背景我们设计了以 nginx 做反向代理,业务功能按学生系统,课程系统,权限系统拆分,数据库使用 Mysql 主备的形式。

2. 约束和限制

1.投资方投入资金不多

2.系统尽快上线

3.数据库使用 mysql 主备

4.使用 nginx 做反向代理负载均衡

3. 总体架构


3.1 架构分析

高可用:系统高可用要求不高

高性能:学生人数固定,系统的瞬时并发并不高,不需要太高的性能。

3.2 总体架构

1.采用数据集中架构,使用 mysql 主备架构,主备数据增强半同步复制。

2.正常情况下主 mysql 复制读写。

3.采用 nginx 根据 url(如学生为/students/)指定路由和负载均衡,nginx 使用单点部署。

4.学生子系统,课程子系统,权限子系统分别部署集群服务器,

5.子系统之间通过 http 协议进行交互,采用 json 数据格式。

4. 详细设计

4.1 核心功能

4.1.1 权限管理流程:高权限者为低权限者分配账号和角色,高权限者为低权限者对角色分配权限。

4.1.2 鉴权流程:用户操作判断角色,判断角色是否具有该权限,有则可继续执行,否则不允许执行。

4.1.3 个人信息管理:高权限者可以管理低权限者信息(如修改成绩),低权限者只能管理自己的个人信息(修改头像,上传文件等)

4.1.4 课程录入管理:教师可以录入自己课目,学生可以观看对应的课目。

4.1.5 排课功能:教师可以排自己的课程时间

4.1.6 选课功能:学生可以预约可选教师的课程

4.1.7 教材选择:管理员可以指定教师授课使用的教材

4.1.8 题库管理:教师可以录入题库,生成试卷并下载

4.2 关键设计

数据可靠性:数据都存储在 mysql 且使用主备增强半同步复制不存在数据可靠性问题。

系统高可用:系统不需要保证高可用

系统扩展性:数据系统可以用过分库分表进行扩展,应用系统可以通过集群增加机器的方式扩展。

系统安全:内网系统,通过鉴权和防火墙可以保证系统安全

系统运维:监控数据库及应用宕机即可。

4.3 设计规范

1.服务使用 springboot 开发,使用 json 通过 http 协议传输

2.mysql 使用 innodb,事务隔离级别为默认等级

3.数据格式为{head{},body{},common{}},其中 head 放置访问硬件之类的数据, common 放置用户信息及系统信息,body 放置具体的数据

4.定制系统异常类,系统异常统一处理

5. 质量设计

1. 系统成本:低

2. 系统可测试性:中

3. 系统可维护性:高

4. 系统可观测性:

6. 演进规划

1.系统一期:实现权限子系统

2.系统二期:实现学生子系统

3.系统三期:实现课程子系统

4.系统四期:部署上线

发布于: 4 小时前阅读数: 5
用户头像

慕溶枫

关注

还未添加个人签名 2019.04.10 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营模块3作业