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

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

课程学习笔记

详细见: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 准备验收工作,到现场部署。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
缓存 容灾 架构师
极客时间架构实战营总结
极客时间架构实战营总结
1027 0
|
消息中间件 存储 关系型数据库
极客时间架构实战营作业八
极客时间架构实战营作业八
383 0
|
消息中间件 Java 中间件
极客时间架构实战营作业六
极客时间架构实战营作业六
445 0
|
资源调度 分布式计算 调度
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
|
容灾 网络协议
极客时间架构实战营模块 7 作业
极客时间架构实战营模块 7 作业
261 0
|
存储 缓存 负载均衡
极客时间架构实战营作业五
极客时间架构实战营作业五
422 0
|
9月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。