业务架构学习笔记一:作业

一、画出微信的业务架构图

二、“学生管理系统”毕设架构设计

假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:

  1. 要求可以通过公网域名访问
  2. 要求至少 3 人合作完成;
  3. 能够支撑管理 1000 个学生
  4. 答辩的时候会根据架构方案来进行打分,不推荐太简单太复杂的方案

你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:

  1. 大家都会 Java,但是有一个是 PHP 高手
  2. 大家经济条件一般

作业要求:

  1. 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
  2. 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
  3. 给出你选择的最终方案以及选择理由。

知识回顾:

 

 

 分析过程:

首先,题干中说:“大家都会Java,但有一个是php高手”,所以综合下来,技术选型使用大家都熟悉的技术Java。其次,题干中提到,“大家经济条件一般”,独立购买实体的服务器成本太高,选择使用阿里云服务器,学生有优惠,而且,可以按需购买,答辩后服务器可以释放。再次,题干中

提到,“管理1000个学生”,因此不需要高性能,由于学生信息的重要性和保密性,所以,系统需要做到高可用和安全性。对于 可运维性,没有明确说明,因此,想想空间很大。最后,“不推荐太简单太复杂的方案” 这个不明确,但又很明确。不能搞个单体系统,也不能不顾目前的状况,搞

个微服务架构。最后,该项目需要至少三人协作完成 。 因此下面是我的设计方案。

 

 

 从成本来看,优先选择 MySQL数据库来存储数据。

 

(1)备选方案一

 

优点:

  • 从成本上来说,共需3台服务器,经济和维护成本底。
  • 数据库足够支撑管理1000个学生信息。

缺点:

  • web服务器是单节点的,有宕机的风险。

(2)备选方案二

 

优点:

  • 通过添加nginx反向代理和增加一台web服务器,一定程度上避免了单体容易宕机的风险。
  • 可以支撑更多了请求量。

缺点:

  • 引入了反向代理和增加一台web服务器,一定程度上增加了系统的复杂度,同时也增加了经济和维护成本。

(3)方案三:

 

优点:

  • 系统拆分为多个子模块,并且可以独立部署,这样做,子系统故障,不会影响整个系统的运行。
  • 各个子系统可以使用不同的开发语言,可以团队中PHP高手得以施展。
  • 系统的可扩展性也得到了提高。

缺点:

  • 首先方案三在方案二的基础上又增加了一台服务器,经济成本增加。
  • 其次,各个子系统,其实还是单体系统,仍然存储单体故障的问题。不能保证高可用。
  • 最后,虽然拆分为多个子系统,但同时也增加了子系统之间的复杂度。

 

 

综合上面三种方案,最后,我选择第二种方案。原因如下:

  • 方案一虽然经济成本是最底的,但是 ,单体系统宕机 的风险更高。方案三经济成本和维护成本最高,复杂度也很高
  • 而且,题目中要求,“不推荐太简单太复杂的方案” 所以综合一下,我选择方案二,其它方案为备选方案。

 

posted @ 2021-04-06 22:17  菠萝吹雪—Code  阅读(909)  评论(0编辑  收藏  举报