写点什么

模块二作业 微信朋友圈高性能分析

作者:Geek__猫猫头
  • 2022 年 5 月 29 日
  • 本文字数:904 字

    阅读完需:约 3 分钟

1.朋友圈高性能复杂度总体数据分析

服务拆分:1.查看朋友圈 2.发布朋友圈动态 3.点赞评论

tps 和 qps 估算:

张小龙在演讲中表示,每天有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;有 3.6 亿用户读公众号文章,4 亿用户使用小程序。

因此每天有 7.8 亿查看朋友圈请求,1.2 亿发布动态请求,假设评价每人有 50 个朋友,其中有 5%的朋友会点赞和评论,因此约有 2 个朋友点赞,即 2.4 亿点赞评论请求。查看朋友圈业务约为 18000qps,发布朋友圈业务约为 2800tps,评论点赞约为 5500tps。


2.子业务分析

2.1 查看朋友圈:

单机:存储高性能:redis 集群,通过 list 数据结构,将朋友的动态推送到用户的空间

集群:计算高性能:任务分配:负载均衡,用 hash、轮询或随机算法分配到不同计算服务器

存储高性能:redis 集群


2.2 发布朋友圈:

单机:存储高性能:使用 kafka 队列,将发布消息发送到推送计算服务器,由推送计算服务器将

实际数据写入各个用户 redis list 中。将图片传送到文件服务器并更新 mysql 索引数据。用户客户端缓存发布内容

集群:计算高性能:任务分配:负载均衡,用 hash、轮询或随机算法分配到不同计算服务器

存储高性能:mysql 集群、文件服务器集群(mysql 集群记录动态内容及图片在文件服务器的 索引)


2.3 点赞评论:

单机:存储高性能:使用客户端缓存,将点赞评论数据记录在客户端,并显示给用户

集群:计算高性能:任务分配:负载均衡,用 hash、轮询或随机算法分配到不同计算服务器

存储高性能:将点赞评论内容保存到 mysql 集群服务器,也可将内容通过异步队列的方式,分发 到计算服务器去解析,再由计算服务器保存入 mysql 数据库。


3.架构设计理由

朋友圈业务功能,对于实时性要求不高,但是会有非常大的并发量,因此在发布和点赞评论业务中,使用异步队列,将数据发送到其他计算服务去处理,发布业务中,保存朋友圈动态的同时,需要将消息推送给朋友,因此保存消息和动态推送使用不同的数据库模型。朋友圈查看这一块内容,如果一次朋友圈查看需要根据不同的朋友动态,发送多次的 mysql 及文件服务器查询请求,这或许不是一个成熟的解决方案。

用户头像

还未添加个人签名 2019.03.11 加入

还未添加个人简介

评论

发布
暂无评论
模块二作业 微信朋友圈高性能分析_Geek__猫猫头_InfoQ写作社区