在面试中,常见的错误是面试官给出问题后,候选人就开始怼各种关键词,什么 Load Balancer,Memcache,NodeJS,MongoDB,MySQL……
实际上,针对系统设计问题,九章算法有一套 4S 分析法,即使完全不知道的问题也可以按照这个方法一步步去回答。
所谓 4S 分析法中的 4S 是指Scenario (场景),Service (服务),Storage (存储),Scale (扩展)。
接下来,我们结合 4S 分析法来具体回答一道常见系统设计题:如何设计一个推特?
在这一步,你需要询问面试官:需要设计哪些功能(也可以自己想),需要承受多大的访问量?
首先可以把 Twitter 的功能一个个罗列出来,很显然你无法在 45 分钟的面试中完成所有功能的设计,所以需要筛选出核心功能( Post a Tweet,Timeline,News Feed,Follow/Unfollow a user,Register/Login )。
然后有的面试官可能会问你系统承受的 QPS 大概是多少?需要考虑并发用户,读频率( Read QPS )以及写频率( Write QPS )。记住重要的是你的思考和计算过程而不是计算结果。
分析 QPS 有什么用?
QPS 和 服务器 /数据库之间的关系
关于更多的内容,可以来看我主讲的**《系统架构设计》**,现在前两节限免开放。