架构实战营 - 模块二作业

分享微信朋友圈的复杂度
微信朋友圈是一个复杂度低,质量复杂度高的业务。

朋友圈业务

质量复杂度分析
1.在网上查了下微信没有有 10.9 亿人打开微信,3.3 亿人进行视频通话,7.8 亿人进朋友圈,1.2 亿人发朋友圈。从中我们可以得到,日发送朋友圈 1.2 亿人,日浏览 7.8 亿次,
QPS 分析,
按照 28 法则,80%的人集中在 7 点,10 点,17 点,20 点时,预计,朋友圈 QPS 为 7.8 亿*0.8/(4*60*60)=9w/s。
TPS 分析
百分 80 发朋友圈集中在白天的十个小时中,预估发朋友圈 TPS 为:1.2 亿*0.8/(10*60*60)=4000/s。
这里还有考虑到点赞和评论/回复,按照 QPS 9W/s 计算有十分之一浏览,会产生点赞或者评论/回复那么估算,点赞 tps 是 1w/s,评论/回复 1w/s.

架构复杂度分析结论
按照峰值计算复杂度主要集中的查看朋友圈这块,朋友圈查看内容,有图片,视频,文字三部分。这三部分,所占的空间大小是不一样,如果根据内容大小采取不同的方案存储和部署,收益会更大。还有由于有发朋友圈后,到好友看到这条朋友圈,实时性没必要要求那么高,做到 2 分钟内 100%能看到,30 秒内 95% 能看到即可
下面是我的系统架构高性能方案
1.发朋友圈,点赞,评论回复

2.刷朋友圈

3.朋友圈架构模型



架构设计描述
1.发朋友圈,文字部分(包含评论,回复,点赞)先存储的 LSM 结构数据库中,后异步将该条朋友圈及其评论,回复,点赞。同步到刷朋友圈服务,并加缓存,图片视频,由终端先提交到 云端文件存储服务里面,图片、视频地址,跟文字一同存入 LSM 结构数据库里面去。
2.好友动态服务也要记录用户最新的好友动态数据(数据来源发朋友圈服务)
3.查询服务加双缓存
4.架构上可以采用异地多活
评论