分析一下微信朋友圈的高性能复杂度
【作业要求】
对照模块 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存储点赞和评论数据。