https://pdos.csail.mit.edu/6.824/

https://www.bilibili.com/video/BV1x7411M7Sf?p=5 (Simviso翻译字幕)

Robert Morrison

RPC, 多线程

I/O concurrency, 同一时间有多个IO任务

Parallelism

Convenience
探活 心跳 重复地执行一些周期性任务

 学生问, 这种开销是否值得吗? 

爬虫的案例讲解,使用Go

waitGroup ( CountdownLanch )

defer 关键字

GFS, Google File System

分布式系统, 设计初衷是为了性能.

PERFORMANCE 驱动. -->

    分治思想 -> SHARDING 
            故障是必然的,出错怎么办 -> FT  (Fault  Tolerance )
                    FT -> REPLICA     
                         副本, 怎么保障一致性? -->   CONSISTENCY
                               保障一致性,就降低性能 ->  LOW  PERFORMANCE 

STRONG CONSISTENCY (强一致性)

先引入一个单节点服务器, 存储了一个KV Hash-Table

副本设计,
再引入第二台节点, 希望是和第一台节点的数据保持一致.

这是一个bad design 没有维护客户端更新数据的顺序.

GFS是怎么解决的?

Distribute, Sharding, FT 在当时的背景下 这些观点并非超前.
但提出了比较新颖的观点, 即不保证永久都返回正确的数据

Google拥有庞大的数据: 网页内容,视频,索引, 所以非常有动机去尝试解决海量数据中的存储与检索问题.

Global
Sharding, 将大型文件分拆成若干份较小的文件块,放在不同的服务器中;
Automatic recovering 自动的自自治愈能力
Single data center
Internal use

Big Sequential access, not random

Master (主节点存储的元数据有什么)

  • fileName -> array of chunk handlers
  • handle -> list of chunkservers version lease expiration 过期时间

Read

Write

Primary-Backup, Replica

副本解决什么问题, 单点故障

State Transfer Machine
状态转移, 只让备机接收外部的输入,执行既定动作, 备机不维护状态.

Thread, Raft

Fault Tolerance

Zookeeper