微信业务架构图 & 学生管理系统架构设计
微信业务架构图
学生管理系统架构设计
需求:
1 要求可以通过公网域名访问;
2 要求至少 3 人合作完成;
3 能够支撑管理 1000 个学生;
4 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
基本情况:
1 大家都会 Java,但是有一个是 PHP 高手;
2 大家经济条件一般
需求分析
需求中没有说明需要哪些模块,一般毕业设计也不会固定死必须要有什么,这个全看个人自己,前期我们规划上必须的功能(注册登录、学生信息管理、教师信息管理、课程管理、权限管理、在线考试等),完成之后再计划扩展一些其他功能(社团、活动组织、论坛等)。
功能拆解
从需求中看这个系统是一个相对简单的系统,只要支撑管理 1000 个学生,对于这个系统来说性能要求也不会太高,再怎么写也不至于卡死,我们只需要使用 MVC 的模式开发即可满足需求,主要考虑的是扩展性和可用性。我们按照功能主要划分成几个模块:
用户模块:包含用户登录注册、学生基本信息管理、教师信息管理
课程模块:课程信息、学生选课
权限模块:角色分配和权限配置
考试模块:上传试卷、在线考试、在线阅卷
社团模块:社团信息管理、报名等
活动模块:活动信息、活动组织、报名等
论坛:可直接使用开源论坛账户打通
备选架构
方案 1:
方案 2:
方案分析:
方案 1 和方案 2 都选择 MVC 单体架构的模式开发,从成本和开发效率上来看 MVC 是最好的选择,同时也符合 3 人团队的开发模式,部署两个业务服务器和和数据库只要考虑的是应用的可用性,不至于一个服务器下线导致系统不可用,数据库损坏导致数据丢失的情况。方案 2 加入了一个 redis,主要的考虑是有多个业务服务器时做分布式 session 和一些数据缓存。
最终方案选择
对 3 人团队开发这样的相对简单系统来说方案 1 和 2 都符合架构三原则中的合适和简单原则,对于方案 2 中的 redis 解决的分布式 session 问题前期我们可以通过 MySQL 解决,后期有必要再引入 redis,方案 2 可以作为方案 1 的后续演进架构,所以最终选择方案 1 来实现这个学生管理系统,语言方面既然是单体那肯定是选择一个大家都会的语言 java
评论