写点什么

业务架构:作业二 朋友圈高性能架构设计

用户头像
Nick~毓
关注
发布于: 2021 年 04 月 17 日

【作业要求】

  1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度;

  2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可);

  3. 给出你的架构方案中关键的设计理由。

  4. 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/


用户头像

Nick~毓

关注

还未添加个人签名 2018.05.09 加入

还未添加个人简介

评论

发布
暂无评论
业务架构:作业二 朋友圈高性能架构设计