模块 -1 微信业务架构图 和 备选方案
作业 1 : 微信业务架构图
作业 2: “学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
1)要求可以通过公网域名访问;
2)要求至少 3 人合作完成;
3)能够支撑管理 1000 个学生;
4)答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
1)大家都会 Java,但是有一个是 PHP 高手
2)大家经济条件一般
一、复杂度分析:
1、要求在公网通过域名可以访问,可能有遭受攻击的危险
2、根据业务需求支持管理 1000 个学生,网站性能要求不高
3、只需要满足高可用就足够了
二、备选方案设计
备选方案 1:
使用 java 语言作为开发语言,直接使用 2 个应用服务器,用 nginx 做网关转发客户的请求到应用服务器上,满足应用服务器的高可用。鉴于用户量少,节约成本的目的,在两个应用服务器分别部署主 mysql 服务器,充分利用机器资源。
优点:部署简单、价格低廉、满足应用高可用
缺点:扩展性不足、由于在公网上服务没有一个缓冲地带应用服务器很脆弱
备选方案 2:
使用 java 语言开发,部署一个 nginx 服务器缓存,隐藏服务器真实 ip,同时可以做一些基础的熔断限流。部署 2 个数据库服务器物理隔离极大提高了数据安全性可用性
优点:部署简单、满足基本的安全性、数据库可用性提高
缺点:扩张性较差、存在 nginx 单点故障导致服务器不可用、使用了 5 个服务器费用比第一个方案提高了
备选方案 3:
使用 java 语言开发,所有服务器都部署去除单点故障导致的服务不可用,由于拆分了业务系统,极大提高系统的可扩展性
优点:高可用、高性能、可扩展性好
缺点:部署复杂、费用高、缺少业务监控相关系统
最终选择:备选方案 2
理由:人员 3 人员少,业务量为管理 1000 个学生,根据架构三原则,简单、合适、演进,在业务初期尽量使用简单快速开发的架构原则,结合业务复杂度分析,最终选择了备选方案 2。不选择架构 1 因为直接把应用服务器暴露在公网上服务器的被攻击的风险高了很多。
评论