微信业务架构 & 学生系统管理系统设计
微信业务架构图
学生管理系统设计
背景描述
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
① 要求可以通过公网域名访问;
② 要求至少 3 人合作完成;
③ 能够支撑管理 1000 个学生;
④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
① 大家都会 Java,但是有一个是 PHP 高手;
② 大家经济条件一般。
作业要求:
① 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
② 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
③ 给出你选择的最终方案以及选择理由。
全局分析
要完成公网域名访问。就需要购买域名和 DNS 解析服务。由于是毕设,可以尽量挑选价格低的冷僻域名
经济条件一般。由于学生身份,可以提前选择在搞活动的时候,购买云服务器,节约开支。
学校管理系统,为学习内部使用,1000 人左右。没必要使用微服务等较复杂的架构。
方案一
分析
大家都会 java,那么大家统一技术栈,都使用 java + jsp 开发,不专门设置前端开发。
1000 个学生的信息,不能容忍数据全部丢失,所以要配置 mysql 主备。
只购买一台服务器,nginx,tomcat,mysql 两个实例主备 全都部署在单台服务器上。将来如果真正使用时可按照设计部署多台服务器,达到真正的高可用效果。
nginx 负责 tomcat 负载均衡。
架构设计图
方案二
分析
前后端分离,php 负责前端开发,两名 java 负责服务端开发。
买两台服务器,一台服务器部署应用服务器+mysql 主,另一台服务器配置 mysql 从。
nginx 动静分离,负载均衡
架构设计图
架构选择
方案一采用 java 全栈开发,技术栈统一,方案二前后端分离,方案一相对简单且维护成本低。
部署的话,工作量差不多,但是方案二 web 文件需要单独部署,稍差一点。
性能的话,方案二会好一点,但是两个方案都满足要求,且因为服务是无状态的,扩展都相对容易。
综上,方案一更简单,维护成本低,易扩展,所以选择方案一。
评论