系统设计主题类别
相关源文件
目的与范围
本文档全面概述了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
此类别涵盖了优化系统性能的技术和工具,重点是缓存策略和内容交付。
主要主题包括:
- Redis与Memcached实现
- 内容分发网络(CDN)
- 缓存策略与驱逐策略
- 性能指标与优化
- Elasticsearch与ELK栈
来源:README.md174-203
7. 支付与金融科技系统
本节侧重于支付处理系统、金融技术和相关的安全注意事项。
关键领域包括
- 支付流程与处理
- 数字钱包实现
- 财务对账
- 资金流动与交易
- 二维码与非接触式支付
来源:README.md204-224
8. 软件架构模式
此类别探讨各种软件架构模式、设计方法和实现方法。
主要主题包括:
- 微服务架构
- 设计模式
- 领域驱动设计
- 面向对象编程概念
- 系统设计权衡
- 移动应用架构
来源:README.md225-249
本节涵盖开发工具、工作流程和提高软件工程师生产力的方法。
关键领域包括
- 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