业务架构:作业二 朋友圈高性能架构设计
【作业要求】
对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;
针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可);
给出你的架构方案中关键的设计理由。
3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由。
【提示】分析过程可以参考模块 2 第 5 课的实战案例,但是不需要将分析过程一一列举出来。
如果某个地方被卡主了,请及时联系助教或者老师讨论。
背景:数据分析
IT 之家 1 月 19 日消息:在微信公开课 Pro 直播演讲中,微信创始人张小龙披露微信最新数据:每天有 10.9 亿人打开微信,3.3 亿人进行视频通话,7.8 亿人进入朋友圈,1.2 亿人发朋友圈,朋友圈每天有 1 亿条视频内容,3.6 亿公众号,4 亿用户使用小程序。每天有 3.6 亿人进入公众号,4 亿用户使用小程序。
1、发朋友圈:1.2 亿/(24*60*60) = 1400 TPS, 假设:
•考虑发朋友圈 去除睡觉时间 7 小时,则为:2000 TPS,
•考虑发朋友圈的峰值,再*5 则为: 1w TPS;
•再给与系统一定的安全系数,一般为均值的 3 倍;则最终推到为: 3w TPS;(感觉预估有点少,内部请求会放大)
•Feed 流架构,采用写模式(PUSH 模式);
2、看朋友圈:7.8 亿/(24*60*60) = 9100 TPS,假设:
•考虑查看朋友圈 去除睡觉时间 7 小时,则为:1.3w TPS,
•考虑查看朋友圈的峰值,再*10 则为: 13w TPS;
•再给与系统一定的安全系数,一般为均值的 3 倍;则最终推到为: 40w QPS;
3、每天新增数据:1 亿条动态, 包含:一亿条视频,5 亿张图片;
4、接口响应时间:发朋友圈:1000ms 以内 ; 查看朋友圈接口响应时间:600ms 以内;(考虑用户体验)
朋友圈高性能复杂度分析
朋友圈架构设计
架构设计理由
任务分配 DNS 级:双机房(深圳、上海 两个数据中心); 双机房核心数据异步同步;
任务分配 数据中心中,流量先接入 F5,然后分配至 Nginx 集群;
静态资源:因为存储量巨大,PB 级别:所有视频和图片,接入云服务 OSS,采用 CDN 进行加速;
任务分解:动态、评论、点赞、广告,微服务架构,独立数据库,
发朋友圈:
Nginx 转发流量到消息服务器,异步批量处理,写入消息队列 Kafka;
专门的消费服务器,消费 Kafka 消息,存储到个人的相册数据库中,即个人的 Timeline;
同时将消息同步到所有好友列表的同步消息服务中,存储至消息同步库;
看朋友圈:
读取个人 Timeline 的相册数据库;
点赞和评论,拉取动态后,直接通过 ID 去获取该动态的点赞和评论,
BFF 层进行聚合:广告、动态(含评论和点赞);
References
https://developer.aliyun.com/article/592923
http://www.52im.net/thread-177-1-1.html
https://juejin.cn/post/6844903601941266440
https://www.zhihu.com/question/21909660
http://blog.itpub.net/11310314/viewspace-2375246/
评论