模块 3. 架构设计
前言
本文是外包学生管理系统的详细架构设计文档,用于指导外包学生管理系统后续的开发、测试和运维。
词汇表
Java:是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了 C++里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
Vue:是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用(SPA)提供驱动。
Nginx:是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强。
MySQL:是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
Springboot:是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管 Spring 框架自身对编程模型没有限制,但其在 Java 应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。
SpringCloud:是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
Http:是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
JSON:是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的 js 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
1. 业务背景
随着学校开设的课程日益增多,招生人数也在逐渐扩大,学生选课需求日益强烈,为提高学生选课的效率,解放老师在选课方面的投入成本,故通过使用外包学生管理系统,来实现自动化选课。
2. 约束和限制
1、必须在 2021.06.30 号前完成
2、成本不能超过 100 万
3、数据库采用 MySQL
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于外包学生管理系统来说,只是丢失小部分数据,影响不大,采用 Mysql 主备机制就可以,对于主备复制的过程有可能会丢失数据。
3.1.2 高性能
对于外包学生管理系统来说,性能要求并不高。
3.1.3 可扩展
对于外包学生管理系统来说,支持扩展。
3.2 总体架构
1)采用微服务方案,拆分为学生、课程、权限三个子系统。
2)数据库存储包含一台主 MySQL 和一台备 MySQL,主备数据复制。
4. 详细设计
[必选,描述核心场景或者流程的实现机制]
4.1 核心功能
4.1.1 学生选课流程:
4.2 关键设计
数据存储可靠性
数据存储在 MySQL 中,有一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据以保证数据存储安全。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分数据会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。
4.3 设计规范
1)学生、课程、权限服务器使用 Spring Cloud 开发
2)前端网站使用 Vue 开发
3)MySQL 使用 Innodb 存储引擎
4)使用 Http 进行系统间接口调用
5)数据传输使用 JSON 格式
5. 质量设计
5.1 后台管理系统
教师的管理维护等
5.2 成本
出于成本考虑,暂时不考虑集群部署,部署服务器使用 6 台服务器:
1 台部署 nginx 和前端
3 台分别部署学生、课程、权限子系统
2 台分别部署 Mysql(主),MySQL(备)
6. 演进规划
6.1 第一个迭代:选课流程相关的功能开发
6.2 第二个迭代:后台管理系统的功能开发
6.3 第三个迭代:客户环境部署、测试
评论