模块二作业
1. 对照模块 2 讲述的复杂度分析方法,分析微信朋友圈的复杂度。

朋友圈的业务不复杂,基本上就是发动态,看动态和评论/赞。
质量上,由于不涉及金融,现金,证卷等等,所以质量复杂度不高。
所以,朋友圈属于低质量低业务复杂度。
2. 针对各个复杂度,画出你的架构设计方案(无需做备选方案,只需要最终的方案即可)。
3. 给出你的架构方案中关键的设计理由。
4. 3~5 页 PPT 即可,涵盖复杂度分析、架构设计、设计理由

将朋友圈的业务场景分为发动态,看动态和评论/点赞。

以上是发动态的高性能复杂度分析。

看动态的高性能复杂度分析。

评论/点赞的高性能复杂度分析。

以上是综合了高性能和成本后的方案。
朋友圈不需要实时的写入或者读取,所以不需要用到缓存。平常的数据库读写应该可以应付。
在 NGinX 使用 Hash,将同一个动态的发,看,评论都发到同一个服务器上,这样同样的资源可用重复使用,提高 DB 性能。
但是讯息量会很大,所以使用分库分表。
由于全国使用人数众多,分成南北双机房,可用提高性能。
评论