我需要关于如何确保s3桶中数据一致性的建议/想法。我有2-3个用户推送和阅读来自s3的资源。可以很容易地看到,这会导致数据不一致(用户A正在从S3下载该资源,而用户B仍在写入该资源)。
我们正在同步来自s3的盐类堆栈代码。我们每个环境都有一个桶设置(prod,暂存),并且使用AWS角色来控制访问。当我试图从s3获取数据时出现了问题,而另一个开发人员正在将代码推到这个桶中,最终下载的资源处于不一致的状态。
如果你们能分享你们在处理这类问题时的想法、想法和经验,我将非常感激。
谢谢
发布于 2014-02-06 22:41:55
这就是为什么您有一个生产和分期环境。暂存环境应该是“人人免费”,然后您的生产环境是在您的代码都很好的时候使用的。
如果您希望允许更多的粒度,则应该考虑SaltStack代码/yaml的源代码控制。(git,mercurial,等等)每个用户都可以拥有自己的分支,然后当推到紧要关头时,您必须将所有东西合并到一个“阶段”分支中,然后最终部署到“生产”中。
您在S3中看到的行为是“最终一致性”的默认行为--基本上,您将得到上一次更新文件的副本,并且在‘其他用户’最终推动他/她的更改之前不会得到任何新的信息。
这是AWS站点上关于S3数据一致性的文档:
问:亚马逊S3采用了什么数据一致性模型?美国西部(俄勒冈州)、美国西部(北加利福尼亚)、欧盟(爱尔兰)、亚太地区(新加坡)、亚太地区(东京)、亚太地区(悉尼)和南美洲(圣保罗)地区的亚马逊S3水桶为新对象的投递提供了读写一致性,并最终实现了覆盖放置和删除的一致性。美国标准地区的亚马逊S3水桶提供了最终的一致性。
你可以在这里读到关于“最终一致性”的文章:
https://serverfault.com/questions/571133
复制相似问题