我需要关于如何确保我的s3存储桶中的数据一致性的build议/想法。 我有2-3个用户从s3推送和阅读资源。 正如人们可以很容易地看到这导致数据不一致(用户A正在从S3下载该资源,而用户B仍在写入)。
我们正在同步s3的saltstack代码。 我们在每个环境(prod,staging)中设置一个存储桶并使用AWS IAMangular色来控制访问。 当我试图从s3获取数据,而其他开发人员将代码推送到该存储桶时,会发生问题,最终导致下载的资源处于不一致的状态。
如果你们能分享你们在处理这类问题上的想法,想法和经验,我将不胜感激。
谢谢
这就是为什么你有一个生产和分期环境。 暂存环境应该是“免费的”,然后你的生产环境是当你的代码是好的,漂亮的。
如果你想允许更多的粒度,你应该考虑你的SaltStack代码/ yaml的源代码控制。 (git,mercurial等)每个用户都可以拥有他/她自己的分支,然后当推动推动时,你必须将所有东西合并成一个“分段”分支,然后最终部署到“生产”
您看到的S3行为是“最终一致性”的默认行为。基本上,您将获得上次更新文件的副本,直到“其他用户”终于推迟了他/她的更改,才会得到任何新的内容。
这是文档在AWS网站上关于S3数据一致性的说明:
问:Amazon S3使用什么数据一致性模型? 美国西部(俄勒冈州),美国西部(北加利福尼亚),欧盟(爱尔兰),亚太地区(新加坡),亚太地区(东京),亚太地区(悉尼)和南美洲(圣保罗)地区的亚马逊S3桶提供读取新的对象PUTS的写后一致性和覆盖PUTS和DELETES的最终一致性。 美国标准地区的Amazon S3存储桶提供最终的一致性。
你可以在这里阅读“最终一致性”