写点什么

架构实战营 - 模块三作业

发布于: 11 小时前

前言

本文档主要用来介绍外包学生管理系统的整体技术架构设计方案,旨在帮助产品、开发、测试、运维了解项目整体架构设计,促进项目各角色之间的沟通与协作,推动项目持续演进与迭代。

1. 业务背景

为了响应国家对于人才培养策略的调整,近期学校对现有的教育制度与体系进行了改进,准备构建一套新的学生管理系统以适应新的教育制度与体系,期望系统能够满足以下两个新的教育场景:

  • 课程选修:为促进学生德智体美全面发展,学校会在每学期开设音乐、绘画、体育、计算机等各类不同的线下课程,学生可以根据自己的兴趣选修

  • 教学评价:搭建教师、学生、课程三维评价体系,帮助学校不断完善教育体系,提高教育水平

  • 教师管理:增加教师管理功能

2. 约束和限制

  1. 项目整体周期三个月

  2. 项目成本需控制在百万内,包含开发成本、运维成本

  3. 系统安全必须严格把控,能防范各类常见的攻击手段,防范数据泄漏

  4. 编程语言必须使用 Java,采用 SpringBoot,建议进行功能服务化

  5. 前后端必须分离

3. 总体架构

3.1 技术选型

前端:Vue + ElementUI

后端:SpringBoot、SpringCloud

数据库:MySQL

中间件:Redis

3.2 架构分析

  1. 高可用:

课程选修由于部分课程较热门,会出现大量同学进行选报的情况(选修报名有时间限制,必须再指定时间段内登陆系统进行选报),但课程可容纳学生数量有限制,系统需要做好控制,不可出现超额的情况;

  1. 高性能:

整体页面响应时间不超过 2 秒,服务多实例,提高计算能力,提高响应时间

  1. 安全性:

做好数据权限控制与数据脱敏,防范数据泄漏与丢失,数据库采用主备库设计


3.3 总体架构


  1. 前后端分离,使用 Nginx 进行反向代理与实现服务负载均衡

  2. 服务拆分为教师、学生、课程、评价、权限五个模块,每个模块采用服务化方式部署,且每个服务至少两个实例,保证服务可用性

  3. 数据库采用 MySQL,且使用主备架构,防止数据丢失,提高可用性


4. 详细设计

支持学生、教师、课程基本信息的录入,包括手动录入、批量导入,支持修改、删除学生、教师、课程信息,对于已经参与管理系统各类业务活动的数据,不允许删除;

系统管理员或者课程管理员可设置选报的课程,包括课程基本信息、课程教师信息、课程选报人员、课程选报时间等,待到达选报时间后,开放选报入口,学生可登陆系统根据自身需要选报课程,防止超额选报;

学生课后可对老师、课堂内容进行评价,老师在每个课程周期内可对学生进行两次评分,时间分别为期中跟期末;

4.1 核心功能

课程选修核心流程序列图


4.2 关键设计

  1. 课程选修高可用

学生子系统、课程子系统均采用多实例部署,基于 Nginx 轮询实现负载均衡;

使用 Redis 生成选修名额,获取到选修名额后可选报课程,取消选报归还选报名额,保证 Redis、MySQL 数据一致性;

数据库使用学生 ID + 课程 ID 唯一主键,防止重复报名;

  1. 课程选修高性能

教师、学生、课程基本信息可做缓存,缓存有效期 60 秒;

每个业务子系统多实例部署,提高服务响应能力;

  1. 课程选修数据存储

采用 MySQL 进行数据存储;

课程选修信息存储在课程子系统,由课程子系统进行统一管理;

数据库采用主备方案,防止数据丢失;

4.3 设计规范

  1. 服务采用 SpringCloud、SpringBoot 开发,服务之间 feign 调用,且开启 Apache HttpClient

  2. 数据库采用 MySQL,必须使用 InnoDB 引擎,各表不设置外健,业务层面进行处理,但表的外健必须设置索引

  3. 项目工程采用分层架构,分为 api、rest、service、manager、dao 五层

5. 质量设计

  1. 基于阿里云部署,购买云产品进行系统监控报警与运维维护;购买云盾等安全产品提高系统安全性

  2. 项目开发过程中包含规范的单元测试用例,版本发布之前进行单元测试回归,通过 SonarQube 发现代码坏味道与潜在 Bug

  3. 成本计算

云服务器 ECS:8vCPU 16G * 5,成本预计 5 万/年

云数据库 MySQL:8vCPU 32G + 500G SSD 云盘(高可用版,支持主备),成本预计 4 万/年

云数据库 Redis:Redis 5.0 16G 标准版,成本预计 2 万/年

再添加各类云产品,每年成本预计 12~15 万,除去人工成本,百万内可以保证系统安全稳定的运行 5 年以上


6. 演进规划

分为三个迭代,首期主要完成学生、教师、课程基本信息以及系统基础工程的开发;二期主要完成课程选修、评价体系开发;三期进行项目收尾,交付各类文档

用户头像

还未添加个人签名 2018.01.11 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块三作业