模块二 - 微信朋友圈高性能复杂度分析
业务分析:
腾讯公布的 2020 年度财报中显示,
微信月活跃用户数为 12.25 亿
2.微信朋友圈日均 1.2 亿用户在朋友圈发表内容。
参考: 微信朋友圈技术之道:三个人的后台团队与每日十亿的发布量 该文中披露的截止于 2015 年第二季度微信朋友圈业务的核心数据:
微信月活跃用户约 5.49 亿
朋友圈每天发表量超过 10 亿,浏览量超过 100 亿
元月份流量达到平时的两倍,峰值达到了平时峰值的 2 倍,相当于平时正常流量的 5 倍。
我们做一个粗略的估算及假设:
1.2020 年微信朋友圈:每天 发表量超过 22.3 亿, 浏览量超过 223 亿。
2.峰值流量相当于平时正常流量的 5 倍。
分析朋友圈的主要工作流程:
1.用户 A 发布内容(包括点赞和评论),上传至网络
2.用户 B 获得有新内容发布的通知(假设 B 为 A 的好友)
3.B 下拉朋友圈时获取到用户 A 的发布内容。
参考文章中给出了设计朋友圈数据的四个核心表:
发布数据,发布数据记录来自于用户所有的 feed, 比如一个用户发布了几张图片,每张图片的 URL 是什么,在 CDN 中的 URL 是什么,它有哪些元数据,谁可以看,谁不可以看等。
相册数据,相册时每个用户独立的,记录了该用户发布的所有内容。
评论数据,评论就是针对某个具体发布的朋友评论和点赞操作。
时间线,所谓“刷朋友圈“就是刷时间线,就是一个用户所有朋友的发布内容。
1,2 是属于发布用户的核心数据, 3.为评论业务数据 4 是订阅用户的核心数据。
据此我们可以将任务分解为:
内容发布
订阅通知
评论及点赞
总结:
数据实时性要求需求较低。且数据量较大,考虑使用 Mysql 集群存储。
图片及视频需要采用 CDN 服务。
读写流量有十倍差距,考虑将后端服务拆分为 2 个子服务。
设计图如下:
版权声明: 本文为 InfoQ 作者【kk】的原创文章。
原文链接:【http://xie.infoq.cn/article/aa2e22ed1213dcccf759803a6】。未经作者许可,禁止转载。
评论