架构训练营 -4- 模块一作业
微信业务架构图
了解了一下微信的发展历程,以此做的一个粗粒度的业务架构图
“学生管理系统”毕设架构设计
毕设要求如下:
要求可以通过公网域名访问
要求至少 3 人合作完成
能够支撑管理 1000 个学生
答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
假设我方背景如下:
加上自己一共 3 个人
大家都会 Java,但是有一个是 PHP 高手
大家经济条件一般
作业要求:
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案
使用 PPT 来画出你的备选架构方案,并说明方案的优缺点
给出你选择的最终方案以及选择理由
架构设计方法论指导
首先,得到需求列表,对需求进行判断分析,如果有不明确的地方需要与需求方进行澄清,明确定义
其次, 判断需求列表中主要的复杂点有哪些,形成复杂度列表
再次,针对复杂度列表进行拆解,目的当然是为了降低系统的复杂度
然后,基于常见的套路拆解复杂度,得到多个备选方案
最后,根据目前自己所处的环境,条件,选择取舍一套最合适的方案
注:在整个判断、拆解、取舍过程中都需要遵循架构三原则(合适、简单、演讲)
架构实战
对学生管理系统的需求进行需求判断,判断出业务模块包括:学生管理、课程管理、考试管理、权限管理。
对学生管理系统的复杂度进行分析判断,包括其高性能、高并发、可用性、安全、成本等方面的复杂度分析结果如下:
高性能:从毕设要求来看最多 1000 人,其对性能要求不会很高
高可用:学生管理系统,一般来说没有金融、互联网行业的系统对高可用要求那么高,而且学生管理系统的不可用也不会太影响学校的正常工作;但是也要考虑数据方面尽量避免丢失很多或者所有学生信息,所以综合来看需要考虑数据的高可用要求
可扩展:业务功能比较多,复杂,需要考虑系统的可扩展性要求
安全、成本:安全方面,该系统不涉及到学生、老师什么隐私信息,安全方面不用过多;成本方面,从毕设角度考虑 3 个学生的经济条件一般,但是正常情况一般都学校提供服务器,如果实在要自己出,目前市面上云服务器也很便宜,因此成本可控
团队:成员技术方面都会 java,有一个 php 高手,那么可以考虑使用前后端分离 php+java
根据分析结果拆解复杂度,从而进行备选方案的设计
备选方案 1
备选方案 2
备选方案 3
方案取舍:基于架构三原则,最终选取备选方案 3 作为本次毕设的最终方案
评论