模块二作业
朋友圈高性能业务指标
参照数据来源:https://new.qq.com/omn/20210120/20210120A00ZQ700.html
其中主要信息:
指标分析
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 本身基于加速能力,可以为客户端提供快速资源下载的能力。
评论