写点什么

模块二作业 (架构实战训练营)

作者:Justin
  • 2023-01-19
    广东
  • 本文字数:1204 字

    阅读完需:约 4 分钟

题目: 微信朋友圈的高性能复杂度分析

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

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

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

  4. 3~5 页 PPT 即可,涵盖复杂度分析、架构分析、设计理由

1. 业务分析

业务包含发朋友圈、浏览朋友圈、评论等,对这三类业务进行分析

2. 数据分析

1 月 19 日,2021 微信公开课 PRO 在广州举办,在晚间的微信之夜中腾讯公司高级执行副总裁、微信事业群总裁张小龙披露,目前每天有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;有 7.8 亿用户进入朋友圈,其中有 1.2 亿用户发表朋友圈,有照片 6.7 亿张,有短视频 1 亿条;有 3.6 亿用户读公众号文章,4 亿用户使用小程序。

https://baijiahao.baidu.com/s?id=1689324779152371653&wfr=spider&for=pc


进入朋友圈的用户数为 7.8 亿/天

发朋友圈的用户数为 1.2 亿/天

3. 复杂度分析

3.1 质量复杂度分析

假设峰值为平均值的 5 倍


访问朋友圈总次数

假设用户一天中除开 8 个小时睡觉,剩余 16 个小时,每小时点击一次朋友圈,每个用户一天一共点击 16 次朋友圈

7.8 亿 x 16 次 ÷ 86400 秒 ≈ 14W QPS

峰值: 14W QPS x 5 倍 = 70W QPS


发评论总次数

假设每 1 个点进朋友圈的用户每天发送 1 条评论

7.8 亿 x 1 条 ÷ 86400 秒 ≈ 9K TPS

峰值: 9K TPS x 5 倍 = 4.5W TPS


发朋友圈总次数

假设 1 个用户每天发送 2 条朋友圈

1.2 亿 x 2 条 ÷ 86400 秒 ≈ 2.7K TPS

峰值: 2.7K TPS x 5 倍 = 1.35W TPS



3.2 业务复杂度分析

根据数据可以判断出朋友圈为质量复杂度高

根据思考逻辑,业务复杂度并不是很高,只有简单的读写加一些关系的处理

得出: 质量复杂度高, 业务复杂度不高(比红包复杂一点)


4. 架构设计方案

4.1 访问朋友圈架构设计



  1. 数据库采用多个分库,每个分库有一主多从,保障高可靠,也保障了读取数据库时的性能

  2. redis 采用集群方式,确保高可用以及性能保障

  3. 每个业务服务都是无状态的,确保挂了一部分后,服务集群也都还能正常使用

  4. 如果查看的朋友圈内容中有图片或者视频,则通过索引到对象存储上进行下载

4.2 发评论架构设计



架构设计说明

  1. 数据库采用多个分库,每个分库有一主多从,保障高可靠,也保障了读取数据库时的性能

  2. 数据库采用异步的方式进行写数据库,先将消息写入到 MQ,然后再异步的写入到数据库中和缓存中(缓存主要考虑到访问朋友圈的场景需要)。因为发朋友圈和读朋友圈并不需要非常的实时,有时稍微延迟一点点也是能接受的,所以采用异步的方式进行写入

4.3 发朋友圈架构设计



架构设计说明

  1. 数据库采用多个分库,每个分库有一主多从,保障高可靠,也保障了读取数据库时的性能

  2. 数据库采用异步的方式进行写数据库,先将消息写入到 MQ,然后再异步的写入到数据库中和缓存中(缓存主要考虑到访问朋友圈的场景需要)。因为发朋友圈和读朋友圈并不需要非常的实时,有时稍微延迟一点点也是能接受的,所以采用异步的方式进行写入

  3. 因为发朋友圈还涉及到图片和视频,所以使用对象存储来进行存储这些文件,然后将文件索引保存到数据库中


用户头像

Justin

关注

还未添加个人签名 2018-05-26 加入

还未添加个人简介

评论

发布
暂无评论
模块二作业 (架构实战训练营)_架构实战营_Justin_InfoQ写作社区