MIT分布式课程

为什么需要分布式

  • 通过复制(replication)实现容错
  • CPUs/mem/disk/net的水平扩容

分布式的难点

  • 复杂。多个并发部分
  • 部分失败问题
  • 难以实现的性能潜力

分布式领域有个著名的CAP定律

  • Consistency:一致性,需要处理部分失败的问题。比如关系型数据库的ACID。
  • Availability:可用性,避免单点。
  • Partition tolerance:分区容忍性,即扩展性,按需扩展。

有个说法是三者最多只能取其二。主要的矛盾点在于一致性和扩展性,因为实现按需扩展,必定会存在不一致的情况。因此分布式系统往往都会是CA或者是AP。最典型的的就是传统关系型数据库(CA)和NoSQL(AP)。

分布式系统往往会有以下几个方面:

  • 存储
  • 通信
  • 计算

MapReducer是一个分布式计算的编程模型

  • 计算过程分成map和reduce。Map函数不需要相互等待或者共享数据,这对并行非常友好。
  • map不保持状态,部分map失败了,重跑可以得到一样的结果。
  • map 的输入来自本地磁盘,而不是网络,中间结果也是保存在本地磁盘,而且只会网络传输一次(reduce),这点提升网络性能。

你可能感兴趣的:(MIT分布式课程)