写点什么

模块 2 作业 2

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

一。业务需求描述:

张小龙在演讲中表示,每天有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;

有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;

峰值数据分析:假设是每天 24 个小时,按 2:8 原则,估计大概有 80%的用户是在中午 12 点到 13 点,以及晚上 8 点-11 点的 4 个小时访问朋友圈。且大致均匀分布。


二。峰值估算:

1.发朋友圈峰值: 1.2× 10^8× 80%÷ (4× 60× 60) = 1.2× 10^8× 0.8 / 14400 = 6666 TPS

2.发照片峰值: 6.7× 10^8× 80%÷ (4× 60× 60) = 6.7 * 10^8× 0.8 / 14400 = 37221 TPS

     乘以一个系数 5,写的峰值大概是 186000TPS

3. 发视频峰值:1.1 *

4. 看朋友圈的峰值:7.8× 10^8 × 80% ÷ (4× 60× 60)=7.8× 10^8× 0.8 / 14400 = 43333 QPS

乘以一个系数 5,查的峰值大概是 216000QPS

 

三。高性能复杂度分析思路:

1.发朋友圈的高性能复杂度分析

1.1 单机  

计算高性能 网络模型 - Netty 等高性能组件

                        缓存模型- Redis 集群存用户朋友圈数据

           存储高性能   B+Tree;

1.2 集群

  计算高性能   任务分配- F5 做负载均衡,hash 算法,均衡到 10 台 Nginx

                        任务分解- 按业务分解,朋友圈文本,视频,图片分别到不同的服务器处理

           存储高性能   任务分配- Redis 集群存朋友圈文本

                               任务分解- CDN 存用户朋友圈照片和短视频;

2. 看朋友圈的高性能复杂度分析

2.1 单机  

计算高性能  网络模型 - Netty 等高性能组件

                           缓存模型- Redis 集群读取用户朋友圈数据

        存储高性能 B+Tree;CDN 分发读取朋友圈照片和短视频;

2.2 集群   

计算高性能   任务分配- Nginx 做负载均衡,hash 算法,均衡到 10 台服务器

                       任务分解- 按业务分解,文本,视频,图片分别到不同的服务器处理

         存储高性能  任务分配-

                            任务分解- 文本存入 redis 集群;视频存入 CDN


四。微信朋友圈架构图

微信朋友圈架构图


五。设计关键点

  1. 微信用户数量是亿级别,且分布在全国;所以采用南北双机房的架构;

  2. 通过朋友圈的数据和 28 原则,估算业务的峰值 TPS 和 QPS 均为几十万/秒的量级,所以采用 F5 做负载均衡;

  3. 朋友圈的文字,图片和视频采用不同的存储策略:

文字的采用 mysql+redis 集群;

图片和视频采用 CDN 存储,并做全国或国外的访问加速;

4.降成本的方面,暂时没有好的思路。

发布于: 2021 年 04 月 17 日阅读数: 20
用户头像

dwade

关注

还未添加个人签名 2021.01.24 加入

还未添加个人简介

评论

发布
暂无评论
模块2作业 2