架构练习二:分析一下微信朋友圈的高性能复杂度

要求:

  1. 对照模块2讲述的复杂度分析方法, 分析微信朋友圈的复杂度;
  2. 针对各个复杂度, 画出你的架构设计方案(无需做备选方案, 只需要最终的方案即可);
  3. 给出你的架构方案中关键的设计理由。
  4. 3~5页 PPT 即可, 涵盖复杂度分析、架构设计、设计理由。

提示:

  1. 分析过程可以参考模块2第5课的实战案例, 但是不需要将分析过程一一列举出来。
  2. 如果某个地方被卡主了, 请及时联系助教或者老师讨论。

分析过程

需求,朋友圈主要两个功能:

  1. 查看朋友圈
  2. 发朋友圈

查看朋友圈,即为读服务,主要复杂度在高性能

例如:刷新时,等了一会儿,还没刷出来。

发朋友圈,即为写服务,主要复杂度在高可用

例如:发朋友圈时,写了一大堆,然而却发不出去。

朋友圈高性能复杂度分析:
架构实战二 - 图1

发朋友圈架构图,如下:

因为微信朋友上限为5000人,所以可以采用写扩散方式。 即为推模式,用户发送一条朋友圈后,主动将这条朋友圈推送给他的好友。

可优化:

  1. 消息队列:会使用消息队列来消除写入的峰值。
  2. 提升数据库的插入性能: 采用了 TokuDB 作为 MySQL 的存储引擎。

架构实战二 - 图2

看朋友圈架构图,如下:
架构实战二 - 图3

整体架构入下:
架构实战二 - 图4