写点什么

架构实战营模块二作业

用户头像
老猎人
关注
发布于: 3 小时前

分析微信朋友圈架构,应考虑微信朋友圈峰值 qps,高性能复杂度,高可用复杂度。

峰值 qps 分析


目前还没有查到微信朋友圈峰值 qps 明确的数据。

2021 年 1 月 19 日,腾讯高级执行副总裁、微信事业群总裁张小龙在“2021 微信公开课 PRO”演讲中表示,每天有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;有 3.6 亿用户读公众号文章,4 亿用户使用小程序。

每天 7.8 亿人进入朋友圈,假设每人每天访问朋友圈 20 次左右,可以算看朋友圈的访问量,1.2 亿发朋友圈,每人发 1 条以上朋友圈,可以估计发朋友圈的访问量。访问朋友圈的时间基本在休息时间和通勤时间,即早上 7 点到 10 点,中午 12 点到 2 点,晚上 6 点到 12 点。

高性能应考虑高峰时期峰值 qps,假设高峰期总和估计为 1 小时。可以算这一小时内看朋友圈平均 qps 是 430 万左右。假设有十分之一的人点赞评论,点赞评论 qps 为 43 万。发朋友圈估计 qps 为 2 万。

高性能复杂度分析


发朋友圈,看朋友圈,评论点赞等功能 qps 并没有发红包抢红包那样 qps 差别巨大,所以可以使用同一套架构。

关于单机高性能的考虑,朋友圈和微信推出时间相差时间不长,单机的计算高性能和存储高性能还是需要考虑的,计算高性能可以使用腾讯自研的用 C++写的服务框架,性能高一些。存储模型的选型,由于读多写少,使用 mysql 即可。

集群高性能的考虑,计算高性能应考虑任务分解+任务分配,由于朋友圈包括视频、照片、文字多种内容,应考虑任务分解,使用 CDN 集群存储视频和照片,普通服务器集群存储朋友圈元数据和文字数据。

集群存储高性能使用 mysql 数据库分库分表提升性能和稳定性,属于任务分解。


高可用复杂度分析


由于微信朋友圈是免费业务,数据丢失或者服务不可用不会导致生命或财产损失,但是会影响微信口碑,所以需要考虑高可用复杂度,但不用像支付等业务需要考虑实时的强一致性。计算高可用使用异地多机房部署即可。存储高可用中数据复制,复制格式使用数据复制,能保证最终一致性即可,复制方式用半同步复制,取折中方案,保证最终一致性,性能也有保障。状态决策使用常用的独裁式,因为不像余额、库存需要强一致性。

用户头像

老猎人

关注

还未添加个人签名 2018.12.18 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块二作业