写点什么

模块一

用户头像
关注
发布于: 刚刚

微信业务架构


“学生管理系统”毕设架构设计

假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:

  1. 要求可以通过公网域名访问;

  2. 要求至少 3 人合作完成;

  3. 能够支撑管理 1000 个学生;

  4. 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。


你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:

  1. 大家都会 Java,但是有一个是 PHP 高手;

  2. 大家经济条件一般。


作业要求:

  1. 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。

  2. 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。

  3. 给出你选择的最终方案以及选择理由。


复杂度分析


  • 高性能

1000 个学生的日常管理场景,不需要高性能。

只有在涉及学生抢课等低频场景才需要高性能。

  • 高可用

数据高可用,学生的数据不能丢失。

  • 可扩展

业务需求复杂。

在系统方案设计时,需要结合业务特点进行接口和表结构设计,能够适应多变的业务需求,提高系统的可扩展性。

  • 成本

学生经济一般,成本不能过高。

  • 安全

需要对来源的 URL 请求做过滤以及拦截。


架构设置


方案一



优点:

  • 通过为 Nginx 加入 WAF 模块,在控制成本的基础上,提供一定的安全防护功能。

  • 业务系统区分明了。

  • 采用 MySQL 主备方案,一定程度上满足数据高可用的需求。

缺点:

  • 在高负载的的情况下,WAF 模块会加重 Nginx 的负载。

  • 子系统拆分出来后,需要更多的人员来进行开发以及维护。

  • 学校常见的数据库为 Oracle。MySQL 可能不适用于学校已有的数据库,会额外增加维护成本。


方案二

优点:

  • 通过为 Nginx 加入 WAF 模块,在控制成本的基础上,提供一定的安全防护功能。

  • 单体应用容器拓展。

  • 采用 Oracle 数据库,可以在大多数的情况下,适配现有学校的 Oracle 数据库。如:正方教务系统采用的是 Oracle。

缺点:

  • 在高负载的的情况下,WAF 模块会加重 Nginx 的负载。

  • 单体应用的耦合度高,不同的业务之间容易受到干扰。

  • Oracle 数据库需要额外购买授权。


方案对比

  • 开发人员只是学生,没有丰富的开发经验。在开发微服务的时候,可能会面临一些技术困难。

  • 开发的预算不高。多个子系统部署需求,会显著增加开支。且加大运维成本。

  • 多个子系统的扩缩容比单体应用的扩缩容更加复杂。

  • 学校中常用的数据库为 Oracle,改用其他数据库会加大维护成本。


综上,选择方案二。

用户头像

关注

还未添加个人签名 2018.10.30 加入

还未添加个人简介

评论

发布
暂无评论
模块一