模块 2 作业 微信朋友圈高性能复杂度
分析一下微信朋友圈的高性能复杂度
【作业要求】对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可);给出你的架构方案中关键的设计理由。3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。
朋友圈业务指标
根据https://www.ithome.com/0/530/979.htm中的最新数据,当前微信朋友圈的日活用户数达到 7.8 亿,每天有 1.2 亿人发朋友圈。
朋友圈高性能复杂度分析
微信的活跃用户数非常多,朋友圈的并发访问量极大,且在节假日尤其是春节期间峰值流量会达到平时的 2 倍以上。根据最新数据可以计算出,微信朋友圈的访问峰值流量为 7.8 亿/864002=1.8 万 QPS,而发布峰值流量则为 1.2 亿/864002=2777TPS。
朋友圈的点赞评论发布频率通常高于朋友圈本身内容的发布频率,假设每条朋友圈平均会带来 10 个点赞或评论,则点赞评论的发布峰值流量约为 2.77 万 TPS。
朋友圈高性能架构方案
架构方案设计理由
朋友圈的并发写入量非常大,使用消息队列可以应对峰值请求量过大时发生阻塞,朋友圈整体业务的实时性和一致性要求并不高,借助消息队列可以将朋友圈的写入操作变为异步操作,提高响应性。
朋友圈是基于朋友关系而建立的,其本身的存储应当基于关系数据库模型,但是针对每个用户的朋友圈消息流,可以预先对其进行异步计算,然后存储到 Redis 缓存中,甚至直接推送到客户端,加速用户浏览朋友圈时的性能。
点赞和评论的写入量高于朋友圈发布量,且要求及时看到发布效果,因此选择使用 Redis 存储点赞和评论数据。
版权声明: 本文为 InfoQ 作者【TH】的原创文章。
原文链接:【http://xie.infoq.cn/article/6096936f09729cd8b21d8279c】。未经作者许可,禁止转载。
评论