写点什么

架构实战营模块 3 作业

作者:陌生流云
  • 2022-10-13
    辽宁
  • 本文字数:988 字

    阅读完需:约 3 分钟

前言

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

词汇表

Nginx:是一个高性能的 HTTP 和反向代理 web 服务器。

SpringBoot:框架,用来简化 Spring 应用的初始搭建以及开发过程。

MySQL:是一个开源的关系型数据库。

MyBatis Plus:是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

Forest:Forest 是一个高层的、极简的声明式 HTTP 调用 API 框架。


1. 业务背景

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

  • 解决的问题:学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

  • 实现的目标:提高学生管理的管理水平,优化资源,尽可能降低管理成本。系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率

  • 完成的任务:统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询


2. 约束和限制

  • 开发时间 1 个月

  • 开发语言 Java,框架 Spring Boot,数据库 MySQL

  • 内网访问,加密防刷

  • 数据存储高可用,不可丢失

3. 总体架构

3.1 架构分析

  • 高可用:内部系统,服务间高可用(重试、幂等)数据高可用(事务、数据库主从备份,每日备份)

  • 可扩展:每个模块独立部署,如有新需求类型可以继续扩展出新服务模块。

  • 高性能:无高性能需求,选课也就几百 QPS

  • 安全:请求安全(内网访问、防刷限流、加密),数据安全(脱敏)

3.2 总体架构

系统架构图

系统边界白盒图

4. 详细设计

4.1 核心功能

考试流程


4.2 关键设计

  • 拆分多个子系统,降低代码耦合度,不同人开发不同模块,提升效率

  • 数据库主备同步,每日备份

  • 服务间调用重试机制,调用幂等性

  • 数据补偿机制

4.3 设计规范

  • 语言:Java 8

  • 语言框架:SpringBoot 框架

  • 数据库:Mysql InnoDB 存储引擎,主备架构

  • 数据源管理:Alibaba Druid

  • 接口规范:RESTful API,JSON 格式

  • HTTP 调用 API 框架:Forest

  • 单点登录:JWT

5. 质量设计

  • 可测试性

  • RESTful,接口测试使用 Postman,压测 ab 命令

  • 可维护性

  • 接口文档,表结构设计

  • 可观测性

  • 服务监控:SpringBoot Actuator

  • 日志监控:系统文件,定时切割

  • 成本

  • 架构简单,研发、测试、运维成本忽略

6. 演进规划

一期:权限管理、学生管理、课程管理、系统管理

二期:外包项目,暂不考虑。如需考虑可接入短信推送,报表管理

用户头像

陌生流云

关注

还未添加个人签名 2018-04-26 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块 3 作业_架构实战营_陌生流云_InfoQ写作社区