写点什么

模块三作业

作者:Leo
  • 2022 年 2 月 24 日
  • 本文字数:1914 字

    阅读完需:约 6 分钟

前言

本文是外包学生管理系统架构设计文档,总体任务是实现学生信息关系的数字化、自动化,主要功能是统计学生各类信息进行日常管理,同时用于指导外包学生管理系统后续的开发、测试和运维


词汇表

[可选,用于明确定义和说明一些英文缩写、术语等,请用表格来呈现,infoq 写作平台不支持表格,所以只能一个一个的列]

[样例:

Reactor: 网络编程模式

Netty: 开源的网络编程框架

]


1. 业务背景

随着我国高等学校的快速发展,数字化的需求日益高涨,很多高校的学生规模达到数万人,其中本科院校平均在校生达到 1.5 万人。学校规模的增大给高等院校的学生信息管理带来不少的冲击,学生学籍、课程、成绩、奖惩和异动等方面的数据量大,难以单纯地依靠人工管理,传统的人工管理方式存在以下问题:

  • 管理效率低,管理人员的工作负担高

  • 消耗太多人力物力,管理成本高

  • 管理不规范,不利于学生信息的规范化和科学化管理

基于上述背景,开发一套适合高等院校实际情况的学生信息管理系统,实现学生信息管理的信息化和规范化,提高学生管理效率和管理水平,降低管理成本。


2. 约束和限制

成本不超过 10 万元

  • 2022.9.1 开学投入使用

  • 公网可访问(域名)

  • 数据库采用 MySQL


  • 3. 总体架构

    高性能:本系统仅为本学校提供服务,所以用户量有限,即使在选课的场景下,并发量也有限,所以没有高性能的需求。

    高可用:本系统仅做学生管理之用,且仅为本校提供服务,所以不要求很高的服务质量,宕机事件容忍度较高,系统本身服务不要求高可用。但是数据不能丢失,所以具有数据高可用的复杂度。

    可扩展:本系统业务较为复杂,且后期可能会产生额外的需求变更,所以具有可扩展的复杂度。

    成本、安全:本系统服务用户量较少,所以服务器成本不高,不具备成本复杂度。本系统为内网部署,不需要过多的考虑安全问题,开发时做好业务安全的控制即可,不具备安全方面的复杂度。


    3.1 架构分析

    [可选,这部分主要是架构复杂度的分析,基本上从备选架构文档中提炼关键内容过来即可]

    [样例:

    3.1.1 高可用

    对于微博子系统来说,如果消息丢了,导致没有审核,然后触犯了国家法律法规,则是非常严重的事情;对于等级子系统来说,如果用户达到相应等级后,系统没有给他奖品和专属服务,则 VIP 用户会很不满意,导致用户流失从而损失收入,虽然也比较关键,但没有审核子系统丢消息那么严重。

     

    综合来看,消息队列需要高可用性,包括消息写入、消息存储、消息读取都需要保证高可用性。

    ]

    [技巧:常见的复杂度都要覆盖到,即使分析后不涉及也要描述,避免评审的时候被人认为遗漏了关键点]


    3.2 总体架构

    基于上述分析,设计了学生管理系统的总体架构,如下图所示。


    1. 采用 nginx 网关,由 nginx 负责将请求转发到不同的子系统。

    2. 学生管理子系统负责维护学生的基本信息,所在班级信息等,该信息维护后,最终会为课程子系统服务。

    3. 成绩管理子系统负责老师统计学生考试成绩,学生在线查看考试成绩。

    4. 课程子系统负责课程管理、选课、课程信息查询、作业及笔记上传等功能,是对外提供主要业务功能的子系统。

    5. 考试管理子系统用于老师下发考试试题,学生在线考试,模拟考试,老师在线批改作业、在线监考管理,考试成绩会将考试成绩同步到成绩子系统。

    6. 数据库层面为保证数据高可用采用 mysql 主从复制,主库负责读写操作,将 binlog 同步到备库完成数据备份,备库提供读操作。

    4. 详细设计

    [必选,描述核心场景或者流程的实现机制]

    4.1 核心功能


    4.1.1 学生管理



    4.1.2 课程管理



    4.2 关键设计

    1. 系统的可扩展性

    通过分析系统的详细需求,抽象出对应的功能模块/子系统,将整个系统拆分为多个子系统,从而保证系统的可扩展性,在后续业务需求发生变更或者有新的业务需求时可以做到良好的扩展。

    2. 数据的高可用

    数据的存储采用主备的模式,保证了数据不会完全丢失,同时可以考虑采用云 RDS,可以进一步保障数据的高可用


    4.3 设计规范

    1. 系统的服务端开发语言使用 Java,开发框架采用 Spring Boot + Mybatis 开发,前端可采用 PHP 开发

    2. 服务端开发语言 Java 版本 1.8

    3. 服务端和前端的数据交互通过 HTTP 协议,数据格式采用 JSON,具体的结构需要在各模块设计方案里设计

    4. 数据采用 MySQL,版本 5.7,存储引擎采用 Innodb

    5. 质量设计

    1. 可测试性

    可以通过各个功能模块的接口,来进行系统的功能、性能测试

    2. 可维护性

    可通过系统日志,来定位、修复问题;准备好系统的启动、停机的脚本

    3. 可观测性

    可以通过各个功能模块的接口、系统的日志、系统常见指标的监控来观察系统的内部运行情况

    4. 安全

    通过防火墙来阻断常见的网络攻击,保障系统的安全性


    6. 演进规划

    一期:

    优先实现优先级最高的需求,能够在单个学校展开使用

    二期:

    扩展更多的功能,同时优化已有的功能点,在多个学校展开使用

    三期:

    建设学生管理 SAAS 平台,可接入全国的学校

    用户头像

    Leo

    关注

    还未添加个人签名 2018.12.03 加入

    还未添加个人简介

    评论

    发布
    暂无评论
    模块三作业