写点什么

架构设计 - 模块一

用户头像
逝水流
关注
发布于: 2 小时前

微信业务架构


学生管理系统

需求分析

需求:

①可以通过公网域名访问

②要求至少三个人合作完成

③能够支撑管理 1000 个学生

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

现状:

①大家都会 java,但是有一个是 php 高手

②大家经济条件一般

分析:

一、需要公网域名访问,所以服务需要部署到公网上,由于大家条件一般,所以不建议购买物理机进行 IDC 托管。比较省钱的方式为注册云账号,购买云服务,例如腾讯云、阿里云、百度云。对比选择便宜的一个进行购买。

二、由于需要三个人合作完成,就是三个人都需要有负责的模块,并且有代码输出,理解实现方式和架构原理,三个人都会 java,所以推荐使用 java 语言进行开发。弊端是解决问题耗时会比较长,因为三个人都不是高手。如果使用 php 有点是遇到问题有一个高手可以解决,弊端是另外两个人只能进行基础的编码,并且由于对语言不了解,对使用的框架也不了解对第一个人的依赖程度高,工作量会堆积到一个人身上,容易让另外两个人失去做项目的兴趣。

三、1000 个学生的管理,表明学生管理系统的压力小,即使 1000 人同时进行抢课,使用 sql 服务完全能够处理,不需要接触缓存对数据库进行减压。并且单台 mysql 完全能够满足性能要求。

四、由于使用云服务 mysql 在云上自带容灾处理,所以不需要购买 mysql 从库。前端分发可以直接使用 LB 代替独立部署的 Nginx,云服务的 LB 本身具有容灾配置。

五、考虑业务简单,不需要进行私有网络搭建和复杂的网络结构设计。

方案一

架构图:

方案描述

1-LB 是负载均衡,需要配置会话控制,保证一个会话请求只分发到一台服务器,这样能保持登录状态。域名绑定到 LB。

2-两台服务器部署同样的应用,能够有效的分流,同时如果有一台机器出现问题,网站不会受影响依然可访问。

3-整个系统不区分学生端和教师端,都是一个登录界面,通过权限控制显示内容和可操作内容。

4-学生量不大,学生信息由后台录入,不做注册审核。

5-数据库根据所掌握的数据库进行选择(例如:SQL Server、MySQL)

方案二

架构图

方案描述

1-LB 是负载均衡,做流量的负载转发。域名绑定到 LB。

2-两台服务器部署同样的应用,能够有效的分流,同时如果有一台机器出现问题,网站不会受影响依然可访问。

3-引入云 Redis 缓存作为 session 共享组件,保持登录状态。

4-系统区分学生端和教师端,教师端和学生端内容分离。

5-学生量不大,学生信息由后台录入,不做注册审核。

6-数据库根据所掌握的数据库进行选择(例如:SQL Server、MySQL)

方案对比

对比分析:

①合适:两个系统都能满足现有需求。

②简单:方案一相对简单,方案二相对复杂

③可扩展:方案一扩展性较差,方案二扩展性更好

④其他:方案一的会话保持会导致两台服务器的负载不均匀,方案二的 session 共享可以解决负载不均问题。

方案选择:

根据毕设要求和方案一与方案二的对比,选择方案二更优,方案一过于简单,方案二有一定的复杂度,能够兼顾扩展性更适合作为毕设来做。

发布于: 2 小时前阅读数: 5
用户头像

逝水流

关注

懒是一种逃避 2018.09.18 加入

寄蜉蝣于天地,渺沧海之一粟

评论

发布
暂无评论
架构设计-模块一