架构实战训练营 - 模块 1- 作业
1. 画出微信的业务架构图
业务架构图
描述系统对用户提供了什么业务功能
使用场景:
产品人员规划业务;
给高 P 汇报业务;
给新员工培训业务。
画图技巧:
通过不同颜色来标识业务状态;
业务分组管理。
微信业务架构图
子系统分层图
2.“学生管理系统”毕设架构设计
需求
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
① 要求可以通过公网域名访问;
② 要求至少 3 人合作完成;
③ 能够支撑管理 1000 个学生;
④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
① 大家都会 Java,但是有一个是 PHP 高手;
② 大家经济条件一般。
作业要求:
① 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
② 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
③ 给出你选择的最终方案以及选择理由。
复杂度分析
高性能?
仅需支持 1000 人,不需要过分考虑高性能
高可用?
数据不要全部丢失
可扩展?
需求有一定难度,需要可扩展
成本,安全?
开发人员,经济条件一般,成本需要尽可能的压缩。
最终分析复杂度为:
尽可能低的成本下,实现可扩展,高可用。
备选方案
方案 1
所有组件均采用阿里云成熟服务,并采取按量付费的方式,节约成本
SLB 实现高可用,高性能。
MySQL 主从,保证数据不丢失。
方案 2
所有组件均采用阿里云成熟服务,并采取按量付费的方式,节约成本
自己使用 ECS,搭建 Nginx,实现请求的分发。
服务拆分为 4 个微服务。
取舍结果
取舍依据,架构三原则
合适,简单,演化。
毕设项目,不涉及演化原则,这里仅考虑合适,简单 2 个原则。
经过分析,这个毕设项目的复杂度为:
尽可能低的成本下,实现可扩展,高可用。
方案 1,服务不拆分,数据不分离,但是实现了高可用,易扩展,成本低。
方案 2,服务拆分,数据不隔离,可以实现易扩展,但是如果实现高可用还需要,再多买 4 台服务器。
方案 1,相比方案 2 ,更省钱,更合适,更简单,所以最终取舍后的方案为 :方案 1
版权声明: 本文为 InfoQ 作者【温安适】的原创文章。
原文链接:【http://xie.infoq.cn/article/cfb3a54b3cf18b5428eebcdec】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论