架构实战营 6& 微信业务架构 & 学生管理系统方案
一、微信业务架构图
说明:微信公众业务和社交业务是核心业务
二、学生管理系统备选方案 1
三、学生管理系统备选方案 2
四、分析和总结
1.根据面向复杂度架构设计的环节分析可知学生管理系统比较复杂的模块和场景是:
<1.>考试模块
当学生期中和期末考试时,高性能,高并发。
<2.>课程模块中的选课
当学生学期开始选课时,高性能,高并发
<3.>数据存储
学生信息、教师信息、辅导员信息、学生成绩以及所有进入学生管理系统的数据都是重要信息,不能丢失,不能有损数据的完整性。
2.方案 1
优点
<1.>单体应用,开发部署快速。
<2.>通过 Nginx 实现负载均衡,流量分发到不同的部署站点,起到并发分流的作用,高性能。
<3.>Redis 对考试试卷和课程信息缓存,在学生选课时先把课程信息预热进缓存;在学生考试时,先把试卷信息和试卷内容预热到缓存,这样在学生考试、选课时的并发高时,数据和信息从缓存中提取,减小数据库的压力,高性能。
<4.>数据库库主从备份,保证数据的安全性。
缺点
<1>只能单体扩展,不能针对具体的模块性能瓶颈扩展。
<2.>缓存不是集群,可能出现单点故障
3.方案 2
优点
<1.>模块服务部署,可以根据不同模块性能瓶颈分布式部署。
<2.>通过 Nginx 实现负载均衡,流量分发到不同的部署站点,起到并发分流的作用,高性能。
<3.>Redis 对考试试卷和课程信息缓存,在学生选课时先把课程新预热进缓存;在学生考试时,先把试卷信息和试卷内容预热到缓存,这样在学生考试、选课时的并发高时,数据和信息从缓存中提取,减小数据库的压力,高性能。
<4.>数据库库主从备份,保证数据的安全性。
缺点
<1>注册和发现服务是单点,zookeeper 可能出现单点故障。
<2.>缓存不是集群,可能出现单点故障
4.总结
选择方案 1
根据架构三原则,简单、适合、演化的原则,根据学校提出的需求,根据面向复杂度架构设计的各个环节方案 1 都是比较优秀的方案。
评论