极客时间架构实战营作业三

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 极客时间架构实战营作业三

课程学习笔记

详细见:https://www.processon.com/view/link/613df63c7d9c081bd8fdc0b8


作业:


前言


本文的设计对象是外包学生管理系统,用于指导该系统后续的开发、测试与运维工作。


词汇表


Nginx:开源的高性能 HTTP 与反向代理 web 服务器;

MySQL:开源的关系型数据库

Spring Boot:后端 Java 开发框架

Vue:一套用于构建用户界面的渐进式框架。


1. 业务背景


   随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。随之而来的几个明显的问题:

  • 学校信息化管理水平低下,浪费太多师资力量在枯燥的数据录入和统计的工作中;
  • 数据处理效率底下,尤其是在新生入学或者考试季节,老师需要大量的时间处理相关事务,加班加点的现象在所难免;
  • 数据分析与报表基于 Excel,重复性劳动多,且出结果慢。

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

     本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等  功能设计的管理系统。

外包学生管理系统利益干系人分析图


外包学生管理系统由学校方采购,使用者包括学生与老师,系统由外包团队开发,后期由学校自己的运维人员负责运维,采用私有化部署方案。


2. 约束和限制


项目的相关要求包括以下几点:

  1. 两个月后需交付;
  2. 成本不能超过 30 万;
  3. 系统性能到达 200TPS;
  4. 系统出故障时,恢复时间不可超过半小时;
  5. 团队目前开发人员 5 人,测试人员 2 人,UI 设计 1 人,产品经理 1 人。


3. 总体架构


    总体架构包括架构分析、总体架构说明两部分。架构分析部分说明架构设计的考虑点,总体架构部分则对架构方案做详细说明。


3.1 架构分析


3.1.1 可扩展性

    系统业务涉及权限、审批等,业务较复杂,需借助工作流等技术,保证系统的可扩展性。

3.1.2 高可用(一定的可用性)

   系统需具备较好的可用性,服务于学校 5000 名师生,系统若宕机,则师生无法使用系统,影响较大。系统数据不能丢失,故数据库服务器需采用主从备份方案。

3.1.3 成本与安全

   由于学校预算有限,故系统应该尽可能采用开源的方案。校方要求两月内交付上线,故项目需要控制开发周期与成本。系统采用私有化部署,在局域网内部才可以访问系统,故系统只需要做一般的安全防护即可。

3.1.4 性能要求

   项目要求具备 200TPS,故数据库服务器需采用稍好一点的配置。备份服务器则不需要和主库拥有相同的配置。


3.2 总体架构


项目整体架构图如下:

https://www.processon.com/view/link/613e0a07f346fb070b9b519a

项目内部分为学生管理、课程管理、考试管理和权限管理四部分。项目采用前后端分离的模式,前端工程部署于 Nginx。后端项目开发基于 Spring Boot,采用 Java 语言开发系统,数据库采用 MySQL。数据库架构采用双主架构,主主互备,业务通过虚拟的 IP 连接数据库。文件管理基于 FastDFS。


4. 详细设计


详细设计概述


4.1 核心功能


4.1.1 学生管理


4.1.2 课程管理


4.1.3 考试管理


4.1.4 权限管理



4.2 关键设计


4.2.1 数据存储可靠性

      业务数据存储在 MySQL 中,有两台互为主备的 MySQL 服务器,MySQL 服务器之间互相数据备份以保证存储高可用。

4.2.2 权限管理

     权限管理基于 RBAC 模型,系统的各种权限全部抽象成角色,用户赋予角色,按角色进行数据权限与访问权限控制。

4.2.3 数据同步

     系统要求数据具备一定的可用性与容灾能力,采用主从同步的 MySQL 来实现数据同步。


4.3 设计规范


1)后端服务开发使用 Spring Boot + MySQL + Mybatis 开发;

2)MySQL 使用 Innodb 存储引擎,数据库采用双主;

3)前端开发采用 Vue + Axios;

4)负载均衡采用 Nginx。


5. 质量设计


5.1  可测试性设计

    由测试人员按照相关业务需求梳理出各项业务功能验证项。

5.2 可观测性设计

    日志记录到本地,分日志级别输出到不同的文件中。

5.3 可维护性设计

    编写 Shell 脚本,在程序宕机时,定时拉起程序;如果服务器主机宕机,则通过监测服务器发送报警信息,通知运维人员将机器重启。


6. 演进规划


快速迭代,与校方负责人核对需求,再进行改进,已辅助通过验收。交付验收后,系统日常运维即可,不涉及后续迭代。

6.1 第一周,出项目 UI 设计稿,梳理主要流程,与校方负责人确认。后端人员开始设计表结构,搭建项目基本框架;

6.2 第二~四周,确认设计稿,前后端正式按设计稿开始开发,完成一个最小化可行版本;

6.3 第五周,给客户演示最小化可行版本,与其确认功能是否正常,收集客户意见;

6.4 第六~七周,不断按客户意见进行迭代;

6.5 准备验收工作,到现场部署。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9月前
|
缓存 容灾 架构师
极客时间架构实战营总结
极客时间架构实战营总结
302 0
|
9月前
|
消息中间件 存储 关系型数据库
极客时间架构实战营作业八
极客时间架构实战营作业八
117 0
|
9月前
|
消息中间件 Java 中间件
极客时间架构实战营作业六
极客时间架构实战营作业六
73 0
|
7月前
|
资源调度 分布式计算 调度
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
|
9月前
|
容灾 网络协议
极客时间架构实战营模块 7 作业
极客时间架构实战营模块 7 作业
59 0
|
9月前
|
存储 缓存 负载均衡
极客时间架构实战营作业五
极客时间架构实战营作业五
91 0
|
9月前
|
存储 JSON NoSQL
极客时间架构实战营作业四
极客时间架构实战营作业四
79 0
|
1天前
|
消息中间件 监控 API
构建高效微服务架构是后端开发的关键
【5月更文挑战第22天】构建高效微服务架构是后端开发的关键,涉及核心原则如服务独立、去中心化、自治和轻量级通信。优势包括可扩展性、独立性、技术灵活性和团队协作。最佳实践包括恰当的服务拆分、选择RESTful API、RPC或消息队列进行通信、处理数据一致性和分布式事务、实施服务治理与监控,以及确保安全性与权限控制。随着技术进步,未来将探索服务网格、容器化和云原生技术,以提升微服务架构的效能和适应性。
9 0
|
2天前
|
消息中间件 安全 数据管理
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第21天】 在现代软件开发的浪潮中,微服务架构已经成为一种流行且有效的解决方案。它通过将复杂的应用拆分成一组小服务来增强系统的可维护性、扩展性和技术多样性。本文深入探讨了构建高效微服务架构的关键要素,包括服务划分原则、通信机制、数据管理以及安全性考量。通过对这些核心组件的分析,我们将揭示如何优化后端开发流程,以适应快速变化的市场需求和技术演进。
|
2天前
|
消息中间件 设计模式 开发者
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第21天】 在快速迭代的软件开发领域,微服务架构已经成为支持复杂应用和持续交付的关键设计模式。本文将深入探索微服务的核心原则、技术栈选择以及它们如何影响现代后端开发流程。通过分析微服务的设计理念和最佳实践,我们将了解如何构建一个既灵活又高效的系统,以应对不断变化的业务需求和技术挑战。