写点什么

架构实战营 - 模块 3- 作业

作者:zealot0317
  • 2023-01-05
    北京
  • 本文字数:1268 字

    阅读完需:约 4 分钟

前言

作业-外包学生管理系统的架构文档


1. 业务背景

该系统是面向学校的学生信息管理系统。总体业务目标是实现学生信息管理的系统化、规范化和自动化。

2. 约束和限制

  • 项目服务于单所学校,师生人数大致在 1000 人左右。

  • 数据存储需要做到稳定可靠。

  • 对于外包项目,在满足系统稳定的同时,需要尽可能考虑低成本和高效交付。

3. 总体架构

3.1 架构分析

3.1.1 高性能

  • 日均最高 UV 预估为 1000,日均 PV 预估大致在 1W 左右。

  • 基于以上的流量预估,以及预期学校的师生规模,峰值流量初步确定在 200QPS 以内。

  • 本系统非实时交互系统,只要系统不宕机,可正常提供服务即可

基于以上,单应用服务器可满足需要,无需部署集群环境。

3.1.2 高可用

  • 因为是学校使用的管理系统,在确保系统稳定的前提下,该系统对于服务高可用的要求较低,基本保证在正常教学时间内系统可用即可。

  • 该系统对于数据的可靠性要求很高,需要确保数据安全存储,不丢失。

基于以上,需要考虑数据高可用需求,故数据库服务器采用主备架构。

3.1.3 可扩展

外包系统,在短期内,暂时对扩展性要求更高。

3.1.4 安全

  • 因为是学校内部系统,可考虑进行内网部署,降低安全风险。

3.2 总体架构

  • 1、Nginx 实现负载均衡和流量分发。

    2、按照业务拆分为三个子系统:学生子系统、课程子系统和权限子系统。

    3、数据库使用 MySQL,采用主备架构,出现问题时,可紧急进行主备切换,确保数据不丢失。


4. 详细设计

4.1 核心功能

4.1.1 账号注册

  • 学生在注册页面填入基本信息:学号、姓名、密码、邮箱、手机号等

  • 创建新账户,发送邮件或短信验证邮箱、手机号的有效性

  • 管理员对学生提交的注册信息进行审核

  • 审核通过后,账号激活并通知学生

4.1.2 登陆

  • 学生在登陆页输入学号和密码

  • 权限子系统对密码进行验证

  • 权限子系统验证通过后创建 session 等

4.1.3 发布新课程

  • 管理员通过课程子系统录入课程,信息包括时间、人数、地点、任课老师等

  • 课程信息确认无误后进行发布

4.1.4 选课

  • 学生登陆后,通过课程子系统查询可选课程

  • 学生选择一门课并提交

  • 课程子系统对提交的选课信息进行必要的校验(如课程该学生是否可选,课程库存是否有剩余等),确认无误后,将学生加入课程对应的班级信息中

4.1.5 发布考试

  • 教师登陆系统,课程子系统列出该教师正在教授的课程列表

  • 教师挑选一门课程,提交进行考试处理

  • 课程子系统检索题库,并自动生成试卷

  • 教师确认试卷内容,并打印

4.1.6 评分判定

  • 管理员将学生试卷扫描入管理系统

  • 老师针对学生试卷进行打分

  • 打分结果存入学生成绩表中

4.2 关键设计

4.2.1 MySQL 主备机制

  • 数据处理只针对 MySQL 主库进行操作

  • 通过数据库主备数据同步机制,进行数据的主备库同步

  • 一旦主库出现问题,可由系统或人工进行主备库的切换

4.3 设计规范

  • 业务子系统采用 Spring Boot 作为开发框架;

    子系统间消息交互采用 HTTPS 协议,数据采用 JSON 格式

    MySQL 使用 Innodb 存储引擎

5. 质量设计

5.1

  • 核心服务均需提交单元测试

  • 数据可做全链路监控

  • 完备的日志记录,便于问题定位

  • 关键节点具备完备的告警处理逻辑

5.2 成本

  • 6 台服务器:3 台业务服务器+2 台 MySQL 服务器+1 台 Nginx 服务器

  • 公网域名服务

  • 短信服务费等


6. 演进规划

该外包项目目前只签订一期合同,不许考虑后续规划


用户头像

zealot0317

关注

还未添加个人签名 2018-05-09 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 - 模块 3- 作业_zealot0317_InfoQ写作社区