复杂度分析
业务复杂度
分析微信朋友圈主要的业务:
- 查看朋友圈
- 发布朋友圈
- 点赞
- 评论
质量复杂度
通过微信发布的数据,来判断性能指标
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等。
高性能方案设计
朋友圈高性能方案
朋友圈高性能架构设计图
方案不足
上述的方案还是比较仓促,还有很多不足之处。后续有机会补充。
- 客户端写CDN,CDN与对象存储的关系未体现,应该还需要将数据落到对象存储
- 数据库选型这块,未定
- 跨区域
- 服务缓存,这块想了下,朋友圈没有被高频访问的数据,是数量大,并发高。因为数据库选型未定,所以这块也没定