原文地址:http://book.mixu.net/distsys/
介绍
我需要一个文档介绍最近大公司分布式系统(如亚马逊的Dynamo,谷歌的Bigtable和MapReduce)背后的大多数概念和想法。
我写这篇文档的主要目的是以一种易于理解的方式来解释分布式系统的主要概念,以防止被这些概念背后的具体细节吓退。如果你想更深入的理解这些概念背后的细节,可自行百度。
在我看来分布式系统主要处理系统分布导致的两个方面的影响:
- 信息以光速传输
- 不相关的事情在隔离的情况下失败
用一句话来概述分布式系统的核心就是处理距离和处理多于一件事情。这两方面的约束定义了一系列设计规则。我希望通过这篇文档你对距离、时间以及一致性模型之间的相互作用关系有更好的理解。
1 .分布式系统基础
概要的介绍分布式系统重要的术语和概念。主要介绍分布式系统的目标(扩展/可用/性能/延长/容错)以及实现这些目标为什么比较困难。进一步引入抽象和模型以及分区和复制的设计规则。
2.提高和放低抽象层次
介绍系统模型以及对典型系统模型的很多假设条件,然后介绍CAP和FLP理论以及CAP理论的影响,接着介绍一致性模型, 这里会讨论很多一致性模型。
3.时间和时序
理解分布式系统很大一块是理解时间和时序。错误的理解时间和时序会导致错误的理解系统。这一章会讨论时间、时序和时钟已经他们的应用
4.复制:强一致性
主要讨论数据复制的问题已经结束数据复制的两种方式。根据容错能力的不同,从2PC到Paxos来保证数据的强一致性
5.复制:弱一致性
主要介绍如何保证弱一致性,以及介绍最终一致性。介绍亚马逊 Dynamo 系统如何保证弱一致性。最后,讨论乱序编程的两个方面:CRDTs and the CALM理论。