架构训练营模块二作业
分析一下微信朋友圈的高性能复杂度
1. 朋友圈复杂度分析
业务复杂度分析
朋友圈业务功能:发朋友圈,看朋友圈,评论和点赞
看朋友圈要求是好友才可看,频率和点赞也要求相互好友才可看
微信还有有 5000 的上限,也对业务做了一定的限制
业务功能相对简单,不涉及到其他太多需要依赖和交互业务,业务复杂度低
质量复杂度分析
参考 2021 年 1 月 19 日在微信公开课 Pro 直播演讲中数据,每天有 10.9 亿人打开微信,3.3 亿人进行视频通话,7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈每天有 1 亿条视频内容,3.6 亿公众号,4 亿用户使用小程序。每天有 3.6 亿人进入公众号,4 亿用户使用小程序。
7.8 亿人进入朋友圈,1.2 亿人发朋友圈
假设:每人每天进入朋友圈 10 次, 每天发布 2 次,来计算看朋友圈和发朋友圈的性能指标,考虑到动作不是均匀分布的,在均值的基础上 * 10 来评估峰值 TPS 和 QPS
发:3000 TPS * 10 = 30000 TPS
看:90000 * 10 = 900000 QPS
朋友圈数据个人资损低,可容忍延迟和数据丢失,对数据一致性要求不高,对性能和存储要求复杂度较高
2. 朋友圈高性能架构方案分析
发朋友圈高性能方案
使用 redis 存储接受方的 timeline 列表,用于未拉取通知
发布的图片和视频需要使用分布式文件存储,后续和 CDN 结合,进行图片和视频的展示
看朋友圈高性能方案
CDN + 文件存储来进行图片和视频的展示
使用 redis 存储接受方的 timeline 列表,通过 timeline 列表获取朋友圈动态数据
朋友圈总体高性能架构设计
朋友圈应用服务器集群,上层接入应用负载均衡设备
朋友圈动态数据使用分库分表存储,高性能上可使用读写分离
个人朋友圈的 timeline 使用 Redis Cluster 存储
图片和视频服务器使用文件存储服务器存储,并结合 CDN 加速访问
评论