微信朋友圈高性能复杂度分析
复杂度整体分析
质量复杂度分析:1、并发量大- 60W 左右的 QPS;2、读写性能要求高-毫秒级; 3、数据量大-PB 级。
业务复杂度分析:1、发送朋友圈;2、点赞、评论;3、浏览朋友圈,业务逻辑相对简单。
朋友圈高性能复杂度分析
发朋友圈:据相关资料披露 2021 年微信月活跃用户达 12 亿,假设月活即日活,用户发朋友圈时间区间大致:8:00~22:00,时长 14 个小时,折合成秒 14 * 3600 = 50400 秒,假设每人每天发一条朋友圈,TPS = 1200,000,000 / 50400 = 23809,做一点放大,向上取整大致 3W。
浏览:以发朋友圈为基准,假设浏览量大约是发圈量的 20 倍 QPS=3W * 20 = 60W。
点赞:以发朋友圈为基准,假设每个朋友圈平均被点赞 10 次,TPS = 3 W * 10 = 30W。
评论:以发朋友圈为基准,假设每个朋友圈平均被评论 5 次, TPS = 3W * 5 = 15W。
朋友圈高性能方案-整体架构
1、服务集群是必须的,在计算高性能和存储高性能的任务分配这块都采用双机房部署,防止单机房故障导致整个服务不可用。
2、计算高性能:任务分解采用两个服务,将查询(浏览朋友圈)独立成一个单独服务,原因是相对于写服务(发圈、点赞、评论)它的并发度高,访问量大,持续时间久,整体量级较写服务上升一个等级;将写(发圈、点赞、评论)独立成一个单独的服务,原因是他们之间的数据关联性强。缓存模型:在查询这块引入缓存服务 Redis,具体策略是:请求先查询缓存,命中即返回;否则查库,之后将数据放入缓存;存在写操作,同步更新缓存。
3、存储高性能:1、数据分片存储,分库分表;2、读写分离。3、文本数据和视频/图片数据分开存储,如:文本存入 mysql,图片及视频存储到 OSS 服务。
评论