写点什么

架构实战营模块三作业

用户头像
maybe
关注
发布于: 58 分钟前
架构实战营模块三作业

作业要求

详细作业:


外包学生管理系统详细架构设计文档

前言

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

词汇表


业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题。


开发学生管理系统系通过统规范化地管理、科学性统计和快速查询、修改、增加、删除等手段解决学生信息管理数据信息量大修改不方便、对一系列数据进行分析时花费时间长等问题,从而提高信息的准确度以及日常管理的工作效率。

约束和限制

1.      一期架构不能太复杂,要能应对业务的快速变化。

2.      项目开发必须在 5 个月内完成并上线。

3.      技术必须采用主流技术。

总体架构

分析

1.       高性能:学校学生数量比较稳定,一个学校几万人,系统没有高并发场景,没有高性能要求。

2.       高可用:学校的正常运作不太依赖学生管理系统,宕机若干小时对学校影响较小,服务高可用要求不高。但是数据比较重要,不能出现宕机后丢大量数据,要保证数据的高可用。

3.       可扩展:学校业务需求比较复杂,且具有易变性,可扩展必须考虑。

4.       成本:对于本校使用的学生关系系统,成本不会很高,可不考虑。

5.       安全:系统的数据都是可公开的数据,安全要求不高。

6.       其它:无。

设计



1.       采用一台 Nginx 服务器充当任务分解器,将请求分发到对应的业务子系统。

2.       整个系统拆分为三个业务子系统:学生子系统、课程子系统、权限子系统。各子系统通过 HTTP 接口进行交互。

3.       两台 MySQL 组成主备关系,采用异步复制方式进行数据同步。若主机宕机,备机则提供写服务。

详细设计

权限管理

采用基于资源的访问控制(Resource-Based Access Control)模型。权限子系统实现 OAuth 2.0 授权机制,负责整个系统的认证授权。



1.      权限子系统根据 Oauth2.0 协议,实现认证服务、授权服务,提供用户密码、客户端授权模式。

2.      用户通过用户密码模式进行认证授权,子系统间通过客户端模式进行认证授权。

数据可靠性



1.      两台 MySQL 组成主备,异步复制。

2.      通过 keepalived 进行主备监控和故障切换。

3.      业务服务通过虚拟 VIP 地址连接 MySQL。

关键设计

业务可扩展

整体系统拆分为三个子系统,把易变的学生管理和课程管理拆分为单独的服务,更容易应对业务的变化,扩展性更好。而权限部分相对稳定,拆分为单独的服务,当其它系统修改的时候权限部分都不受影响。

数据可靠性

MySQL 采用异步复制的方式,保证了 MySQL 高性能的写入。采用 Keepalived 进行主备监控和故障切换,能快速实现 MySQL 故障的切换且对服务是透明的,减少了服务不可用时间。

设计规范

1.      使用 SpringBoot 2.5.0 作为基础框架,Mybatis 3.3.1 做数据持久化映射。

2.      使用 Spring Security 5.0 安全框架实现 Oauth2.0 认证授权。

3.      子系统通过 Rest API 进行通信。

4.      使用 MySQL 5.7 社区版,InnoDB 引擎。

5.      Keepalived 使用 2.1.5 版本

质量设计

1.      增加一个超级管理后台,汇集系统的健康、性能、业务等各种指标,提供系统优化的数据来源

演进规划

1.      项目一期按照上面要求实现。

2.      项目二期实现服务的高可用(一期只有数据高可用)。

3.      项目三期落地微服务架构。

4.      项目四期完成平台的云化。

用户头像

maybe

关注

还未添加个人签名 2019.03.25 加入

还未添加个人简介

评论

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