模块一作业 (微信业务架构图 & 学生管理系统方案)
1. 微信业务架构图
2. 学生管理系统方案
题目:
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
1.要求可以通过公网域名访问;
2.要求至少 3 人合作完成;
3.能够支撑管理 1000 个学生;
4.答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
1.大家都会 Java,但是有一个是 PHP 高手
2.大家经济条件一般
作业要求:
1. 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
2.使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
3.给出你选择的最终方案以及选择理由。
2.1 方案一
本方案学生管理系统整体作为一个部署单元部署在两台服务器上,前面采用 nginx 做为反向代理两台应用服务器,存储采用 mysql 一主一备,保证存储安全可靠。
2.1.1 优点
所有功能模块在一个工程里,业务复杂度不高时,开发效率高,部署简单
整体架构简单,便于理解
数据存储一主一备,能保证存储安全可靠
2.1.2 缺点
横向扩展时需要更多的应用服务器,成本较高
2.2 方案二
此方案还是用 nginx 作方向代理,存储依然采用 mysql 一主一备,保证存储安全可靠。与方案一不同点时,将用户管理、权限管理、课程管理、考试管理独立成单独的服务,部署在不同的应用服务器上。
2.2.1 优点
各个独立的服务能更灵活的横向扩展,能支撑更多的流量;
如果人力充足将人员按小组划分,每个小组负责各个服务,互不影响,有利于快速迭代;
数据存储一主一备,能保证存储安全可靠
2.2.2 缺点
需要更多的应用服务器,成本高;
各个服务互相调用,外部复杂度较高;
2.3 方案三
此方案还是用 nginx 作方向代理,存储依然采用 mysql 一主一备,保证存储安全可靠。所有的功能模块还是存在于一个项目中。此方案中采用了容器技术,可在一台物理服务器上通过容器技术部署多个学生管理系统。
2.3.1 优点
所有功能模块在一个工程里,业务复杂度不高时,开发效率高;
整体架构简单,便于理解;
数据存储一主一备,能保证存储安全可靠;
通过容器技术充分利用服务器资源,横向扩展时,无需更多服务器,节约成本;
2.3.2 缺点
引入容器技术需要开发人员学习了解;
部署发布较麻烦;
2.4 结论
基于以下几点:
能够支撑管理 1000 个学生;
方案不能过于简单也不宜过于复杂;
团队成员 3 人左右且都会 java;
经济条件一般;
再结合课程所学到的架构设计三原则:合适、简单、演进,最后选定"方案三"为最终方案。理由如下所示:
整体架构简单,少数几人合作即可完成开发,部署发布;
学生管理系统最主要是数据存储安全,采用存储一主一备,能保证存储安全可靠;
容器技术可以在使用两台物理服务器的前提下,达成部署多台应用服务器的目的,控制了成本;
版权声明: 本文为 InfoQ 作者【缘分呐】的原创文章。
原文链接:【http://xie.infoq.cn/article/0af7d497324e37a6acacef0d7】。未经作者许可,禁止转载。
评论