写点什么

架构训练营 - 模块 2 作业

用户头像
焦龙
关注
发布于: 刚刚

1. 分析一下微信朋友圈的高性能复杂度

【作业要求】

1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。

2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。

3. 给出你的架构方案中关键的设计理由。

4. 3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。

【提示】

1. 分析过程可以参考模块 2 第 5 课的实战案例,但是不需要将分析过程一一列举出来。

2. 如果某个地方被卡主了,请及时联系助教或者老师讨论。

请求量分析

根据 2019 年和 2021 年微信之夜上分享的数据:

2019年1月9日微信之夜

7.5 亿人每天去朋友圈,每天进去十几次,总共 100 亿次。大家都在干什么?都在完成任务,完成一个社交任务,及时不发朋友圈,但是,也会去看,去点赞。

2021年1月19日 微信之夜

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 万/秒

通过如上的分析,可以看出朋友圈属于业务复杂度中、质量复杂度高的应用。

复杂度分析

朋友圈的架构设计中,主要复杂度为:

  • 如何快速查找一个人所有朋友的更新信息;

  • 如何快速查看一个外地朋友的更新信息。


架构设计

架构设计说明

为了保证用户可以快速的查看好友的朋友圈,所以将朋友圈信息拆分到 3 个 redis 集群中,每个集群存储独立的信息:

  • 用户好友的朋友圈:存储一个用户对应好友发送的朋友圈,用于快速查看朋友圈

  • 用户发送的朋友圈:存储用户发送的朋友圈,方便查找某个用户的朋友圈

  • 朋友圈更新标记:用于快速查看哪些用户更新了朋友圈。


用户头像

焦龙

关注

还未添加个人签名 2017.12.20 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营 - 模块2作业