环境设计入门:成为更优秀的工程师
环境设计入门指南

动机
一个有组织的资源集合,旨在帮助你了解如何构建可扩展的系统。就是现在你可以学习如何设计大规模平台,为框架设计面试做准备。本指南包含的
学习设计大规模系统
学习如何设计可扩展系统将援助你成为更优秀的工程师。体系设计是一个广泛的话题,网络上有大量的资源分散在各处。这份指南整理了所有你所需的学习资源,帮助你系统化地学习。
系统设计面试准备
除了编码面试外,系统设计也是许多科技公司技术面试过程中的一个必要环节。你行练习常见的系统设计面试问题,并将自己的结果与样本解决方案进行比较,包括讨论、代码和图表。
补充的面试准备主题包括:
Anki 卡片

提供的 Anki 卡片组通过利用间隔重复的方式帮助你记住关键的系统设计概念。能够下载的卡片包括:
非常适合在外出时运用。
互动编码挑战资源
寻找辅助你为编码面试做准备的资源?

你可以查看姐妹库互动编码挑战,该库包含一个额外的 Anki 卡片组:
系统设计主题索引
了解系统设计主题的良好开始是在多个主题间获得简明总结,包括它们的优缺点。每部分囊括链接以获取更深入的研究资料。

以下是一些建议的学习步骤:
步骤1:回顾可扩展性视频讲座
可以从 哈佛的可扩展性讲座 开始。
覆盖的主题:
- 垂直扩展
- 水平扩展
- 缓存
- 负载均衡
- 数据库复制
- 数据库分区
步骤2:回顾可扩展性文章
阅读关于 可扩展性的文章,了解更多。在该文章中你将学到:
针对性能 VS 可扩展性、延迟 VS 吞吐量、可用性 VS 一致性等高层次的权衡将被详细讨论。
性能与可扩展性
一个服务是 可扩展的,如果分配的资源能有效提升性能。通常增加性能意味着能够处理更多的工作单位,但也可能意味着处理更大的工作单位,例如,当数据集增加时。
性能和可扩展性的区别
- 如果你有 性能问题,系统对单一用户依然速度缓慢。
- 如果你有 可扩展性困难,系统对于单一用户速度正常,但在负载过重时变得缓慢。
阅读更多有关可扩展性 的理解。
延迟与吞吐量
延迟是执行一些操作的时间或产生结果的时间。
吞吐量是单位时间内完成的行动或产生的结果的数量。
你通常应该瞄准最大吞吐量 和 可接受的延迟。
详细内容和阅读更多内容
通过本文献继续理解延迟与吞吐量的关系。应该访问的链接包括:
可用性与一致性
CAP 定理
通过在一个分布式计算系统中,你只能够保证下面两个特性中的任意两个:
- 一致性:每个读取操作接收到最近的写入或产生错误。
- 可用性:每个请求都接收到响应,但不能保证最新版本的信息。
- 分区容忍性:平台在因网络故障而导致的任意分区由于其子网仍然能继续管理。
网络并不可靠,因此你需要支持分区容忍性。在一致性和可用性之间需要进行软硬件的权衡。
发布的不同一致性模式和可用性模式将进一步详述。
同类项目
以下是一些与本项目类似的系统设计资源和设备:
- 系统设计速查表- 提供快速转向常见平台设计概念的资源。
- LeetCode- 针对系统设计障碍的一整套练习题库。
- Grokking the System Design Interview- 一门详细的在线课程,帮助你准备架构设计面试。
通过上述资源和工具,能够协助您更好地理解和掌握系统设计的复杂性与实用性。


浙公网安备 33010602011771号