写点什么

微信朋友圈架构设计

  • 2022 年 2 月 13 日
  • 本文字数:766 字

    阅读完需:约 3 分钟

一、微信朋友圈高性能业务指标

1.业务背景

摘自张小龙 2021 年 1 月 19 日的演讲:有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;

2.发朋友圈业务指标

假设:

1.朋友圈各种操作都发生在早 8 点-晚上 12 点的区间内。

2.发朋友圈峰值是平均值的 100 倍。

3.发照片时,平均一次发布为 4 张照片。

发朋友圈均值=(6.7 亿/4 +1 亿)/(15*60 *60) ≈ 4644

发朋友圈 TPS=4644 * 100 ≈ 46 万


3.刷朋友圈业务指标

假设:

1.朋友圈各种操作都发生在早 8 点-晚上 12 点的区间内。

2.用户平均每天刷 10 次朋友圈。

3.刷朋友圈峰值是平均值的 10 倍。

刷朋友圈均值=(7.8 亿 *10)/(15*60 *60) ≈ 14.5 万

刷朋友圈 QPS=14.5 万 * 10 ≈ 145 万

4.评论和点赞业务指标

假设:

1.发一条朋友圈有 20 个点赞。

2.点赞峰值是平均值的 5 倍。

点赞均值=4644 *20 ≈ 10 万

点赞 TPS=10 万 * 5 ≈ 50 万

5.微信朋友圈高性能复杂度分析

二、微信朋友圈高性能方案-发朋友圈

三、微信朋友圈高性能方案-刷朋友圈

四、微信朋友圈高性能方案-评论和点赞

五、朋友圈整体架构图-单机房示意图

1.架构图

2.设计说明

2.1 数据库表

1.好友关系表,记录好友关系列表,缓存在 redis 中。

2.发布表,记录所有用户的发布数据,比如一次发布是几张图片,每张图片的 URL 是什么。谁可以看,谁不可以看等等。

3.相册。相册是每个用户独立的,记录了该用户所发布的所有内容。实际的值是指向发布表的索引。

4.评论表。评论就是针对某个具体发布的朋友评论和点赞操作。

5.同步表。按时间线存储的,一个用户所有朋友的发布内容,缓存在 redis 中。

2.2 要点

1.相册写成功后,触发批处理,把本次发布数据的指针插到所有好友的同步表里面去,同时更新 redis。

2.用户刷朋友圈时,从 redis 中读取待同步数据,然后由客户端去拉取发布内容。

3.针对一次发布,客户端拉取完内容后,再从评论表拉取好友的评论和点赞数据。

发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2018.08.31 加入

还未添加个人简介

评论

发布
暂无评论
微信朋友圈架构设计