Skip to main content
AI EducademyAIEducademy
🌳

AI基础

🌱
AI 种子

面向现实世界的 AI 素养

🌿
AI 萌芽

智能系统背后的基础

🌳
AI 枝干

用当今的 AI 能力去构建

🏕️
AI 树冠

打造可靠的生成式 AI 系统

🌲
AI 森林

负责任地交付 AI 产品

🔨

AI精通

✏️
AI 草图

AI 构建者的工程基础

🪨
AI 雕刻

攻克更难问题的模式

⚒️
AI 匠心

设计可扩展 AI 的系统

💎
AI 打磨

在 AI 时代沟通与引领

🏆
AI 杰作

你的生产级 AI 毕业项目

🚀

职业准备

🚀
面试发射台

驾驭 AI 工程求职市场

🌟
行为面试精通

讲好你创造影响力的故事

💻
技术面试

在压力下解题、设计与沟通

🤖
AI与ML面试

备战现代 ML 与生成式 AI 面试

🏆
Offer与未来

做出自信而明智的下一步

查看所有学习计划→

实验室

已加载 7 个实验
🧠神经网络游乐场🤖AI 还是人类?💬提示实验室🎨图像生成器😊情感分析器💡聊天机器人构建器⚖️伦理模拟器
🎯模拟面试进入实验室→
学习旅程博客
🎯
关于

让AI教育触达每一个人、每一个角落

❓
常见问题

常见问题解答

🧰
AI 工具

我们使用并推荐的精选工具

✉️
联系

与我们取得联系

⭐
开源

在 GitHub 上公开构建

定价
立即开始
AI EducademyAIEducademy

© 2026 AI Educademy. 保留所有权利。

学习

  • 学习计划
  • 课程
  • 实验室
  • AI 入门工具包
  • 定价

社区

  • GitHub
  • 参与贡献
  • 行为准则
  • 关于
  • 常见问题

支持

  • 请我喝杯咖啡 ☕
  • 服务条款
  • 隐私政策
  • 联系我们
  • Sitemap
AI & 工程学习计划›⚒️ AI 匠心›课程›系统设计基础知识 - 可扩展系统的构建模块
🏗️
AI 匠心 • 高级⏱️ 20 分钟阅读

系统设计基础知识 - 可扩展系统的构建模块

🤖

本课程由机器自动翻译成中文,尚未经过人工校对。如果读起来有些奇怪,请以英文原文为准。

为什么系统设计很重要

每个大型应用程序都是由相同的基本构建块组装而成。面试官并不期望你发明新技术 - 他们希望看到你针对给定问题选择并组合正确的组件。本课程涵盖您在每次设计面试中都会用到的工具包。

客户端-服务器架构

从本质上讲,网络遵循一个简单的模型:客户端发送请求,服务器处理它们,然后返回响应。但现代系统在这两个端点之间添加了层来处理规模、可靠性和性能。

一个典型的请求可能会经过:客户端→CDN→负载均衡器→API网关→应用服务器→缓存→数据库。每一层都解决一个特定的问题,了解“何时”需要每层可以将强大的候选者与普通的候选者区分开来。

💡

在面试中,在深入细节之前,始终先勾勒出高级客户端-服务器流程。它显示了结构化思维。

负载均衡器:分配流量

单个服务器的容量是有限的。负载均衡器使用以下策略在多个服务器之间分配传入请求:

  • 循环 - 请求按顺序在服务器之间循环
  • 最少连接 - 路由到处理最少活动请求的服务器
  • 一致的散列 - 根据密钥将请求映射到特定服务器(对于缓存有用)

负载均衡器还执行健康检查,自动从池中删除不健康的服务器。在云环境中,AWS ALB 或 Azure Front Door 等服务可以透明地处理此问题。

🧠小测验

社交媒体源服务接收的读取次数比写入次数多 10 倍。哪种负载平衡方法最能确保用户始终访问同一缓存热服务器?

缓存:每一层的速度

缓存将经常访问的数据存储在离消费者更近的地方。它存在于多个层面:

|层 |示例|延迟 | |--------|---------|---------| |浏览器缓存 |静态资产、API 响应 | ~0 毫秒 | | CDN |图片、CSS、JS 文件 | 〜10-50ms | |应用程序缓存 | Redis、Memcached | 〜1-5ms | |数据库缓存|查询结果缓存 | 〜5-10ms |

缓存失效是众所周知的计算中最困难的问题之一。常见策略包括TTL(生存时间)、直写(每次写入时更新缓存)和缓存旁路(应用程序显式管理缓存)。

🤯

Phil Karlton 的名言 - “计算机科学中只有两件事很难:缓存失效和命名” - 被广泛引用,几乎成为系统设计面试中的必经之路。

数据库:SQL 与 NoSQL

选择正确的数据库是最有影响力的设计决策之一:

SQL 数据库(PostgreSQL、MySQL)提供 ACID 事务、强一致性和结构化模式。当数据具有清晰的关系并且您需要带有连接的复杂查询时,它们会表现出色。

NoSQL 数据库 有多种类型:

  • 文档存储 (MongoDB) - 灵活的模式,非常适合各种数据结构
  • 键值存储(DynamoDB、Redis) - 按键快速查找
  • 宽列存储 (Cassandra) - 海量写入吞吐量,按设计分配
  • 图数据库 (Neo4j) - 关系型数据,例如社交网络
🧠小测验

您正在设计一个系统,用于存储具有经常更改的半结构化数据(每种用户类型不同的字段)的用户配置文件。哪种数据库类型最适合?

10 的 1 课已完成 0%
←返回学习计划
继续:设计 URL 缩短器 - 您的第一次系统设计面试→

讨论

登录 后参与讨论

建议修改本课内容

消息队列:异步处理

并非每个操作都需要立即响应。消息队列(RabbitMQ、Apache Kafka、AWS SQS)将生产者与消费者分离,从而实现:

  • 异步处理 - 注册后发送电子邮件而不阻止响应
  • 负载均衡 - 通过缓冲请求吸收流量峰值
  • 容错 - 如果消费者崩溃,消息将在队列中等待

Kafka 值得特别提及:它不仅仅是一个队列,而是一个分布式事件日志,支持事件驱动的架构,其中多个消费者可以独立处理相同的事件流。

显示客户端、负载均衡器、应用程序服务器、缓存层、数据库和消息队列的架构图
可扩展系统的基本构建块 - 每一层都解决一个特定的问题。

微服务与单体架构

|方面|巨石|微服务| |--------|----------|----------------| |部署 |单机|独立服务| |缩放 |一起扩展一切|扩展个性化服务| |复杂性 |上手更简单 |运营费用| |数据|共享数据库|每个服务的数据库 |

启动单体应用,在需要时提取微服务。 大多数面试官都欣赏那些承认微服务会带来分布式系统复杂性(网络故障、数据一致性、部署编排)并且并不总是正确选择的候选人。

🤔
Think about it:

Netflix 多年来从单体架构迁移到微服务,这一点众所周知。但处理数十亿交易的 Shopify 仍然运行着模块化的整体架构。对于特定公司而言,哪些因素可能使一种方法优于另一种方法?

CAP 定理简化

CAP 定理指出,分布式系统只能同时保证三个属性中的两个:

  • 一致性 - 每次读取都会返回最近的写入
  • 可用性 - 每个请求都会收到响应
  • 分区容错 - 尽管网络故障,系统仍继续运行

由于网络分区在分布式系统中是不可避免的,因此真正的选择是在CP(一致性优于可用性)和AP(可用性优于一致性)之间。

  • CP 系统(例如,大多数读取的 HBase、MongoDB) - 返回错误而不是过时的数据
  • AP 系统(例如 Cassandra、DynamoDB)- 始终响应,但数据可能稍微陈旧
🧠小测验

您正在设计一个银行交易系统,其中不正确的余额可能会导致财务损失。您应该优先考虑哪种 CAP 权衡?

面试框架

当你参加系统设计面试时,请遵循以下结构:

  1. 需求 - 澄清功能和非功能需求(5 分钟)
  2. API 设计 - 定义关键端点或接口(5 分钟)
  3. 数据模型 - 选择数据库并定义模式(5 分钟)
  4. 高层架构 - 使用当今的构建块绘制系统草图(10 分钟)
  5. 深入研究 - 扩展瓶颈、处理故障、优化(15 分钟)
🤔
Think about it:

想想您每天使用的系统 - Instagram、Uber 或 Spotify。您能确定它可能使用本课程中的哪些构建块吗?负载均衡器应该放在哪里?什么会被缓存?哪种数据库类型适合其数据模型?

要点

  • 每个可扩展系统都使用相同的核心构建模块 - 学习一次,随处应用
  • 负载均衡器、缓存和消息队列各自解决不同的扩展挑战
  • 数据库选择(SQL 与 NoSQL)取决于数据形状、一致性需求和访问模式
  • CAP 定理迫使权衡 - 知道你的系统应该偏向哪一边
  • 遵循结构化面试框架:需求→API→数据→架构→深入探讨

接下来:我们将应用这些基础知识从头开始设计 URL 缩短器。