架构实战营 微信朋友圈高性能复杂度分析
一、高性能业务指标
IT 之家 1 月 19 日消息 在微信公开课 Pro 直播演讲中,微信创始人张小龙披露微信最新数据:每天有 10.9 亿人打开微信,3.3 亿人进行视频通话,7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈每天有 1 亿条视频内容,3.6 亿公众号,4 亿用户使用小程序。朋友圈每天有 1 亿条视频内容
根据以上信息可以简单分析出朋友圈常用功能的 tps 量级
发朋友圈: 每天 1.2 亿人发朋友圈, 每人 5 条左右, 再算上峰值乘以 5 倍, tps 为万级别
看朋友圈: 每天 7.8 亿人进入朋友圈,每人看 10 条左右,再算上峰值乘以 5 倍,tps 为 10 万级别
评论、点赞: 每条朋友圈 5 到 10 条评论和点赞,tps 为 10 万级别
二、发朋友圈架构图
这里需要用到集群,利用负载均衡和分片解决计算、存储高性能问题,根据不同的数据和应用场景还要区分具体的存储方式
1、数据库集群用来存储该用户所有发布的朋友圈文本信息, 根据发布人 id hash 做分库分表
2、redis 集群用来存储该用户近期发布的朋友圈文本信息,因为访问频率会远远高于历史数据
3、文件服务器集群用来存储朋友圈中包含的视频、图片信息
三、看朋友圈架构图
与发朋友圈架构图类似
1、数据库集群用来存储该用户朋友圈所有文本信息, 根据查看人 id hash 做分库分表
2、redis 集群用来存储该用户朋友圈近期发布的文本信息,因为访问频率会远远高于历史数据
3、文件服务器集群用来存储朋友圈中包含的视频、图片信息
四、朋友圈评论架构图
1、数据库集群用来存储所有朋友圈评论信息, 根据朋友圈 id hash 做分库分表
2、redis 集群 用来存储热点朋友圈的评论信息
五、朋友圈点赞架构图
与朋友圈评论架构图一致
1、数据库集群用来存储所有朋友圈的点赞数量 、点赞人信息, 根据朋友圈 id hash 做分库分表
2、redis 集群 用来存储热点朋友圈的点赞数量 、点赞人信息
六、朋友圈整体架构图
因为要保证高可用,需要至少双机房, 下图展示单个机房架构图
在前面分析中
发朋友圈、看朋友圈 数据是分开的, 朋友圈涉及到的评论、点赞、视频图片等数据是共享的,基于成本考虑前期这些数据可以共用一个数据库集群和 redis 集群存储, 后期再考虑分开
评论