作业一:画出微信的业务架构图
本图将微信的基本业务功能分为四层:
- 最底层为最基础的功能,这些功能会在多种业务场景下被复用,也是其他业务实现的必要前提。
- 第二层中支付业务占比较重,相比于微信的社交业务而言,支付业务相对独立,同时为社交业务提供支付方面的功能支持。同时,微信的社交是熟人社交,因此通讯录业务也是上层社交业务的基本支撑。
- 第三层是微信最核心的社交业务层,包含聊天业务和朋友圈业务的各种功能。
- 第四层是微信基于其用户管理、社交和信息分发能力所提供的开放平台,以及更多元化的信息发布形态。
作业二:“学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
- 要求可以通过公网域名访问;
- 要求至少 3 人合作完成;
- 能够支撑管理 1000 个学生;
- 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
- 大家都会 Java,但是有一个是 PHP 高手
- 大家经济条件一般
作业要求:
- 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
- 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
- 给出你选择的最终方案以及选择理由。
复杂度分析
需求要求系统可以真正运行、对外提供访问能力,因此需要满足一定的可用性,虽然学生管理系统对高可用的要求不是太高,但也不能长时间或频繁发生故障,系统的操作体验应当直观、流畅,业务流畅完整。支撑管理1000个用户这样的量级通常单机性能就足以支撑,但在数据安全性方面必须提供至少一台备机。项目成员经济条件有限,因此不能使用太复杂、成本太高的方案,且无须考虑持久扩展演进。
备选方案一
本方案使用Nginx服务器进行负载均衡,后端搭配两台业务服务器实现高可用。文件服务器和数据库服务器均使用一主一备模式,读写操作均访问主服务器,备服务器仅作为数据备份使用。
优点:部署简单,访问稳定。
缺点:需要较多的服务器资源。
备选方案二
本方案使用了DNS服务器进行负载均衡,后端使用两台Docker服务器,业务服务和数据库服务均以docker容器形式运行,文件服务器为所有的容器提供数据持久化支持。
优点:DNS资源相比Nginx服务器更容易获得,也更容易配置,成本也更低,容器化的服务确保了服务的快速迁移和恢复。
缺点:需要对Docker有一定的了解,Docker容器在性能上不如独立的物理服务器。
备选方案三
本方案使用全云端服务,借助云服务商提供的各类服务来完成基础设施的搭建。
优点:成本低,可扩展,无需担心高性能、高可用问题。
缺点:迁移困难,需要按照云服务模式进行部署。
方案对比
上述三种方案分别代表了传统部署方式、容器化部署方式和全云端部署方式,第一种方案需要的机器较多,存在性能过剩、资源浪费、成本较高的问题,第三种方案虽然成本低、可靠性和可用性高,但由于完全依赖云服务商提供的云端基础设施,使得整个架构难以迁移,只能持续租用资源,而很难利用学校已有的资源。综上,方案二是相对折中合理的方案,既减少了机器资源的消耗,又能够保障数据的安全,其性能也足以支撑当前的访问量。另外,考虑到毕业设计要求至少3人合作完成,因此选择Java作为后端开发语言。