今天读了几篇分布式相关的内容,记录一下。非经典论文,非系统化阅读,非严谨思考和总结。主要的着眼点在于分布式存储:好处是,跨越单台物理机器的计算和存储能力的限制,防止单点故障(single point of failure);常见方法是,做数据分区(data partition / sharding)以横向扩展,做数据复制(data replication)增加冗余度;难点是,如何在数据一致性(consistency)、系统可用性(availability)、分区容忍度(partition tolerance)之间折衷以得到平衡。
三个链接:
2. Google app engine 的 Ryan Barrett 在 2009 Google I/O 上的演讲《Transaction Across DataCenter》,上述酷壳文章的基本框架也来自这篇演讲。总结部分提到:没有银弹;提供允许折衷(tradeoff friendly)的基础设施,并将选择权交给用户。「提供选择权」的设计,可参考上述酷壳文章里,提到的 Amazon Dynamo NWR model (W+R > N) 和 vector clock 设计,进一步可阅读 Amazon Dynamo 团队的原始论文,博客里一句话很值得回味。
Dynamo is representative of a lot of the work that we are doing at Amazon; we continuously develop cutting edge technologies using recent research, and in many cases do the research ourselves. Much of the engineering work at Amazon, whether it is in infrastructure, distributed systems, workflow, rendering, search, digital, similarities, supply chain, shipping or any of the other systems, is equally highly advanced.
3. 《A plain english introduction to CAP Theorem》。非常棒的一篇文章,从两口子决定开办一家 Remembrance Inc. 做为切入点,先后介绍了什么是 consistency(两口子的记录簿需要在 data write 时同步)、availability(老婆有事无法接线时,老公得负责全部的接线工作,而且第二天老婆重新上班后,能够从老公那儿同步前一天未同步的数据,即保持数据上的 consistency)、partition tolerance(老婆今儿很生气,所以故意不跟老公同步数据,即,partition 之间的通信出了故障)。