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

Amazon s3 在AmazonS3中删除尚未传播的对象时会发生什么?,amazon-s3,eventual-consistency,Amazon S3,Eventual Consistency,考虑一个只有最终一致性的未版本化存储桶 假设我刚刚上传了一个对象,现在我删除了它。删除请求转到对象尚未传播到的服务器 现在,在我看来,只有三件事可以发生: 服务器会记住删除操作,因此一旦对象到达该服务器,就会删除该对象 服务器回复为“404未找到”,并且该对象继续存在 服务器回复“201无数据”,忘记删除操作,对象继续存在 答案1意味着每个S3服务器必须记住它接收到的每个删除请求,以防以后从另一台服务器接收到相应对象的删除请求。重置此内存的唯一方法将是整个S3集群的某种全局原子同步(因此,服务器

考虑一个只有最终一致性的未版本化存储桶

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

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

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

  • 服务器回复为“404未找到”,并且该对象继续存在

  • 服务器回复“201无数据”,忘记删除操作,对象继续存在

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

    另一方面,答案2意味着如果

  • 我将一个对象上载到服务器A
  • 我将对象的新版本上载到服务器B
  • 我删除服务器B上的对象
  • 直到现在服务器B才从服务器A听到上传的消息
  • …所以我最终会得到一个过时的对象版本,这破坏了最终的一致性保证

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

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