架构 -- 作业 2
微信朋友圈高性能复杂度分析。
朋友圈主要功能:
发布、点赞、评论。
微信朋友圈用户量:
可以搜索到的微信相关用户数据为 2021 年年初张小龙在微信公开可中公布的,微信总用户数 10.9 亿用户,每天 7.8 亿用户打开朋友圈,1.2 亿用户发朋友圈。
而 2022 年半年报中微信披露用户已经达到 13 亿,按照微信用户的增长进行同比例估算每天打开微信朋友圈的用户约为 9 亿,1.3 亿用户发送朋友圈
所以,微信朋友圈数据业务复杂度低但是质量复杂度高的分类。
高性能复杂度分析:
1.3 亿/86400 约为 1500,粗略估计人均每条朋友圈会得到 5 个左右点赞或评论,那么可以认为由朋友圈产生的 TPS 每秒约为 10000。但是由于用户使用时间并非均匀分布在每天 24 小时中,且微信用户绝大多数为中国境内用户,那么粗略估计实际的 tps 峰值是超过 10W 的。
浏览朋友圈与发布朋友圈并没有足够的因果关系,根据每天使用朋友圈的用户数,假定平均每个用户
刷 10 次朋友圈,则估计平均每秒的 QPS 约为 10W 左右,则实际的 QPS 峰值应该在百万量级。
架构方案思路:
1、朋友圈发布评论点赞业务简单,计算高性能只需要进行任务分配
2、由于朋友圈数据量大,需要考虑存储任务分解(分库分表)
3、点赞数据操作更频繁,数据关系简单且对数据完整要求相对低,可以 redis 持久化。朋友圈及评论则相反,需要优先保证存入数据库。
4、朋友圈消息提醒推送,不需要实时,可以使用消息队列等方式异步完成。
5、朋友圈上传的图片或者短视频可以依赖已有的静态资源服务
6、由于朋友圈数据时间越久访问可能越低,时间越新访问可能性越高,可以考虑在 redis 集群对一定时间内朋友圈信息进行缓存。
评论