写点什么

架构设计

作者:AHUI
  • 2021 年 11 月 15 日
  • 本文字数:1106 字

    阅读完需:约 4 分钟

架构设计

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大,不仅花费大量的教师资源,处理效率也十分低下。

1)工作效率问题:学校规模和学生数量增大,教师和学校需要通过线下维护学生等相关信息已经非常困难,工作效率十分低下

2)管理成本问题:教师需要花费大量时间去管理学生的课程、选课、考试等信息

3)性能问题:学生数量增大,需保证学生在课程选课、提交在线考试等高并发场景

4)业务可扩展:通过微服务搭建,拆分各个子系统,保证后续业务可扩展

2. 约束和限制

1、学校成本有限制,只能提供 6 台服务器

2、学校规定使用有 Mysql 数据库

3、规定使用 Java 开发语言

4、项目需要 3 个月完成

3. 总体架构


3.1 架构分析

1)业务可扩展:按业务维度将系统拆分为、学生子系统、权限系统子系统,课程子系统,保证后续业务扩展,通过远程可直接对接学习、权限、课程等信息

2)高性能:学生数量不多,单机基本满足课程选课、提交在线考试等高并发场景

3) 管理成本和工作效率:线下功能统一由线上系统完成,教师和学生可在系统完成维护信息、考试等内容,大大减少管理成本

3.2 总体架构

1、数据存储采用 Mysql 主备架构,主机实时同步备机,主机异常时,需要人工手动切换,可能出现部分数据丢失

2、按业务模块拆分多个子系统独立部署,搭建微服务架构,以便后续业务扩展

3、前端 web 容器采用 Nginx 服务器做任务分发


4. 详细设计

1、学习注册流程

2、学生选课流程

3、学生在线考试流程

4.1 核心功能

1、学生注册流程

1)学生在浏览器端打开学生管理系统注册页面

2)输入注册信息发起注册请求

3)Nginx 根据注册路由匹配规则转发至学生子系统服务

4)学生子系统保存学生的注册信息到 MySql 主库

5)MySql 主库同步到 MySql 备库

2、学生选课流程

1)学生在浏览器端打开课程选课页面

2)选择课程发起课程选课请求

3)Nginx 根据注册路由匹配规则转发至课程子系统服务

4)课程子系统调用权限子系统的用户权限校验接口

a)如没有权限,返回该用户未授权

b)如有权限,进入步骤 5

5)课程子系统校验当前课程是否由剩余或者该用户已选过

a)如有,返回校验结果

b)如没有,则将当前学生的选课信息保存到 Mysql 主库

6)MySql 主库同步到 MySql 备库

4.2 关键设计

1、Nginx 采用路由匹配规则,分发到不同子系统

2、API 采用采用 Restful 风格,采用 Post 请求方法,响应结构统一规范化

3、操作日志由权限子系统提供统一接口

4、各子系统间由心态检查,如发生宕机及时通知

4.3 设计规范

1、子系统使用 SpringBoot 搭建微服务

2、Mysql 使用 Innodb 存储引擎

5. 质量设计

1、权限子系统开发系统设置模块,可查用户操作日志,系统异常日志等信息

6. 演进规划

1、一次性交付

用户头像

AHUI

关注

还未添加个人签名 2019.07.04 加入

还未添加个人简介

评论

发布
暂无评论
架构设计