模块二 微信朋友圈高性能架构分析
一、复杂度分析:
1、业务复杂度:微信朋友圈主要的业务场景有发布、浏览(时间线)、评论和点赞这四个,所以可以看出来业务复杂度并不算高。
2、质量复杂度:根据《2021 微信之夜》演讲中张小龙公布的微信朋友圈的使用数据:每天有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条。分别对上述业务场景,通过合理的推断,可以得出以下性能指标估算值:
可以分析出朋友圈业务系统是一个质量复杂度要求很高,但是业务复杂度相对不高的系统,尤其在高性能方面需要良好的架构设计。
二、高性能复杂度分析
针对不同场景进行高性能分析
发布朋友圈:
单机维度下的计算高性能,一般会遵循微信现有的技术架构,所以不对其进行设计。
为了能够存储图片等资源,并提高在用户拉取新发布的朋友圈时的速度,一般都会采用 CDN 加速的方式。针对一次发布,会往 CDN 里存储相应的图片和视频并获得 url,对应这次发布会生成一个唯一的 id,将这个 id 以及相关元数据也放入关系型数据库的表中。同时会将这行数据的索引也记录到对应用户的相册表里。写完相册表后,触发对好友推送的逻辑,采用的写扩散(write fanout)的方式,将这个发布插入到好友的时间线表中。
因为存在海量数据,所以在集群的存储高性能中,要使用到分库分表的操作
浏览朋友圈时间线:
浏览时先拉取时间线,发现有新的发布时,客户端会根据表中存储的相关元数据,从 CDN 中获取图片或视频资源到本地。所以在数据库中存储的时间线表需要根据用户的 id 进行分库分表
点赞评论:
评论和点赞的功能很相似,单独针对评论和点赞建立一张数据表,对某个发布,会记录发布人的所有好友的点赞和评论;拉取时也会同时对评论和点赞表进行查询,根据查看人的好友关系过滤出其好友的评论和点赞数据。也是根据发布的唯一 id 进行分库分表即可。
三、微信朋友圈总体架构图
版权声明: 本文为 InfoQ 作者【挖了蘑菇哩斯】的原创文章。
原文链接:【http://xie.infoq.cn/article/ad8d8b09532bda4f90fa4ea72】。文章转载请联系作者。
评论