架构实战营模块 1 作业
1、画出微信的业务架构图
2、“学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正的可运行的学生管理系统,学校对毕设的具体要求如下:
要求可以通过公网域名访问;
要求至少 3 人合作完成;
能够支撑管理 1000 个学生;
答辩的时候会根据架构方案进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
大家都会 Java,但是有一个是 PHP 高手;
大家经济条件一般;
作业要求:
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
给出你选择的最终方案以及选择理由。
需求:真正的可运行的学生管理系统
要求可以通过公网域名访问;
要求至少 3 人合作完成;
能够支撑管理 1000 个学生;
答辩的时候会根据架构方案进行打分,不推荐太简单和太复杂的方案。
判断:
公网域名访问
管理 1000 个学生
不推荐太简单和太复杂的方案
复杂度:
高并发:只有 1000 个学生,可能只有在选课的时候才会出现并发的情况, 可以考虑选课时增加服务器实例个数
高性能:可忽略
可扩展:
选课,考试需要代码的可扩展性,可插拔,模块化
需要支持服务力扩容(防止宕机)
安全:数据同步及每日备份
拆解:
域名
ng 转发
web 服务器
mysql 数据库
备选方案:
备选方案 1
备选方案 2:
取舍:
大家都会 java,但是有一个是 PHP 高手
方案 1:4 个业务模块一个整体的服务,考虑大家都会 java,如论从成本还是日常维护,所以选择 java 开发及部署
方案 2:分为 3 个子系统,因为有 PHP 高手,选课和考试会涉及一些并发所以 PHP 开发该模块,另外 2 个 java 同学开发学生管理及权限管理系统
选择方案 1
大家经济条件一般
通用:所以都选择从学校域名开通二级域名,并开通外网开名单
方案 2:单单从机器数量来看,备选方案 2 要保证高可用,至少需要 6 个实例,每个子系统 2 个实例,还有问题排查及子系统之前的调用链
方案 1:日常运行只需要 2 个实例来保证高可用,ng 随时切换
选择方案 1
更具架构设计三原则总结
方案 2 配备了合适原则及简单原则
评论