MIT6.824
  • 简介
  • Lecture 01 - Introduction
    • 1.1 分布式系统的驱动力和挑战(Drivens and Challenges)
    • 1.2 课程结构(Course Structure)
    • 1.3 分布式系统的抽象和实现工具(Abstraction and Implementation)
    • 1.4 可扩展性(Scalability)
    • 1.5 可用性(Availability)
    • 1.6 一致性(Consistency)
    • 1.7 MapReduce基本工作方式
    • 1.8 Map函数和Reduce函数
  • Lecture 03 - GFS
    • 3.1分布式存储系统的难点(Why Hard)
    • 3.2 错误的设计(Bad Design)
    • 3.3 GFS的设计目标
    • 3.4 GFS Master 节点
    • 3.5 GFS读文件(Read File)
    • 3.6 GFS写文件(Write File)(1)
    • 3.7 GFS写文件(Write File)(2)
    • 3.8 GFS的一致性
  • Lecture 04 - VMware FT
    • 4.1 复制(Replication)
    • 4.2 状态转移和复制状态机(State Transfer and Replicated State Machine)
    • 4.3 VMware FT 工作原理
    • 4.4 非确定性事件(Non-Deterministic Events)
    • 4.5 输出控制(Output Rule)
    • 4.6 重复输出(Duplicated Output)
    • 4.7 Test-and-Set 服务
  • Lecture 06 - Raft1
    • 6.1 脑裂(Split Brain)
    • 6.2 过半票决(Majority Vote)
    • 6.3 Raft 初探
    • 6.4 Log 同步时序
    • 6.5 日志(Raft Log)
    • 6.6 应用层接口
    • 6.7 Leader选举(Leader Election)
    • 6.8 选举定时器(Election Timer)
    • 6.9 可能的异常情况
  • Lecture 07 - Raft2
    • 7.1 日志恢复(Log Backup)
    • 7.2 选举约束(Election Restriction)
    • 7.3 快速恢复(Fast Backup)
    • 7.4 持久化(Persistence)
    • 7.5 日志快照(Log Snapshot)
    • 7.6 线性一致(Linearizability)
  • Lecture 08 - Zookeeper
    • 8.1 线性一致(Linearizability)(1)
    • 8.2 线性一致(Linearizability)(2)
    • 8.3 线性一致(Linearizability)(3)
    • 8.4 Zookeeper
    • 8.5 一致保证(Consistency Guarantees)
    • 8.6 同步操作(sync)
    • 8.7 就绪文件(Ready file/znode)
  • Lecture 09 - More Replication, CRAQ
    • 9.1 Zookeeper API
    • 9.2 使用Zookeeper实现计数器
    • 9.3 使用Zookeeper实现非扩展锁
    • 9.4 使用Zookeeper实现可扩展锁
    • 9.5 链复制(Chain Replication)
    • 9.6 链复制的故障恢复(Fail Recover)
    • 9.7 链复制的配置管理器(Configuration Manager)
  • Lecture 10 - Cloud Replicated DB, Aurora
    • 10.1 Aurora 背景历史
    • 10.2 故障可恢复事务(Crash Recoverable Transaction)
    • 10.3 关系型数据库(Amazon RDS)
    • 10.4 Aurora 初探
    • 10.5 Aurora存储服务器的容错目标(Fault-Tolerant Goals)
    • 10.6 Quorum 复制机制(Quorum Replication)
    • 10.7 Aurora读写存储服务器
    • 10.8 数据分片(Protection Group)
    • 10.9 只读数据库(Read-only Database)
  • Lecture 11 - Cache Consistency: Frangipani
    • 11.1 Frangipani 初探
    • 11.2 Frangipani的挑战(Challenges)
    • 11.3 Frangipani的锁服务(Lock Server)
    • 11.4 缓存一致性(Cache Coherence)
    • 11.5 原子性(Atomicity)
    • 11.6 Frangipani Log
    • 11.7 故障恢复(Crash Recovery)
    • 11.8 Frangipani总结
  • Lecture 12 - Distributed Transaction
    • 12.1 分布式事务初探(Distributed Transaction)
    • 12.2 并发控制(Concurrency Control)
    • 12.3 两阶段提交(Two-Phase Commit)
    • 12.4 故障恢复(Crash Recovery)
    • 12.5 总结
由 GitBook 提供支持
在本页

这有帮助吗?

  1. Lecture 11 - Cache Consistency: Frangipani

11.8 Frangipani总结

前面我介绍了这些主要的内容:

  • Petal是什么

  • 缓存一致性

  • 分布式事务

  • 分布式故障恢复

论文还讨论了一下性能,但是过了20年之后的今天,很难理解这些性能数据。因为作者在一个与今天非常不同的硬件,非常不同的环境测试的性能。笼统来说,作者展示的性能数据表明,随着越来越多的Frangipani工作站加入到系统中,系统并没有明显变慢。即使新加入的工作站在频繁的执行文件系统操作,并不会影响现有的工作站。这样的话,系统可以提供合理的扩展性,因为它可以在不减慢现有工作站的前提下增加更多的工作站。

回过头来看,尽管Frangipani有大量有意思且值得记住的技术,但是它对于存储系统的演进并没有什么影响。部分原因是,Frangipani的目标环境是一个小的工作组,人们坐在桌子上的工作站前共享文件。这样的环境现在还存在与某些地方,但是却不是分布式存储的主要应用场景。真正的应用场景是一些大型的数据中心、大型网站、大数据运算,在这些场景中,文件系统的接口相比数据库接口来说,就不是那么有用了。比如,在大型网站的环境中,人们非常喜欢事务,但是人们在非常小的数据下才需要事务,这些小的数据也就是你会存储在数据库中的数据,而不是你会存储在文件系统中的数据。所以这里的一些技术,你可以在一些现代的系统中看到类似的设计,但是通常出现在数据库中。

另一个大的场景是为大数据运算存储大的文件,例如MapReduce。实际上GFS某种程度上看起来就像是一个文件系统,但是实际上是为了MapReduce设计的存储系统。但是不论对于GFS也好,还是大数据运算也好,Frangipani关注在工作站的本地缓存和缓存一致性,反而不是很有用。如果你读取10TB的数据,缓存基本上没什么用,并且会适得其反。所以,随着时间的推移,Frangipani在一些场合还是有用的,但是并不符合在设计新系统时候的需求。

上一页11.7 故障恢复(Crash Recovery)下一页Lecture 12 - Distributed Transaction

最后更新于4年前

这有帮助吗?