微信朋友圈之高性能架构设计
1、微信朋友圈高性能业务指标
截止到 2015 年 7 月,微信每月活跃用户约 5.49 亿,朋友圈每天的发表量(包括赞和评论)超过 10 亿,浏览量超过 100 亿。得益于 4G 网络的发展,以上数据仍有很快的增长,而且相对于 PC 互联网时代,移动互联网时代的峰值要来得更加凶猛。比如,2015 年元月的流量到了平时的 2 倍,而峰值则达到了平时峰值的 2 倍,相当于平时正常流量的 5 倍,这对整个系统的考验是很残酷的。
引自https://blog.csdn.net/u012244016/article/details/70664959
2、业务场景分析
3、推模式方案
每个用户都有一个动态库,假如平均好友数是 200 人
平时 tps = 10 亿/(24 3600) ≈ 1 万 * 200 ≈ 2 百万
平时 qps = 100 亿/(24 * 3600) ≈ 10 万
高峰 tps = 2 平时 tps ≈ 2 万 * 200 ≈ 4 百万
高峰 qps = 2 * 平时 qps ≈ 20 万
4、拉模式方案
假如平均好友数是 200 人
平时 tps = 10 亿/(24 3600) ≈ 1 万
平时 qps = 100 亿/(24 3600) ≈ 10 万 * 200 ≈ 2 千万
高峰 tps = 2 平时 tps ≈ 2 万
高峰 qps = 2 * 平时 qps ≈ 20 万 * 200 ≈ 4 千万
5、架构方案设计
假定使用推模式方案
6、总体架构图
7、设计理由
1、朋友圈动态分为 3 类:分享、点赞、评论,所以做了任务分解;
2、每类动态都需要高性能,进行了任务分配,可随机、轮询、hash 找到对应的服务器;
3、数据记录存储采用关系型数据集群,进行分库分表存储,对应的记录进行缓存,使用 redis cluster;
4、浏览动态时,优先从 Redis 中查询,查找不到再从数据库中查询;
5、图片、视频等静态信息从对象存储中获取,使用 CDN 就近网络分发;
6、多机房部署时,用相同的架构部署;
评论