写点什么

模块二 微信朋友圈高性能架构分析

  • 2022 年 5 月 29 日
  • 本文字数:748 字

    阅读完需:约 2 分钟

一、复杂度分析:

1、业务复杂度:微信朋友圈主要的业务场景有发布、浏览(时间线)、评论和点赞这四个,所以可以看出来业务复杂度并不算高。

2、质量复杂度:根据《2021 微信之夜》演讲中张小龙公布的微信朋友圈的使用数据:每天有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条。分别对上述业务场景,通过合理的推断,可以得出以下性能指标估算值:


可以分析出朋友圈业务系统是一个质量复杂度要求很高,但是业务复杂度相对不高的系统,尤其在高性能方面需要良好的架构设计。


二、高性能复杂度分析

针对不同场景进行高性能分析

发布朋友圈:

  1. 单机维度下的计算高性能,一般会遵循微信现有的技术架构,所以不对其进行设计。

  2. 为了能够存储图片等资源,并提高在用户拉取新发布的朋友圈时的速度,一般都会采用 CDN 加速的方式。针对一次发布,会往 CDN 里存储相应的图片和视频并获得 url,对应这次发布会生成一个唯一的 id,将这个 id 以及相关元数据也放入关系型数据库的表中。同时会将这行数据的索引也记录到对应用户的相册表里。写完相册表后,触发对好友推送的逻辑,采用的写扩散(write fanout)的方式,将这个发布插入到好友的时间线表中。

  3. 因为存在海量数据,所以在集群的存储高性能中,要使用到分库分表的操作


浏览朋友圈时间线:

浏览时先拉取时间线,发现有新的发布时,客户端会根据表中存储的相关元数据,从 CDN 中获取图片或视频资源到本地。所以在数据库中存储的时间线表需要根据用户的 id 进行分库分表


点赞评论:

评论和点赞的功能很相似,单独针对评论和点赞建立一张数据表,对某个发布,会记录发布人的所有好友的点赞和评论;拉取时也会同时对评论和点赞表进行查询,根据查看人的好友关系过滤出其好友的评论和点赞数据。也是根据发布的唯一 id 进行分库分表即可。

三、微信朋友圈总体架构图


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

还未添加个人签名 2018.09.21 加入

还未添加个人简介

评论

发布
暂无评论
模块二 微信朋友圈高性能架构分析_作业_挖了蘑菇哩斯_InfoQ写作社区