微信朋友圈高性能分析
1. 朋友圈高性能业务指标
截至 2018 年底,微信及 WeChat 的合并月活跃账户数增至约 10. 98 亿。每天平均有超过 7. 5 亿微信用户阅读朋友圈的发帖朋友圈日浏览量超过一百亿次。
2.高性能复杂度分析
假设朋友圈的浏览量中,有 10%会发朋友圈,另外 10%会点赞或者评论
1、发朋友圈,10 亿/天,按照二八原则,峰值约 4.6 万 TPS
2、发表点赞、评论,10 亿/天,按照二八原则,峰值约 4.6 万 TPS
3、浏览朋友圈(包括浏览点赞和评论),100 亿/天,按照二八原则,峰值约 46 万 QPS
3.朋友圈高性能方案
4.朋友圈总体架构图
5. 设计理由
1、来自微信客户端的请求,按照请求类型分发到不同服务集群。
2、同一类型的请求,按照负载均衡规则分发到不同的服务器。
3、发表朋友圈的信息,按照微信 ID 进行分片,存储在不同的 MySQL 数据库节点中,同时存储在 Redis 集群中,图片、视频等静态信息写入对象存储中。
4、点赞和评论信息,按照发表原始信息的微信 ID 进行分片,存储在不同的 MySQL 数据库节点中,同时存储在 Redis 集群中,使得同一条朋友圈的原始信息、点赞和评论信息在同一个数据库和缓存节点中,便于查询。
5、Redis 缓存中只存放近期(例如:近几天)的朋友圈信息,超过时间期限的信息被清理。
6、浏览朋友圈时,优先从 Redis 中查询,查找不到的则从数据库中查询。
7、图片、视频等静态信息从对象存储中获取。
8、多机房部署时,采用相同的架构进行部署。
评论