写点什么

架构实战营模块 1 课后作业

作者:swallowluo
  • 2021 年 12 月 08 日
  • 本文字数:1000 字

    阅读完需:约 3 分钟

1、微信业务架构图

微信业务架构图如下


2、学生管理系统架构设计

2.1 系统复杂度分析

  1. 高性能?只需管理 1000 学生,没有高性能要求。

  2. 高可用?毕业设计,可用性不必太高。

  3. 可扩展?学生数量少,不需要扩展。

  4. 安全?毕业设计,安全性不必太高。

  5. 成本?经济条件一般,要控制成本。

  6. 拆解?3 人合作完成,需要对功能进行拆解。

  7. 访问?通过公网域名访问。

分析总结:在架构设计过程中,需要关注的重点为:功能拆解、公网访问、控制成本。

2.2 备选架构一


架构说明:

  1. 为节约成本,采用内网穿透软件,实现内网应用到互联网域名的映射,生成的域名在系统集成测试和毕业设计检查时使用。在开发测试中,可以通过在内网,直接访问 Nginx 的方式进行测试。

  2. 应用部署在 Tomcat 上,使用 Nginx 作请求分发。

  3. 将系统拆分成三个子系统,以便 3 人分别开发。

  4. 数据存储在 MySQL 中,使用 MySQL 主备库保障数据高可用。

优点:应用拆分成三个子系统,开发时互不影响。

缺点:应用部署时比较复杂,如果应用要满足高可用要去的话,共需要部署 6 个实例,Nginx 的配置也比较复杂。数据库采用主备部署方式,需要做数据同步,部署较为复杂。

2.3 备选架构二


架构说明:

  1. 应用不拆分子系统,只是分成三个功能模块,以便 3 人分别开发。应用部署在 Tomcat 上,共部署两个相同的实例,通过 Nginx 实现负载均衡,实现应用的高可用。

  2. 其他部分的说明与架构一相同。

优点:应用部署简单。

缺点:开发前需要将功能模块的边界划分清晰。数据库采用主备部署方式,需要做数据同步,部署较为复杂。

2.4 备选架构三


架构说明:

  1. 为了节约成本,MySQL 不采用主备方式部署,而是通过在操作系统中设置定时任务,每天对 MySQL 中的数据进行完整备份,以实现最基本的数据高可用。

  2. 其他部分的说明与架构二相同。

优点:应用部署简单。数据库部署简单。

缺点:开发前需要将功能模块的边界划分清晰。

2.5 架构选择

建议选择架构三,原因如下:

一、合适原则

  1. 采用 Java 开发,符合三人技术水平。

  2. 毕业设计,不用申请永久域名,可以通过内网透传申请临时访问域名,控制成本。

  3. MySQL 采用每日备份,不采用主备复制方式,满足毕业设计的要求,控制成本。

  4. 使用开源软件,开发成本低。

二、简单原则

  1. 只做功能模块拆分,不做系统拆分,开发部署简单。

  2. 应用部署两实例,采用 Nginx 做负载均衡,数据库采用定时备份,在满足性能需求的同时,应用和数据都具备最基本的高可用,满足毕业设计的需要。

三、演化原则

  1. 毕业设计,无需演化。

  2. 学生数量较少,对性能要求不高,架构设计满足系统需要。

用户头像

swallowluo

关注

还未添加个人签名 2020.09.11 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块1课后作业