架构实战营作业 -- 模块二
分析一下微信朋友圈的高性能复杂度
【作业要求】
1.对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。
2.针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。
3.给出你的架构方案中关键的设计理由。
4.3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。
1、分析微信朋友圈高性能复杂度:
在网上找的微信朋友圈数据:每天有 7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈发表量超 10 亿(点赞/评论)
按二八定律来看,如果每天 80% 的访问集中在 20% 的时间里,根据此评估微信朋友圈每日的峰值流量
a)发布朋友圈:
峰值流量:(120000000 * 0.8)/(86400 * 0.2)= 5556 TPS
b)看(刷)朋友圈:
峰值流量:(780000000 * 0.8)/(86400 * 0.2)= 36112 QPS
c)点赞/评论朋友圈:
峰值流量:(1200000000 * 0.8)/(86400 * 0.2)= 55556 TPS
2、微信朋友圈高性能复杂度应对思路
3、微信朋友圈高性能设计方案
1)为了高性能,使用双机房部署,分别部署在深圳和上海,南方用户可以访问深圳,北方用户可以访问上海;
2)nginx 做负载均衡访问到发布朋友圈服务;
3)发布朋友圈后将新建的朋友圈信息写入到 MQ 消息队列,使用 MQ 消息队列做异步处理,提升处理效率,再将数据同步到朋友圈数据库。朋友圈的数据包含文字、图片、视频,这里朋友圈数据库选择 Hbase 集群,能存储海量非结构化数据;
4)朋友圈服务获取朋友圈数据库的信息,按时间戳顺序排名朋友圈数据的消息;如果点赞、评论将触发写入到朋友圈数据库。
评论