作业:架构实战营模块 1
1. 画出微信的业务架构图
从架构设计角度,本次需求为微信的业务架构图,重点关注微信的顶层业务,子业务的细节部分不在本次范围内。
2. “学生管理系统”毕设架构设计
(1) 复杂度分析
高性能:没有高性能要求,系统压力不高,暂时不考虑。
高可用:目前阶段可以容忍段时间不可用,后续业务发展,需要支持高可用。
高并发:1000 个学生的系统,教师模块并发压力极地。学生模块并发有一定要求。
可扩展:随着后续业务增长会对高可用、高并发有进一步要求。
安全性:系统数据不能被外部系统获取,系统数据不允许全部丢失。
业务复杂度:短期内教师模块业务复杂度高于学生模块,长期看学生模块的复杂度要高于学生模块。
安全性 > 高并发 > 可扩展
(2) 备选方案 1
部署环境为:
前端:部署在云端,公网域名和前端解析均在云端进行。
后端:部署在个人电脑。
团队协作:
教师系统采用 PHP 进行开发。
学生系统前后端,由两名同学负责。
复杂度分析:
安全性:数据存在于内网环境,且有主备。
高并发:目前 1000 个学生的系统,由两个学生服务实例进行支撑。
可扩展:所有流量均通过部署在内容网的 Nginx 进行转发,可以很容易部署新机器以支撑高可用、高并发方面的扩展。
业务复杂度:通过拆解学生系统、教师系统,以做到数据、功能的隔离,降低业务复杂度。
(3) 备选方案 2
部署环境为:
前端:部署在云端,公网域名和前端解析均在云端进行。
后端:部署在个人电脑。
团队协作:
考虑到架构复杂度,以及开发压力,前端全部由 PHP 同学进行开发。
教师系统和学生系统后端分别由一位同学进行开发。
缺点:
前端部署在云端,费用的问题。
Mysql 备份库浪费资源。
(4) 备选方案 3
部署方案:
前后端均在个人电脑部署,前后端分别由一个 nginx 进行流量转发。(前端 nginx 可能由学校网络部门提供)
需要通过学校网络管理部门协调进行公网地址及域名的开通。
将 Mysql 在线热备,修改为离线备份或手动备份,也能满足对数据安全性的要求。降低
(5) 方案选择
方案选择:
安全性:所有方案,数据库都为内网存储,数据泄漏风险较低。且都有备份,虽然方案 3 为手动备份,但实际情况下,学生信息丢失对整个业务的影响比较小,也可以接受。但方案 3 数据库成本比较低。
高并发、高可用:可扩展:方案 1、2、3 均做到了学生系统的高并发、高可用支撑,且扩展性都比较好。
架构复杂度:方案 1 因为前端、后端均采用了两种架构,因此架构复杂度较高。且方案 1 中 PHP 同学负责整个教师系统的开发,压力会比较大。
综合考虑,选择方案 3.
评论