Concurrency Google文件系统一致性模型
我读过关于GFS及其一致性模型的书,但我没能理解其中的一些内容。 特别是,有人能为我提供一个具体的示例场景(或解释为什么它不能发生):Concurrency Google文件系统一致性模型,concurrency,filesystems,distributed-system,gfs,Concurrency,Filesystems,Distributed System,Gfs,我读过关于GFS及其一致性模型的书,但我没能理解其中的一些内容。 特别是,有人能为我提供一个具体的示例场景(或解释为什么它不能发生): 可能导致记录重复的并发记录追加 可能导致未定义区域的并发记录追加 可能导致未定义区域的并发写入(在单个块上) 我认为这与并发追加无关,但至少与系统的一次语义有关 故障是大型分布式系统的一个基本问题。出现故障时,发送方可能不知道网络另一端的计算机是否完全接收到其消息 在这种情况下,分布式系统保证消息最多传递一次或至少传递一次 在这种情况下,GFS似乎决定至少向存
- 可能导致记录重复的并发记录追加
- 可能导致未定义区域的并发记录追加
- 可能导致未定义区域的并发写入(在单个块上)
谢谢你的回答!因此,只有当主块服务器在写入数据并更新文件结尾后出现错误时,才会发生这种情况,对吗?嗨,Daniel,谢谢你的回答,它回答了我的大部分问题。不过还有一件事:我的主要困惑源于这样一个事实:客户端只与主副本通信,而正是这个副本等待其他副本的确认。因此,如果一个次要副本的追加失败,那么主要副本将知道发生了这种情况,并且没有理由增加指向文件结尾的指针;因此,新的附录应该在以后覆盖不一致的区域。我错过了什么?我想有可能按照你说的去做。但我认为GFS不会这么做。我想如果他们这么做了,他们会提到这件事的。我未受过教育的猜测是,这是为了增加并发附件的吞吐量。如果主记录希望在发生故障时能够向后移动指针,则在记录追加过程中,它将无法接受其他记录追加。如果即使对于失败的突变,它也增加了指针,那么它就可以立即接受其他附加项。如果有人能证实/纠正这一理论,那就太好了。一旦主服务器收到副本上的故障,它插入的下一条记录必然是同一条,对吗?正如上面所说,“客户端重试”该操作。那么其他的附加物怎么可能像你说的那样呢?为什么它们不可能呢?