架构实战3-微信朋友圈高性能分析

930 阅读2分钟

复杂度分析

业务复杂度

分析微信朋友圈主要的业务:

  • 查看朋友圈
  • 发布朋友圈
  • 点赞
  • 评论

质量复杂度

通过微信发布的数据,来判断性能指标

2021年,在微信公开课 Pro 直播演讲中,微信创始人张小龙披露微信最新数据:每天有 10.9 亿人打开微信,3.3 亿人进行视频通话,7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈每天有 1 亿条视频内容,3.6 亿公众号,4 亿用户使用小程序。朋友圈每天有 1 亿条视频内容。每天有 3.6 亿人进入公众号,4 亿用户使用小程序。

梳理出跟朋友圈有关的数据:

  • 7.8亿人进入朋友圈(计算)
  • 1.2亿人发朋友圈(计算、存储)
  • 朋友圈每天有1亿条视频内容(计算、存储)

根据上面的有效数据分析,我们本期就只做查看朋友圈、发布朋友圈的高性能设计,点赞、评论类似,就不具体考虑。

红包高性能复杂度分析

高性能复杂度分析,主要考虑计算高性能、存储高性能

如果按照总体数据估算,大概是下面的结果,这样非常不准确(按8个小时估算):

  • 查看朋友圈(QPS=7.8亿/8小时/3600s10次10000=27w)(假设每个人一天看10次朋友圈)
  • 发布朋友圈(TPS=1.2亿/8小时/3600s3条10000=1.2W)(假设每个人一天发三个动态)
  • 数据存储,1.2亿*3=3.6亿发布内容,1亿的视频内容

计算高性能,看到上面的数据,这是匀速的表现,但是做性能设计应该主要考虑峰值的QPS、TPS,所以按照平均计算,完全没有意义。暂时认为后续架构是满足计算高性能。

存储高性能这块,就比较明确了,满足亿级数据的存储和访问,以及视频相关的存储,涉及数据库、CDN等。

高性能方案设计

朋友圈高性能方案

image.png

朋友圈高性能架构设计图

image.png

方案不足

上述的方案还是比较仓促,还有很多不足之处。后续有机会补充。

  • 客户端写CDN,CDN与对象存储的关系未体现,应该还需要将数据落到对象存储
  • 数据库选型这块,未定
  • 跨区域
  • 服务缓存,这块想了下,朋友圈没有被高频访问的数据,是数量大,并发高。因为数据库选型未定,所以这块也没定