1. 画出微信的业务架构图

如图:
微信业务架构.png

2. “学生管理系统”毕设架构设计

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

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

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

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

作业要求:

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

架构方案

最终选择方案一,理由如下:

  1. 可以满足业务需求。
  2. 根据简单原则,部署和开发都前期很简单。
  3. 毕业设计,暂时不用考虑之后的演进。

备选方案一

架构图如下:
student-design1.png

架构:采用单体架构,一个应用包含所有功能。

语言:统一语言,采用 Java

缺点:横向扩展能力较弱,多人协同操作。
优点:架构简单,Nginx配置简单,部署简单,可快速开发。

备选方案二

架构图如下:
student-design2.png

架构:采用微服务架构,每个服务提供单一具体服务。

语言:可同时采用 JavaPHP

缺点:服务之间调度变复杂,前端联调变复杂。
优点:横向扩展能力较强,服务与服务之间影响较弱,单个服务部署容易,单个服务可快速迭代。