《分布式系统:为了乐趣和利益》是一本广受欢迎的资源,用于理解和学习分布式系统。该书由作者Mikito Takada撰写,介绍了构建分布式系统的基本概念、原则和挑战。

这本书涵盖了与分布式系统相关的广泛主题,包括网络、容错性、一致性模型、分布式算法、可扩展性等等。它旨在以清晰易懂的方式解释复杂的概念,适合初学者和有经验的分布式系统从业者阅读。

在整本书中,作者提供了各种实际案例和案例研究,以说明分布式系统的实际应用和实践方面。它还强调了构建分布式系统涉及的权衡和设计考虑,帮助读者全面理解这个主题。

《分布式系统:为了乐趣和利益》作为开源资源,可以免费在线获取,非常适合任何对学习分布式系统感兴趣的人。

原文链接:Distributed systems: for fun and profit

介绍

我想要一本能够汇集许多最新分布式系统(例如 Amazon 的 Dynamo、Google 的 BigTable 和 MapReduce、Apache 的 Hadoop 等系统)背后的思想的文本。

在本文中,我试图提供更易于理解的分布式系统介绍。对我来说,这意味着两件事:介绍您需要的关键概念,以便您可以愉快地阅读更严肃的文本,并提供足够详细的叙述,以便您了解正在发生的事情的要点,而不会陷入困境关于细节。现在是 2013 年,您已经有了互联网,您可以有选择地阅读更多您认为最感兴趣的主题。

在我看来,分布式编程的大部分内容都是关于处理分布式的两个后果的影响:

  • 信息以光速传播
  • 独立的事物会独立失败

换句话说,分布式编程的核心是处理距离(废话!)并且拥有不止一件事(废话!)。这些约束定义了可能的系统设计空间,我希望读完本文后您将更好地了解距离、时间和一致性模型如何相互作用。

本文重点介绍理解数据中心商业系统所需的分布式编程和系统概念。试图涵盖一切将是疯狂的。您将学习许多关键协议和算法(例如,涵盖该学科中许多被引用次数最多的论文),包括一些尚未进入大学教科书的最终一致性的令人兴奋的新方法 - 例如 CRDT和 CALM 定理。

我希望你喜欢它!如果您想表达感谢,请在 Github(或 Twitter)上关注我。如果发现错误,请在 Github 上提交拉取请求


1. 基础知识

第一章通过介绍一些重要的术语和概念,从高层次上介绍了分布式系统。它涵盖了高级别目标,例如可扩展性、可用性、性能、延迟和容错;这些是如何难以实现的,以及抽象和模型以及分区和复制如何发挥作用。

2. 抽象层次的上下

第二章更深入地探讨抽象和不可能性的结果。它以尼采的名言开始,然后介绍系统模型以及典型系统模型中所做的许多假设。然后讨论了 CAP 定理并总结了 FLP 不可能性结果。然后转向 CAP 定理的含义,其中之一是人们应该探索其他一致性模型。然后讨论了许多一致性模型。

3. 时间及顺序

理解分布式系统的一个重要部分是理解时间和顺序。如果我们无法理解和建模时间,我们的系统就会失败。第三章讨论时间和顺序、时钟以及时间、顺序和时钟的各种用途(例如矢量时钟和故障检测器)。

4. 复制:防止发散

第四章介绍了复制问题以及执行该问题的两种基本方法。事实证明,大多数相关特征都可以通过这个简单的表征来讨论。然后,从最低容错(2PC)到Paxos讨论了维持单副本一致性的复制方法。

5. 复制:接受分歧

第五章讨论了具有弱一致性保证的复制。它引入了一个基本的协调场景,其中分区副本尝试达成一致。然后,它讨论了 Amazon 的 Dynamo 作为具有弱一致性保证的系统设计的示例。最后,讨论了无序编程的两个观点:CRDT 和 CALM 定理。

Appendix 附录

附录包含进一步阅读的建议。