Sim*_*one 6 filesystems concurrency distributed-system gfs
我正在阅读有关GFS及其一致性模型的内容,但我未能掌握其中的一些内容.特别是,有人可以为我提供一个特定的示例场景(或解释为什么它不会发生):
我引用了http://research.google.com/archive/gfs.html.查看表1,它是写入/附加的可能结果的摘要:

"如果任何副本上的记录追加失败,则客户端会重试该操作.因此,同一块的副本可能包含不同的数据,可能包括整个或部分相同记录的重复." 因此,副本上的任何失败(例如超时)都将导致至少在其他副本上出现重复记录.没有并发写入就会发生这种情况
导致重复记录的相同情况也会导致不一致(因此未定义)区域.如果副本未能确认突变,则可能未执行该突变.在这种情况下,当客户端重试附加时,此副本将必须添加填充来代替丢失的数据,以便可以在正确的偏移处写入记录.因此,一个副本将具有填充,而其他副本将具有此区域中先前写入的记录.
写入失败也会导致不一致(因此未定义)的区域.更有趣的是,成功的并发写入可能会导致一致但未定义的区域."如果应用程序的写入很大或跨越块边界,GFS客户端代码会将其分解为多个写入操作.它们可能与来自其他客户端的并发操作交错并覆盖.因此,共享文件区域可能最终包含来自不同客户端的片段,尽管副本将是相同的,因为各个操作在所有副本上以相同的顺序成功完成.这使文件区域保持一致但未定义的状态[...].
| 归档时间: |
|
| 查看次数: |
2571 次 |
| 最近记录: |