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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 极客时间架构实战营作业三

课程学习笔记

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


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
缓存 容灾 架构师
极客时间架构实战营总结
极客时间架构实战营总结
391 0
|
消息中间件 存储 关系型数据库
极客时间架构实战营作业八
极客时间架构实战营作业八
170 0
|
消息中间件 Java 中间件
极客时间架构实战营作业六
极客时间架构实战营作业六
126 0
|
资源调度 分布式计算 调度
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
|
容灾 网络协议
极客时间架构实战营模块 7 作业
极客时间架构实战营模块 7 作业
90 0
|
存储 缓存 负载均衡
极客时间架构实战营作业五
极客时间架构实战营作业五
137 0
|
22天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
43 3
|
1月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
21天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
142 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型

热门文章

最新文章