架构练习二:分析一下微信朋友圈的高性能复杂度
要求:
- 对照模块2讲述的复杂度分析方法, 分析微信朋友圈的复杂度;
- 针对各个复杂度, 画出你的架构设计方案(无需做备选方案, 只需要最终的方案即可);
- 给出你的架构方案中关键的设计理由。
- 3~5页
PPT即可, 涵盖复杂度分析、架构设计、设计理由。
提示:
- 分析过程可以参考模块2第5课的实战案例, 但是不需要将分析过程一一列举出来。
- 如果某个地方被卡主了, 请及时联系助教或者老师讨论。
分析过程
需求,朋友圈主要两个功能:
- 查看朋友圈
- 发朋友圈
查看朋友圈,即为读服务,主要复杂度在高性能。
例如:刷新时,等了一会儿,还没刷出来。
发朋友圈,即为写服务,主要复杂度在高可用。
例如:发朋友圈时,写了一大堆,然而却发不出去。
朋友圈高性能复杂度分析:
发朋友圈架构图,如下:
因为微信朋友上限为5000人,所以可以采用写扩散方式。 即为推模式,用户发送一条朋友圈后,主动将这条朋友圈推送给他的好友。
可优化:
- 消息队列:会使用消息队列来消除写入的峰值。
- 提升数据库的插入性能: 采用了 TokuDB 作为 MySQL 的存储引擎。

看朋友圈架构图,如下:
整体架构入下:
