Bootstrap

微信朋友圈高性能分析

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、多机房部署时,采用相同的架构进行部署。