架构实战营模块 1 作业
1、微信的业务架构图
2.假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
① 要求可以通过公网域名访问;
② 要求至少 3 人合作完成;
③ 能够支撑管理 1000 个学生;
④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
① 大家都会 Java,但是有一个是 PHP 高手;
② 大家经济条件一般。
作业要求:
① 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
② 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
③ 给出你选择的最终方案以及选择理由
复杂度分析:
1.高性能:支持的学生数为 1000 人,用户量小,不需要考虑高性能;
2.高可用:学生管理系统,学生的数据不能出现大面积或者全部丢失,因此对高可用处于中等要求;
3.可扩展:业务要求比较复杂,
4.成本:因大家经济条件一般,因此整个系统开发需要考虑部署成本;因 3 人都会 java,因此开发语言采用 java,减少开发成本;
以下方案均购买云服务,减小成本
方案 1:
1.采用 dns 配置域名对外提供服务,对于 1000 人的学生系统完全够用;
2.因支持的学生数为 1000 人,且为毕设,数据量较小,数据库采用 sqlite,并且每日一备份;如果正式使用,可以切换成 mysql,只需改配置即可;因为 sqltie 数据库在数据伸缩性以及后期系统的并发、可用性上,不如 c/s 数据库;但作为毕设项目 sqlite 够用且 java 的组件支持,正式部署,易于替换;
方案 2:
方案 2 的内容基本和方案 1 相同,数据库切换成 mysql,如果系统正式部署,支撑的学生数量比较多,可采用该方案;
方案 3:
方案 3 的内容基本和方案 2 相比,dns 换成了 nginx,如果系统需支撑的学生数量比较多,web 并发访问量会增加,需要用到 nginx 做支撑;
作为毕业设计:选择方案 1,主要从满足系统需求和节省成本考虑;如果学校考虑正式部署:且在需求不变的情况下,考虑方案 2,主要从以后的扩展和数据可用性上做考量。采用 mysql 主备方案,可以规避一部分数据丢失的风险;
评论