架构训练营 - 模块 2 作业
1. 分析一下微信朋友圈的高性能复杂度
【作业要求】
1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。
2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。
3. 给出你的架构方案中关键的设计理由。
4. 3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。
【提示】
1. 分析过程可以参考模块 2 第 5 课的实战案例,但是不需要将分析过程一一列举出来。
2. 如果某个地方被卡主了,请及时联系助教或者老师讨论。
请求量分析
根据 2019 年和 2021 年微信之夜上分享的数据:
7.5 亿人每天去朋友圈,每天进去十几次,总共 100 亿次。大家都在干什么?都在完成任务,完成一个社交任务,及时不发朋友圈,但是,也会去看,去点赞。
有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条。
预计 2021 年微信朋友圈的访问情况为:
7.8 亿用户进入朋友圈,每人会访问十几次,每天预计有 104 亿 次的访问;
1.2 亿用户发朋友圈,假设平均每个人发 1.5 次朋友圈,每天预计发 1.8 亿 次朋友圈;
假设每个朋友圈平均会有 5 次评论,10 次点赞,所以预计每天评论为 9 亿次,点赞 10 亿次。
根据经验,预计日常峰值流量是平均值的 3 倍,热点话题会在峰值的基础上再翻 3 倍,架构设计上要承载 2倍的请求量,所以预计微信朋友圈的访问情况如下:
发朋友圈
:1.8 亿/(24*60*60)*(3*3*2)= 3.7 万/秒查看朋友圈
:104 亿/(24*60*60)*(3*3*2)= 216 万/秒评论
:9 亿/(24*60*60)*(3*3*2)= 18.7 万/秒点赞
:10 亿/(24*60*60)*(3*3*2)= 20.8 万/秒
通过如上的分析,可以看出朋友圈属于业务复杂度中、质量复杂度高的应用。
复杂度分析
朋友圈的架构设计中,主要复杂度为:
如何快速查找一个人所有朋友的更新信息;
如何快速查看一个外地朋友的更新信息。
架构设计
![](https://static001.geekbang.org/infoq/7f/7f47965a1eb10723c68c46104953e7eb.png)
架构设计说明
为了保证用户可以快速的查看好友的朋友圈,所以将朋友圈信息拆分到 3 个 redis 集群中,每个集群存储独立的信息:
用户好友的朋友圈:存储一个用户对应好友发送的朋友圈,用于快速查看朋友圈
用户发送的朋友圈:存储用户发送的朋友圈,方便查找某个用户的朋友圈
朋友圈更新标记:用于快速查看哪些用户更新了朋友圈。
评论