写点什么

架构实战营 模块三

用户头像
听闻
关注
发布于: 1 小时前

前言

本文档为 xx 大学学生管理系统的设计文档, 说明了系统设计考虑, 系统架构以及大致流程, 用于在开发初期达成共识, 及指导后续系统开发.

词汇表

Spring: Java 生态系统中使用最广泛, 便于维护的框架.

MySQL: 使用最广泛的开源数据库.

Nginx: 使用最广泛的高性能 HTTP 服务器和反向代理.

业务背景

随着学校招生规模不断扩大, 学生数量的增加, 原有的各项流程纸质人工操作耗时人力消耗越来越大, 流程的耗时也越来越大.

学校需要进行信息化管理, 提高效率, 加快流程时间. 故需要开发学生管理系统.

新系统需要包含学生信息管理, 选课管理, 考试流程等主要功能.

约束和限制

语言框架: 为方便后续维护, 需要使用 Java 技术栈

时间: 2022 年 12 月 1 日需要开发完成, 2022 年 1 月 1 日需要测试完成,明年开学(2022 年 2 月初)开始试用和迁移. 系统使用初期需要有 6 个月的免费维护期.

费用: 开发费用 50 万, 后续每月服务器成本及维护费用低于 1 万/月

总体架构

架构分析

高可用

属于管理系统, 可以在深夜或者周末, 节假日进行维护. 对可用性要求不会很高.

高性能

学校的人数有限, 且大部分时间大家都不会使用该系统. 仅需对部分模块, 比如选课, 考试进行特殊设计.

可扩展

无特殊要求

安全性

学生基本信息数据比较重要, 考试成绩安全性也很重要.

要防止黑客攻击, 也要防止数据丢失.

需要做好权限控制, 流程审查, 日志记录, 数据库主从半同步, 核心数据每日冷备.

总体架构

根据学校的要求, 学校的系统一般部署于学校的机房内. 也可部署于与学校有网络互通的云厂商上.


通过 nginx 隔离内外网. 系统较为简单, 不涉及太复杂的接口层以及服务注册发现.

dns 指向多台 nginx 地址, 由 nginx 根据 url, 路由到不同后台服务, 后台逻辑服务处理逻辑, 访问 db 等.

网页可部署于 nginx 或者部署于逻辑服务中.

详细设计

核心功能

登录过程

...

用户信息管理

...

课程管理

....

关键设计

用户与 nginx 之间使用 https 协议.

前端 Vue, 后端使用 Spring Boot.

数据库主从半同步.

设计规范

前端使用 Vue, 后端使用 Spring Boot, 前后端分离, 使用 HTTP 接口通信, 方便开发和维护.

接口格式及通用错误码规范

......

后台代码分层规范

......

后台库和组件使用规范

......

后台代码风格规范

......

前端代码规范

......

前后端安全规范

......

测试方法及规范

......

质量设计

可测试性

使用人工进行系统集成测试即可.

可维护性

系统分为 3 个子系统, 3 个模块高内聚低耦合, 便于维护.

可观测性

系统较为简单, 日志即可. 为了方便问题分析及追溯, 日志保存 180 天及以上.

nginx 需要打印简明的访问日志, 后台服务对于错误信息需要打印, 写逻辑所有日志均要打印. 关键操作需要记录 db.

成本

nginx 2 台 4 核 8G, 500 元/月*2=1000 元/月

3 个服务, 每个服务 2 台机器, 4 核 8G, 500/月*6=3000 元/月

1 主 1 备 mysql, 8 核 16G, 1T, 1000/月

学校内网, 带宽成本可忽略.

机器成本 5000 元/月, 我司维护成本低于 2000 元/月, 故系统运行每月成本<7000 元, 符合学校的 1 万元以下的要求.

演进规划

根据后续学校的要求, 可进行相应的演进. 以下的可能方向供参考:

优化

ui, 流程优化

性能优化

移动化

支持手机 web 网页渲染

支持公众号绑定, 微信查询

更多功能

考试成绩统计

学生网络网络课程等

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

听闻

关注

还未添加个人签名 2020.11.19 加入

还未添加个人简介

评论

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