写点什么

模块二作业

发布于: 刚刚

朋友圈高性能业务指标

参照数据来源:https://new.qq.com/omn/20210120/20210120A00ZQ700.html

其中主要信息:

每天有:7.8亿用户进入朋友圈,1.2亿用户发表朋友圈,其中:照片6.7亿张,短视频1亿条
复制代码


指标分析

1.假设每个人每天进入朋友圈的次数是 5 次,则进入朋友圈 QPS:

7.8*5*10000*10000/86400 ~= 45000

2.假设每个人每天发送的朋友圈消息是 2 条,则发表朋友圈 TPS:

1.2*2*10000*10000/86400 ~= 2780

3.假设每人每天会针对朋友圈的消息进行评论的次数是 3 条,则发表评论的 TPS:

7.8*3*10000*10000/86400 ~= 27000


复杂度分析

基于之前的指标分析,假设峰值是上述均值的 10 倍。则:

进入朋友圈:45000*10=450 万次/秒

发朋友圈: 2780*10~=3 万次/秒

评论:27000*10=27 万次/秒


朋友圈高性能架构设计

设计理由

1.基于复杂度分析,该系统是一个中大规模的服务系统。所以服务器等均采用集群模式。

2.单从业务复杂度来说,只涉及到发朋友圈、看朋友圈、评论三个主要内容(点赞可以认为是评论形式的一种,不单独进行考虑了),所以业务逻辑还算简单。可以考虑将相关业务实现在一个系统(可以认为是单体服务)里面。没有必要进行再拆分(如微服务拆分)。

3.由于主要数据是朋友圈的消息,主要信息包括消息文本、视频\照片信息、评论信息等。在用户发表消息的时候,将消息内容写入 MongoDB 中。而单个朋友圈每天可能多次进入朋友圈看消息,所以需要将消息同时缓存到 Redis 中。优选从 Redis 中获取朋友的发送的消息。进入时,按照好友关系对应的 id 从 Redis 中查找。

4.由于视频和照片信息属于静态资源,在发表消息的时候就需要将视频和照片上传到类似七牛存储上,获取到对应的 CDN 地址,将 CDN 地址和消息文本内容一起存储。后续下发时将 CDN 地址也一起下发。CDN 本身基于加速能力,可以为客户端提供快速资源下载的能力。


用户头像

还未添加个人签名 2017.11.04 加入

还未添加个人简介

评论

发布
暂无评论
模块二作业