微信朋友圈 高性能分析
1 月 19 日晚,在微信公开课 Pro 上,微信创始人张小龙披露微信最新数据:每天有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;有 3.6 亿用户读公众号文章,4 亿用户使用小程序。
有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;
朋友圈访问还算均衡,不会有秒杀这种峰值, 不过每个人都要睡觉,我们按照 每天 16 小时来算。
读朋友圈 qps = 780000000 / (16*60*60) = 13542
写朋友圈 tps = 120000000 / (16*60*60) = 2083
小文件存储 tps = 670000000 / (16*60*60) = 11632
大文件存储 tps = 100000000 / (16*60*60) = 1736
按照高性能分析步骤如下:
首先要做个任务分解,分解不是因为业务复杂度,而是因为每个模块规模太大,
然后是 发圈的粗略架构图
存储直接使用 redis,redis 也可以持久化,数据本身也不需要关系型数据。 这样不知是否合理?
这里没有考虑 用户好友关系的 存储, 好友关系应该不属于朋友圈管理, 调 好友关系 服务的 api 即可。
feed 流 考虑到有的人 好友较多, 推送量大, 这个时候 可以根据亲密度 只推送一部分。
存储考虑的是 文本,图片,视频 全部存对象存储 然后分发到 cdn,redis 只存对象链接。不知是否合理?
然后是看圈的粗略架构图
直接拉去到自己的 时间线流, 流里包含了对象链接。
客户端在依次从 cdn 里 拿到所有的 图文,视频。
整个架构里 其实 比较粗,有的技术点 没有底,还是个人积累太少。
服务器和存储 要多少台才够, 不会算。
cdn 这一块 肯定是要用,但是自己缺乏相关知识, 比如 所有 cdn 节点是全部分发还是部分分发,用户从服务器拿到某一个对象链接后 如何找到最近的一个 cdn 节点呢。
feed 流的推送 没想清楚如何推送, 仅仅是一个 异步 循环好友 添加 feed 吗。
评论