写点什么

模块 3 作业

用户头像
4anonymous
关注
发布于: 1 小时前

前言

本文是学生管理系统的详细架构设计文档,用于指导学生管理系统的后续的开发、测试和运维

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源, 处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从 学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改 不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

2. 约束和限制

  • 用 Spring Boot v2.5.4 版本开发

  • 开发语言使用 Java8

3. 总体架构

3.1 架构分析

3.1.1 高可用


学生管理系统系统可以承受一定时间的服务中断,但是不可以承受数据丢失。所以数据采用主备数据存储


3.1.2 高性能


由于学生人数整体规模不是很多(假设有 1 万人),通过负载均衡进行请求拆分,各个子系统部署多台机器提升性能


3.1.3 扩展性


把服务按照业务拆分为学生子系统、课程子系统、权限子系统,后续如果有业务变化可以把复杂业务再次拆分。

3.2 总体架构


    接入层:通过 DNS 直接配置相关域名到 nginx 服务器,如果 nginx 服务器有问题可以及时替换。


    业务服务器:多台主机部署,单机故障通过 nginx 的 upstream 摘除策略恢复。


    数据库: 数据库才用主备模式,备份数据库通过 binlog 实时同步主库数据,如果主库出现故障,在业务代码中及时切换。

    4. 详细设计

    4.1 核心功能

    4.1.1 选课流程



    4.1.2 权限校验和录入流程



    4.2 关键设计

    1)学生数据读取高性能


    为了保障学生数据随着时间增长带来的性能问题,把学生表按照学部拆分如文学部、理工部、外语部


    2)数据的可靠性


    有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证消息存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

    4.3 设计规范

    1)各个模块统一使用 Spring Boot v2.5.4 版本开发


    2)开发语言使用 Java8


    3)操作系统选用 centos8


    4)数据库选用 mysql 5.7 并选用 innodb 引擎


    1. 模块间使用 HTTP1.1 协议通讯,数据格式为 json

    5. 质量设计

    测试方案: 建设独立的预上线 beta 环境、测试的 test 环境,在上线前通过 beta 环境验证功能的正确性,功能开发后通过 test 环境整体测试。


    运维方案:线上、测试环境统一使用 centos8 系统,程序通过压缩包手动发布,并通过 systemd 启动和管理服务。


    可观测方案:日志使用 json 格式输出,并通过 ELK 组建采集、存储和查看。 程序通过 prometheus 系统监控,主要逻辑通过 prometheus java client 埋点输出。


    成本: 数据库要部署两台机器,业务服务两台,接入层 1 台,测试环境 1 台机器。

    6. 演进规划

    6.1 学生管理系统一期:实现课程管理、考试管理、权限管理模块的相关功能,满足正常使用的基本需求。


    6.2 学生管理系统二期:完善各个组建功能,并且建立可靠的业务和性能观测指标。

    发布于: 1 小时前阅读数: 2
    用户头像

    4anonymous

    关注

    还未添加个人签名 2017.10.19 加入

    还未添加个人简介

    评论

    发布
    暂无评论
    模块3作业