微信朋友圈高性能复杂度分析
一、可参考数据:2021 年 1 月份公开数据
7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈每天有 1 亿条视频内容
随着微信经过一年的发展和普及可以适度提高该数据修正为参考数据的 1.2 倍。
9.36 亿人进入朋友圈
1.414 亿人发朋友圈
二、复杂度分析
朋友圈业务大致可以分为四个,平均流量去掉半夜则为 1.5 倍(减去凌晨 11 点到次日 7 点的 8 个小时),根据峰值 qps 为平时 3 倍,高热度新闻增加 2 倍,根据架构需要冗余所以是该倍数的基础上再乘以 2 倍,最终架构设计需要满足为:平均 qps 的 18 倍。
浏览朋友圈:假设每天没人平均刷 10 次朋友圈,9.36 亿*10/(24*60*60)/10000*18= 195w/s
发朋友圈:假设每人每天平均发 3 条朋友圈:1.414 亿*3/(24*60*60)/10000*18= 9w/s
点赞:假设没人每天平均朋友圈点赞 5,9.36 亿*5/(24*60*60)/10000*18= 98w/s
评论:假设没人每天平均朋友圈点赞 3,9.36 亿*3/(24*60*60)/10000*18= 65w/s
由此可见,朋友圈架构设计的复杂度在于访问高性能以及数据量存储。
三、架构设计
四、设计理由
1.业务比较确定,任务拆解可以弱化,所以在设计上最复杂的在于任务分配,
2.保证高可用,异地多活,
3.进行冷热数据处理,越早的数据被访问的可能性越小,采用 MongoDB 作为缓存和新增数据存储,采用 hbase 作为历史数据存储。
评论