架构实战营 模块一 作业
作业一:微信业务架构图
作业二:“学生管理系统”毕业架构设计
学院毕设具体要求
要求可以通过公网域名访问
要求至少 3 人合作完成
能够支撑管理 1000 个学生
答辩的时候会根据架构方案进行打分,不推荐太简单和太复杂的方案。
当前条件
3 个人一组
3 人都会 Java,其中 1 人精通 PHP
大家经常条件一般
作业要求
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案
使用 PPT 画出你的备选架构方案,并说明方案的优缺点
给出你选择的最终方案以及选择理由
系统需求分析
【业务需求分析】
1、学生管理需求
2、教师管理需求
3、课程管理需求
4、考试管理需求
5、权限管理需求
【平台需求分析】
1、 支持公网域名访问,即需要使用 DNS、Nginx 支持。
2、至少支撑 1000 个学生管理
方案设计
复杂度分析
高性能分析:目前要求可支撑管理 1000 名学生,加上管理员及老师,最多可管理 1200 人左右。
高可用分析:考虑到学生管理系统非重要核心系统,无需考虑高可用,但是对于核心数据比较敏感,允许少量数据丢失,但是不能丢失全部数据,需要保障数据的高可用。
高扩展分析:目前学校独立使用,需求比较单一,系统完成后可持续使用,无需考虑高扩展。
成本分析:考虑到是学生,经济能力有限,故采用低成本。
安全分析:需要保障核心学生隐私信息。
综上所述,对于该系统,需要满足以下条件:
数据高可用,保障核心数据不会全部丢失。
低成本。
用户隐私信息安全保障。
备选方案
方案一:单机应用
优点:成本少,无需考虑复杂场景
缺点:单机应用,数据库无备份功能。
方案二:拆分子系统
优点:按模块拆分子系统,各系统相对独立。
缺点:考虑到三个人,开发会相对复杂,出现故障难以快速定位。
方案三:负载均衡
优点:有数据库备份,负载均衡保障服务高可用。
缺点:成本相对来说比较高。
方案取舍
从团队人员来看,一共三个人,其中三个都会 Java,其中一个 PHP 高手。考虑到业务相对不会很复杂,且后续维护方便,所有采用 Java 编程语言。
团队成员经济一般,所以采用中低成本架构设计。
能够支撑管理 1000 名学生,所以对高性能要求比较低。
学校要求不能过于简单或过于复杂。
根据以上判断,选择方案三。
架构设计三原则
合适原则
1、符合团队技术人员的要求,没有过高的技术要求
2、开发成本与经济成本相对比较低
简单原则
1、没有进行业务拆分,部署及维护比较简单
2、没有用到微服务,无需用到微服务的底层技术
演进原则
学生数量相对固定,不会发生太多变化
评论