微信朋友圈的高性能复杂度分析
![微信朋友圈的高性能复杂度分析](https://static001.geekbang.org/infoq/bf/bf53fe850975abca9b10e87184f36c44.jpeg)
朋友圈复杂度总体分析
![](https://static001.geekbang.org/infoq/a1/a1e7fb6db9c82d436f93fa6d6732b28c.png)
朋友圈虽然依托于微信,有巨大的流量,功能不少,但主要功能还是以消息读取及展示、社交互动为主,对质量复杂度要求其实不用太高(少看一条不会引起质量事故),但业务复杂度相对高一些(广告、可见权限控制、消息更新、图片/视频压缩等),所以,我认为朋友圈属于高业务复杂度,低质量复杂度的业务。
朋友圈高性能复杂度分析
我分享一组数据吧,到今天,每天——
有 10.9 亿用户打开微信,3.3 亿用户进行了视频通话;
有 7.8 亿用户进入朋友圈,1.2 亿用户发表朋友圈,其中照片 6.7 亿张,短视频 1 亿条;
有 3.6 亿用户读公众号文章,4 亿用户使用小程序;
假设每个用户每天打开微信 5 次,每条朋友圈评论 5 条,点赞 5 次,
那么朋友圈高性能复杂度分析是这样的:
![](https://static001.geekbang.org/infoq/05/055f266e0815587f2c1639b6a137fd8b.png)
朋友圈高性能方案
由于朋友圈的业务量,不可能是单机部署,所以不需要考虑单机情况下的高性能方案,直接采用集群高性能方案。
朋友圈的发圈、看圈、评论、点赞都需要考虑计算高性能和存储高性能,因此,整体高性能方案分析如下图所示:
![](https://static001.geekbang.org/infoq/14/149d6d275f86b386691851d34eca9dce.png)
发圈主要是图片/视频的快速上传、文件压缩,
看圈主要是消息的快速获取(按人、按权限、按时间加载消息流),图片/视频的快速加载
评论和点赞主要是消息的快速交换
![](https://static001.geekbang.org/infoq/93/9328ae833502d67778ef78f2f9338100.png)
整体方案上,
业务集群采用分库分表来减轻数据压力、性能压力,并保持数据结构一致性;
通过高性能缓存中间件来加快中间态信息的获取以及压力的缓冲
集群部署起码需要两地三中心的部署架构,保证业务数据的可靠性及容灾能力
图片/视频的存储和读取需要增加 CDN
版权声明: 本文为 InfoQ 作者【糖糖学编程】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a516114a9cc7d69e58a142e2】。未经作者许可,禁止转载。
评论