模块二作业
1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。
![](https://static001.geekbang.org/infoq/3c/3cfa4fdfcd5b4e6c30eac0143d0b4864.png)
朋友圈的业务不复杂,基本上就是发动态,看动态和评论/赞。
质量上,由于不涉及金融,现金,证卷等等,所以质量复杂度不高。
所以,朋友圈属于低质量低业务复杂度。
2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。
3. 给出你的架构方案中关键的设计理由。
4. 3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由
![](https://static001.geekbang.org/infoq/bf/bf3e858c5d7527a0d2e3c85551c9b3bf.png)
将朋友圈的业务场景分为发动态,看动态和评论/点赞。
![](https://static001.geekbang.org/infoq/0e/0eae2a0bbb5313185791bae4ac9d7628.png)
以上是发动态的高性能复杂度分析。
![](https://static001.geekbang.org/infoq/6b/6b7367b09630f408538333d901130d29.png)
看动态的高性能复杂度分析。
![](https://static001.geekbang.org/infoq/fa/facaf59312ee17baa6f0b1bb59195e5d.png)
评论/点赞的高性能复杂度分析。
![](https://static001.geekbang.org/infoq/b7/b716da3a2700ddf6cbd1af282ebd809b.png)
以上是综合了高性能和成本后的方案。
朋友圈不需要实时的写入或者读取,所以不需要用到缓存。平常的数据库读写应该可以应付。
在 NGinX 使用 Hash,将同一个动态的发,看,评论都发到同一个服务器上,这样同样的资源可用重复使用,提高 DB 性能。
但是讯息量会很大,所以使用分库分表。
由于全国使用人数众多,分成南北双机房,可用提高性能。
评论