【架构训练营模块二作业】分析一下微信朋友圈的高性能复杂度
分析一下微信朋友圈的高性能复杂度
【作业要求】
1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。
2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。
3. 给出你的架构方案中关键的设计理由。
4. 3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。
【提示】
1. 分析过程可以参考模块 2 第 5 课的实战案例,但是不需要将分析过程一一列举出来。
2. 如果某个地方被卡主了,请及时联系助教或者老师讨论。
朋友圈复杂度总体分析:
朋友圈的业务复杂度:朋友圈的业务主要有浏览、发动态、点赞和发评论等,业务复杂度较低
朋友圈的质量复杂度:朋友圈的用户众多,遍布全国各地,甚至国外也有大量用户,质量复杂度较高
朋友圈高性能复杂度分析:
根据新闻:
http://k.sina.com.cn/article_6468040956_1818678fc02000vswg.html
微信日活跃用户达 10.9 亿,有 7.8 亿人每天翻看朋友圈,其中的 1.2 亿人会每天更新朋友圈。
按业务分析:
大部分人是在工作之余翻看朋友圈,主要集中在早中晚,有些人在这些时间段都会翻看朋友圈
发动态:假设 1.2 亿人都在中午 2 小时发动态,TPS:1.2 亿/(2*60*60) = 2 万
浏览:假设 7.8 亿人都在中午 2 小时翻看了朋友圈,QPS:7.8 亿/(2*60*60) = 11 万
点赞:假设翻看朋友圈的人有一半的概率点赞,TPS:5.5 万
发评论:假设翻看朋友圈的人有 1 成发评论,TPS:1.1 万
朋友圈高性能方案-发动态:
发布的内容既包括文字又包括图片、视频等文件,因此需要关系数据库和文件存储服务器(如 FastDFS)
朋友圈高性能方案-点赞和发评论:
点赞和发评论都是对某条动态的操作,可以将对某条动态的处理通过 hash 负载均衡到某台服务器上,
加一层 redis 缓存,先操作缓存,再同步到数据库
朋友圈高性能方案-浏览:
需要读取每条动态的数据、文件,以及这条动态对应的点赞和评论
朋友圈高性能总体架构:
采用多机房集群,单机房架构如下:
评论