0

阅读文章The Google File System后,我仍然对以下几点感到困惑:

  1. '追加操作'与'写操作'有什么优势?文章强调使用追加操作而不是写操作,我想知道为什么。追加比写快?

  2. 为了保持一个chunk的redundancy之间的一致性,gfs使用lease让一个chunkserver作为primary,并且让primary决定操作顺序来达到一致性,我的问题是如果重试之后update操作还是不能成功,redundancys会处于不一致的状态。那么当不同的客户端来读取更新失败的相同偏移量的同一个chunk时,他们可能会读取不同的内容。gfs是如何处理这种问题的。

  3. 如果追加操作发生错误,主chunkserver会选择一个新的偏移量来追加记录吗?记录是什么意思?当客户端读取文件时,它如何处理文件中的一些填充或重复记录?

4

1 回答 1

0

你的所有问题都直接在论文中得到解决,所以你应该更仔细地再读一遍。但我将对问题的每个部分给出简短的回答,以便为您提供一个条目:

  1. 这在启用并发写入的同时保持了一致性。如果修改现有数据,对现有数据的并发写入会破坏一致性。如果你只做追加,你可以随意重新排序它们,保持 GFS 定义的一致性模型。

  2. 作为一致性模型的一部分,它不处理这个问题。客户必须处理它。

  3. 我不明白这部分问题。

问候, 克里斯蒂安

于 2013-03-27T17:15:40.170 回答