业务架构训练营第 0 期模块一作业
一、画出微信的业务架构图
二、“学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
要求可以通过公网域名访问;
要求至少 3 人合作完成;
能够支撑管理 1000 个学生;
答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
大家都会 Java,但是有一个是 PHP 高手
大家经济条件一般
作业要求:
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
给出你选择的最终方案以及选择理由。
知识回顾:
分析过程:
首先,题干中说:“大家都会 Java,但有一个是 php 高手”,所以综合下来,技术选型使用大家都熟悉的技术 Java。其次,题干中提到,“大家经济条件一般”,独立购买实体的服务器成本太高,选择使用阿里云服务器,学生有优惠,而且,可以按需购买,答辩后服务器可以释放。再次,题干中
提到,“管理 1000 个学生”,因此不需要高性能,由于学生信息的重要性和保密性,所以,系统需要做到高可用和安全性。对于 可运维性,没有明确说明,因此,想想空间很大。最后,“不推荐太简单和太复杂的方案” 这个不明确,但又很明确。不能搞个单体系统,也不能不顾目前的状况,搞
个微服务架构。最后,该项目需要至少三人协作完成 。 因此下面是我的设计方案。
从成本来看,优先选择 MySQL 数据库来存储数据。
(1)备选方案一
优点:
从成本上来说,共需 3 台服务器,经济和维护成本底。
数据库足够支撑管理 1000 个学生信息。
缺点:
web 服务器是单节点的,有宕机的风险。
(2)备选方案二
优点:
通过添加 nginx 反向代理和增加一台 web 服务器,一定程度上避免了单体容易宕机的风险。
可以支撑更多了请求量。
缺点:
引入了反向代理和增加一台 web 服务器,一定程度上增加了系统的复杂度,同时也增加了经济和维护成本。
(3)方案三:
优点:
系统拆分为多个子模块,并且可以独立部署,这样做,子系统故障,不会影响整个系统的运行。
各个子系统可以使用不同的开发语言,可以团队中 PHP 高手得以施展。
系统的可扩展性也得到了提高。
缺点:
首先方案三在方案二的基础上又增加了一台服务器,经济成本增加。
其次,各个子系统,其实还是单体系统,仍然存储单体故障的问题。不能保证高可用。
最后,虽然拆分为多个子系统,但同时也增加了子系统之间的复杂度。
综合上面三种方案,最后,我选择第二种方案。原因如下:
方案一虽然经济成本是最底的,但是 ,单体系统宕机 的风险更高。方案三经济成本和维护成本最高,复杂度也很高
而且,题目中要求,“不推荐太简单和太复杂的方案” 所以综合一下,我选择方案二,其它方案为备选方案。
版权声明: 本文为 InfoQ 作者【菠萝吹雪—Code】的原创文章。
原文链接:【http://xie.infoq.cn/article/9e6e9ed1dccaa89102bc0fc4a】。文章转载请联系作者。
评论