架构师实战营 模块一作业 微信业务架构图
画出微信业务架构图
设计学生管理系统
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
要求可以通过公网域名访问;
要求至少 3 人合作完成;
能够支撑管理 1000 个学生;
答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
大家都会 Java,但是有一个是 PHP 高手
大家经济条件一般
作业要求:
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
给出你选择的最终方案以及选择理由。
需求分析:
公网能访问,需要注册域名。
1000 个学生访问。
架构设计要求:
高性能?不需要。1000 个学生并不多。
高可用?需要,数据不可以丢失。
可扩展?不需要,使用成熟的系统即可。
复杂度:
业务复杂度低:业务比较单纯。
技术复杂度低:不需要太高的性能和可扩展性。
架构三原则:
合适原则:都会 Java,一个 PHP 高手,可以考虑用 Java 做后端,PHP 做前端。
简单原则:业务不需要拆分太细,不需要微服务。
演化原则:学校学生数量变化不大,不怎么需要演化。
备选架构方案设计
方案一:单机房数据隔离
服务不隔离,数据库隔离,把每个学校的数据放在不同的 MySQL 服务器上。数据 MySQL 主从复制,每日备份。
方案二:单机房服务、数据双隔离
相比方案一,不同学校的服务也隔离在不同的容器内部了。
方案三:双机房数据隔离
两个机房分别运行相同的微服务和存相同的数据。好处是某个机房故障后,另一个可以马上启用。
方案四:双机房服务数据双隔离
这样可以确保服务和数据都是完善,没有丢失的。
方案的选择:选方案一
原因:单机房成本低,对三个学生来说,负担得起。
方案二的服务隔离,没有必要,不符合简单原则。
方案三的 Docker 集群没必要,不符合简单原则,也不符合演进原则。
方案四成本太高,不符合简单和演进原则。
评论