作品简介

系统设计面试被认为是所有技术面试中难度最大的面试,因为面试题的范围都非常广且模糊,其答案也是开放的,不存在标准答案或正确答案。本书是专门为准备系统设计面试的读者而撰写的,重点讨论了分布式系统中的常用组件和大型Web应用的系统架构,涵盖了几类常见的典型应用,包括聊天系统、视频流系统、文件存储系统(云盘)、支付系统等,旨在帮助读者掌握构建一个可扩展的系统所需的基础知识,为面试做好充分准备。

作为过来人,作者提出了应对面试题的“四步法”,即确定问题范围→总体设计→细节设计→总结,书中的案例基本上都是按照这个步骤进行解析的。这种独特的呈现方式,直接针对面试者在面试过程中可能遇到的问题,帮助他们厘清思路,有条不紊地作答。

通过本书,读者可以了解不同Web应用的系统设计方案的要点及采用的技术,据此查漏补缺,补齐自己知识体系中的短板,为面试成功增添更多的可能。而对于已经是架构师的读者而言,书中的案例将为他们提供新的思路和灵感,有助于他们在面试中更加从容地展现自己的设计思路和实践经验。

Alex Xu,卡耐基梅隆大学硕士,他是一位经验丰富的软件工程师,也是一个创业者。他曾在Twitter、苹果和Zynga等公司工作。他热衷于设计和实现复杂的系统。

译者简介

徐江,毕业于瑞典皇家理工学院的系统生物学专业,曾就职于Thoughtworks软件技术有限公司,现在在宝洁公司担任IT service manager,负责consumer relations。

作品目录

  • 内容简介
  • 译者序
  • 前言
  • 1 从0到100万用户的扩展
  • 1.1 单服务器配置
  • 1.2 数据库
  • 1.3 纵向扩展vs.横向扩展
  • 1.4 负载均衡器
  • 1.5 数据库复制
  • 1.6 缓存
  • 1.7 内容分发网络
  • 1.8 无状态网络层
  • 1.9 数据中心
  • 1.10 消息队列
  • 1.11 记录日志、收集指标与自动化
  • 1.12 数据库扩展
  • 1.13 用户量达到甚至超过了100万
  • 2 封底估算
  • 2.1 2的幂
  • 2.2 每个程序员都应该知道的操作耗时
  • 2.3 可用性相关的数字
  • 2.4 案例:估算推特的QPS和存储需求
  • 2.5 小技巧
  • 3 系统设计面试的框架
  • 3.1 有效的系统设计面试的四个步骤
  • 3.2 面试中每一步的时间分配
  • 4 设计限流器
  • 4.1 第一步:理解问题并确定设计的边界
  • 4.2 第二步:提议高层级的设计并获得认同
  • 4.3 第三步:设计继续深入
  • 4.4 第四步:总结
  • 5 设计一致性哈希系统
  • 5.1 重新哈希的问题
  • 5.2 一致性哈希
  • 5.3 总结
  • 6 设计键值存储系统
  • 6.1 理解问题并确定设计的边界
  • 6.2 单服务器的键值存储
  • 6.3 分布式键值存储
  • 6.4 总结
  • 7 设计分布式系统中的唯一ID生成器
  • 7.1 第一步:理解问题并确定设计的边界
  • 7.2 第二步:提议高层级的设计并获得认同
  • 7.3 第三步:设计继续深入
  • 7.4 第四步:总结
  • 8 设计URL缩短器
  • 8.1 第一步:理解问题并确定设计的边界
  • 8.2 第二步:提出高层级的设计并获得认同
  • 8.3 第三步:设计继续深入
  • 8.4 第四步:总结
  • 9 设计网络爬虫
  • 9.1 第一步:理解问题并确定设计的边界
  • 9.2 第二步:提议高层级的设计并获得认同
  • 9.3 第三步:设计继续深入
  • 9.4 第四步:总结
  • 10 设计通知系统
  • 10.1 第一步:理解问题并确定设计的边界
  • 10.2 第二步:提议高层级的设计并获得认同
  • 10.3 第三步:设计继续深入
  • 10.4 第四步:总结
  • 11 设计news feed系统
  • 11.1 第一步:理解问题并确定设计的边界
  • 11.2 第二步:提议高层级的设计并获得认同
  • 11.3 第三步:设计继续深入
  • 11.4 第四步:总结
  • 12 设计聊天系统
  • 12.1 第一步:理解问题并确定设计的边界
  • 12.2 第二步:提议高层级的设计并获得认同
  • 12.3 第三步:设计继续深入
  • 12.4 第四步:总结
  • 13 设计搜索自动补全系统
  • 13.1 第一步:理解问题并确定设计的边界
  • 13.2 第二步:提议高层级的设计并获得认同
  • 13.3 第三步:设计继续深入
  • 13.4 第四步:总结
  • 14 设计视频分享系统
  • 14.1 第一步:理解问题并确定设计的边界
  • 14.2 第二步:提议高层级的设计并获得认同
  • 14.3 第三步:设计继续深入
  • 14.4 第四步:总结
  • 15 设计云盘
  • 15.1 第一步:理解问题并确定设计的边界
  • 15.2 第二步:提议高层级的设计并获得认同
  • 15.3 第三步:设计继续深入
  • 15.4 第四步:总结
  • 16 设计支付系统
  • 16.1 第一步:理解问题并确定设计的边界
  • 16.2 第二步:提议高层级的设计并获得认同
  • 16.3 第三步:设计继续深入
  • 16.4 第四步:总结
  • 17 设计指标监控和告警系统
  • 17.1 第一步:理解问题并确定设计的边界
  • 17.2 第二步:提议高层级的设计并获得认同
  • 17.3 第三步:设计继续深入
  • 17.4 第四步:总结
  • 18 继续学习
  • 后记
展开全部