在Amazon S3中删除尚未传播的对象时会发生什么?

时间:2011-09-10 15:29:19

标签: amazon-s3 eventual-consistency

考虑一个只有最终一致性的无版本桶。

假设我刚刚上传了一个对象,现在我将其删除。删除请求将转到对象尚未传播到的服务器。

现在,在我看来,只有三件事情可以发生:

  1. 服务器会记住删除操作,因此一旦到达此服务器就会删除该对象。

  2. 服务器回复“404 Not found”,对象继续存在。

  3. 服务器回复“201 No data”,忘记删除操作,对象继续存在。

  4. 答案1 意味着每个S3服务器必须记住它收到的每个删除请求,以防它后来从另一个服务器收到相应的对象。重置此内存的唯一方法是整个S3集群的某种全局原子同步(因此服务器可以确定没有针对它想要忘记的删除的未完成更新),我认为这是不太可能的。但是,如果对象仍然显示出来,那么记忆删除的定期超时会破坏最终的一致性保证。

    另一方面,

    答案2 暗示如果

    1. 我将对象上传到服务器A
    2. 我将对象的新版本上传到服务器B
    3. 我删除了服务器B上的对象
    4. 现在只有服务器B从服务器A听到有关上传的信息
    5. ..所以我最终得到了一个过时的对象版本,这打破了最终的一致性保证。

      答案3 也意味着最终的一致性保证被破坏,因为在发出删除请求后该对象仍然存在。

      所以基本上所有三个答案似乎都不太可能。我错过了什么吗?

0 个答案:

没有答案