浅谈微信朋友圈复杂度
微信朋友圈的复杂度总体分析
有如下功能:a. 上传图片或者视频;
b. 我的朋友圈里的内容展现;
c. 对每一个内容点赞和评论;
d. 广告植入推荐。
简单理解为:发朋友圈(写入),查看朋友圈(查询),对内容点赞评论(写入)。
对照业务复杂度和质量复杂度:业务容易理解,写入-查询,业务复杂度低;但是质量复杂度要求高,体现在:

微信用户量大,发朋友圈 tps 据说达到 23 万/s;读取的 QPS 可以达到至少 23*20= 460 万/s; 点赞和评论就是写入:假设要低于 23 万/s; 这明显要求对高性能,高可用有很高的设计;
架构设计分析
a 发朋友圈的高可用和高性能设计:

发朋友圈,有个现象,写完内容之后,基本上页面就缓存起来,然后后端应该是去到缓存服务器了,最后才同步到数据库中;
b 读取朋友圈列表信息:
我的分析是这样的: 首先客户端会从缓存中读取,缓存中没有的话,才会去数据库里去查询。有一个现象,自己发的朋友圈,你怎么刷都是按照时间顺序来排序的,所以写入缓存的时候,也是按照时间来写入的。
发朋友圈的高可用和高性能设计:

c 点赞和评论朋友圈:

d 微信朋友圈整体架构:

评论