写点什么

架构实战营模块四作业

作者:Evan
  • 2022 年 1 月 09 日
  • 本文字数:899 字

    阅读完需:约 3 分钟

前言

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

词汇表

Reactor:网络编程模型

1. 业务背景

随着学生管理功能的逐渐增多,学生和老师对管理系统的使用日渐频繁,原有的单体架构的学生管理系统出现了性能问题,耦合问题和效率问题。

基于以上原因,项目需要对系统进行功能拆分,将目前个一个服务改为多个服务。

2. 约束和限制

项目需要在三个月内完成,可投入人力为 3 人,需求方对项目质量要求较高,不能出现明显的 bug。

3. 总体架构


3.1 架构分析

高可用:可以每个子系统部署多个服务实例,通过 nginx 进行随机负载均衡,保证在某个服务实例挂掉的情况下,其他服务实例依然能够对外提供服务

可扩展:可以方便的增加其他子系统功能,也可以对已有子系统增加更多的服务实例,整个系统的扩展性好

高性能:将系统拆分为多个子系统后,对每个子系统的访问压力变小,可以提高整个系统的性能


3.2 总体架构

1) 采用数据集中集群的架构,多个子系统复用同一个数据库

2) 包含一台主 MySQL 和一台备 MySQL,主备数据复制

3) 客户端采取轮询的策略写入和读取消息

4. 详细设计

4.1 核心功能

学生子系统负责对学生基本信息的管理

课程子系统负责对课程的管理

权限子系统负责对不同角色不同权限的区分

4.2 关键设计

权限子系统设计:角色分为系统管理员、校长、系主任、授课老师、学生,不同的角色对应不同的数据权限

学生子系统设计:学生子系统仅维护学生的基本信息,包括和授课老师的关联信息,与课程信息的交互通过统一数据库完成

课程子系统设计:课程子系统仅提供课程相关的接口,与学生信息的交互通过统一数据库完成


4.3 设计规范

项目采用 Spring Boot 开发,使用内置 Tomcat 容器,Spring MVC 分层服务

MySQL 使用功能 Innodb 存储银清

请求格式为:xxx

返回格式为:xxx

5. 质量设计

可维护行:提供后台管理页面,方便对角色权限进行管理;

可测试性:方法尽量简短方便单元测试,对外提供标准 Restful API,可以以子系统为单位进行功能测试

可观测性:打印详细日志;增加审计接口

成本考虑:数据库

6. 演进规划

后续可以增加更多的子系统

如果业务量继续增加,可以考虑拆分数据库,每一个子系统一个数据库,但这样会涉及到子系统之间的交互

用户头像

Evan

关注

还未添加个人签名 2018.06.01 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块四作业