菜单

系统设计主题类别

相关源文件

目的与范围

本文档全面概述了System Design 101存储库涵盖的主要系统设计主题类别。该存储库旨在通过视觉化和简洁的语言解释复杂的系统,使其易于理解,既适用于系统设计面试准备,也适用于了解现代系统底层工作原理的一般性教育。有关存储库的总体概述,请参阅System Design 101概述

来源:README.md17-21

分类层级

System Design 101存储库将复杂的系统设计概念组织成逻辑的、相互关联的类别。下图说明了主要类别及其关系

来源:README.md25-448

主要系统设计类别

1. API与Web开发

此类别涵盖了构建健壮的Web应用程序和API的协议、设计模式和技术。它包括HTTP、REST、GraphQL、gRPC、负载均衡、API网关和浏览器渲染等主题。

关键子类别

  • 通信协议(HTTP/1、HTTP/2、HTTP/3)
  • API设计与架构(REST、GraphQL、gRPC、SOAP)
  • Web基础设施组件(负载均衡器、代理、API网关)
  • 浏览器技术与渲染

来源:README.md27-76

2. 真实案例研究

此类别提供了来自大型科技公司的系统设计实现的实际示例,展示了理论概念如何在生产环境中应用。

值得注意的例子包括

  • Netflix的架构与技术栈
  • Twitter的架构演进
  • Airbnb的扩展历程
  • Discord的消息存储解决方案
  • YouTube的视频上传处理

来源:README.md78-110

3. AI与机器学习

本节涵盖AI和ML系统设计概念,包括数据管道、模型架构和实际应用。

主要主题包括:

  • 数据处理与管理
  • 大型语言模型架构
  • AI代理概念
  • ML基础设施设计

来源:README.md111-119

4. 数据库与存储

此类别探讨数据库系统、存储技术和数据管理模式。它涵盖SQL和NoSQL数据库、消息队列、分片策略和一致性模型。

关键领域包括

  • 数据库模型与选择标准
  • 数据分片与分区技术
  • 一致性模式与ACID属性
  • 消息队列架构
  • 存储系统设计

来源:README.md120-167

5. 技术面试

本节侧重于专门帮助进行技术和系统设计面试的资源,包括常见问题和准备策略。

关键组件

  • 系统设计面试题
  • 常见面试题的技术解释
  • 推荐的面试准备材料

来源:README.md168-173

其他系统设计类别

来源:README.md174-270

6. 缓存与性能

此类别涵盖了优化系统性能的技术和工具,重点是缓存策略和内容交付。

主要主题包括:

  • Redis与Memcached实现
  • 内容分发网络(CDN)
  • 缓存策略与驱逐策略
  • 性能指标与优化
  • Elasticsearch与ELK栈

来源:README.md174-203

7. 支付与金融科技系统

本节侧重于支付处理系统、金融技术和相关的安全注意事项。

关键领域包括

  • 支付流程与处理
  • 数字钱包实现
  • 财务对账
  • 资金流动与交易
  • 二维码与非接触式支付

来源:README.md204-224

8. 软件架构模式

此类别探讨各种软件架构模式、设计方法和实现方法。

主要主题包括:

  • 微服务架构
  • 设计模式
  • 领域驱动设计
  • 面向对象编程概念
  • 系统设计权衡
  • 移动应用架构

来源:README.md225-249

9. DevTools与生产力

本节涵盖开发工具、工作流程和提高软件工程师生产力的方法。

关键领域包括

  • Git与版本控制
  • 绘图与可视化工具
  • Linux命令行工具
  • 性能监控工具
  • 代码质量工具

来源:README.md250-270

基础设施与开发类别

10. 软件开发

本类别涵盖编程概念、语言特性和软件开发原则。

主要主题包括:

  • 编程范式与语言
  • 数据结构与算法
  • 并发与并行
  • 代码质量原则
  • 服务器实现

来源:README.md271-299

11. 云与分布式系统

本节探讨云技术、分布式系统模式和可伸缩性策略。

关键领域包括

  • 无服务器架构
  • 可伸缩性与弹性模式
  • 云基础设施设计
  • 分布式系统组件
  • AWS、Azure和Google Cloud服务

来源:README.md300-349

12. 工作原理?

本节提供了特定技术实现和系统设计的详细解释。

值得注意的例子包括

  • 电子邮件递送系统
  • 聊天应用设计
  • Google Maps架构
  • 搜索引擎内部机制
  • 邻近服务设计

来源:README.md350-368

13. DevOps与CI/CD

本节侧重于DevOps实践、持续集成、部署策略和运营关注点。

主要主题包括:

  • Kubernetes概念与工具
  • Docker与容器化
  • CI/CD管道与实践
  • 部署策略
  • 日志记录、监控与可观测性

来源:README.md369-396

安全与基础

来源:README.md397-448

14. 安全系统与实践

本类别涵盖安全概念、身份验证机制、加密和构建安全系统的最佳实践。

主要主题包括:

  • 身份验证方法(JWT、OAuth、SSO)
  • 加密与密码学
  • Cookie、会话与令牌
  • 网络安全与防火墙
  • VPN技术
  • 密码管理

来源:README.md397-432

15. 计算机基础

本节涵盖与系统设计相关的基础计算机科学概念。

关键领域包括

  • 网络协议(TCP/IP、UDP)
  • DNS与域名系统
  • 操作系统概念
  • 内存管理
  • 进程间通信
  • SQL基础

来源:README.md433-446

横切关注点

一些重要的系统设计考虑因素贯穿多个类别

关注点受影响的类别核心概念
可扩展性云与分布式系统、数据库与存储、API与Web开发水平/垂直扩展、分片、负载均衡
性能缓存与性能、数据库与存储、API与Web开发降低延迟、优化吞吐量、提高资源效率
安全安全、API与Web开发、支付与金融科技身份验证、授权、加密、安全编码
可靠性云与分布式系统、DevOps与CI/CD、软件架构容错、冗余、灾难恢复
可观测性DevOps与CI/CD、云与分布式系统日志记录、监控、警报、追踪

来源:README.md25-448

类别在现实世界中的应用

System Design 101存储库通过Netflix、Twitter和Airbnb等公司的案例研究,独特地展示了这些类别如何在现实世界的系统中相互作用。这些例子展示了理论概念如何在生产环境中实现,并有助于弥合抽象的系统设计主题与实际应用之间的差距。

例如,Netflix架构案例研究展示了

  • 微服务架构(软件架构)
  • 内容分发优化(缓存与性能)
  • 云基础设施(云与分布式系统)
  • API网关模式(API与Web开发)

来源:README.md78-110