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),这点提升网络性能。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容