Mit 6.824笔记(持续更新,欢迎指正)

Introduction

1.什么是分布式系统?

  • 核心:通过网络使一群计算机通过相互通信来完成一些连贯的任务。
  • 例子:存储为大网站或者大数据计算(MapReduce)以及点对点文件共享等等
  • 原因:许多关键的基础设施是分布式

2.为什么人们要构建分布式系统?(以此获得更高的性能)

  • 通过并行增加容量(Parallelism)
  • 通过复制来容忍错误(fault tolerance)
  • 使计算物理上接近外部实体(Physical)
  • 通过隔离实现安全(security / isolated)
    困难:
  • 并发编程和复杂的交互带来的各种问题(concurrency)
  • 故障模式、局部故障(partial failure)
  • 难以实现的性能潜力(performance)

3.实验

  • 实验1:MapReduce
  • 实验2:使用Raft进行容错复制
  • 实验3:容错键/值存储(K/V server)
  • 实验4:分片键/值存储(Shared K/V service)

4.这是一门关于应用程序基础设施的课程。(Infrastructure)

  • 存储(Storage)
  • 通信(Communication)
  • 计算(Computation)
    All,最大的目标是:构建一个接口,隐藏分布复杂性的抽象。(abstractions)

5.主题(考虑抽象)
(1)实现(implementation)

  • RPC、线程(threads)、并发控制(concurrency CH.)。

(2)性能(performance)

  • 目标:用扩展加速(Scalability)即(Nx服务器-> Nx总吞吐量通过并行CPU、磁盘、网络)
  • 处理更多的负载只需要购买更多的计算机

在这里插入图片描述

(3)容错(fault tolerance)

  • 成千上万台电脑,发生故障的概率很大。----> 掩饰故障的能力
  • 可用性(Availability):当遇上故障时系统会继续运行并且提供完好的服务。
  • 可恢复性(Recoverability):出现故障等待某人修复然后运行(故障恢复之前,不工作)
  • 工具(NV Storage):
  • 闪存、SSD等
  • 复制(Replication):一致性问题

(4)一致性(consistency)

  • Put(K,V)
  • Get(K) —> V

在这里插入图片描述

  • 强一致性:保证获取到的都是最新值。(代价高)
  • 弱一致性:无法做出任何保证。

6.案例研究:MapReduce

  • 核心思想:程序员只需要编写自己的应用程序,不需要考虑分布式的内容。

在这里插入图片描述
(1)单词计数例子:

  • Map(K,V):
  • K:文件名(file name)
  • V:将V拆分成单词,对于每个单词,emit(world,“1”)
  • Reduce(K,V):
  • emit(len(V))

(2)MapReduce实现细节见论文。

7.结论

- 有良好的可扩展性。
- 易于编程——隐藏故障和数据移动。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读