Logo

案例研究:站在巨人的肩膀上

从系统设计领域的经典工作中学习,以应用于面试和现实问题中的新场景。

概念

案例研究:站在巨人的肩膀上

从系统设计领域的经典工作中学习,以应用于面试和现实问题中的新场景。

当我们需要设计一个系统来解决特定问题时,可能会出现两种相互冲突的策略:

  • 问题本身是全新的,此前从未有人解决过。

  • 问题并无新意,可以将其对应到已知的解决方案模板中。

从某种意义上说,这两种策略处于完全对立的两端,而现实往往介于两者之间。一方面,深入理解系统的基本构建模块至关重要;另一方面,研究他人如何解决具体问题,有助于我们看清设计权衡,并据此判断哪些部分可以归约为已有解决方案。

我们之前关于系统设计的课程,从介绍现代系统的根本构建模块开始,并将其应用于精心挑选的设计问题。

在本课程中,我们将系统设计的学习提升到更高层次,通过学习一些经过精心挑选的经典系统来实现。我们将从基本原理出发(即提出当前问题、思考不同解决方案及其权衡与评估),作为学习工具。在此过程中,我们会掌握多种设计模式,并发现这些系统常常挑战传统解决问题的思维定式(因此具有创新性)。

课程贡献

我们为本课程带来了以下几点贡献,以使学习更具启发性:

  • 精心挑选来自多个领域的系统,展现其应对不断演进需求的能力。

  • 提供易于理解的讲解内容,帮助你快速掌握核心要点,无需阅读原始研究论文。

  • 课程中提出大量开放性问题,可能有多种解答方式。我们通常提供一种解决方案,同时鼓励你独立思考其他可能性。

  • 将解决同一问题的不同方法进行对比,以加深对权衡关系的理解。

  • 在每章末尾的“系统设计智慧”部分,提炼出反复出现的核心概念。

我们的设计问题主要源自几篇具有里程碑意义的研究论文。我们的目标是深入理解某个具体问题及其相关权衡,以及为何这些系统会以特定方式来解决它。我们希望,在完成本课程后,你能够在面试或日常工作中识别出类似问题,并能对各种可能的解决方案做出有依据的评估。

设计问题

文件系统

数据库

键值存储

并发管理

大数据处理:批处理到流处理

设计深度解析

共识算法

文件系统