【发布时间】:2016-08-19 09:47:00
【问题描述】:
想象一个文件上传到 Amazon S3 并且成功后文件的位置(和元数据)存储在 ElasticSearch 的记录中。好的,没关系。
但是,如果其中一个请求失败,您如何确保数据一致性(ACID?)... 例如,如果 ElasticSearch 服务不可用
- 必须删除 S3 上的文件
- 但是如果 S3 上的删除失败怎么办
这会导致不一致的状态。
那么问题是如何让这些实例保持同步?
想法是:
- 如果存在不一致的状态并且用户请求 ElasticSearch 记录但没有找到任何内容,则删除 S3 中的记录。 (嗯)
- 批处理作业以搜索数据库中的不一致并删除它们。
- 在数据库中的事务中运行两个请求,如果一个失败 -> 回滚并稍后重试(队列、作业 = Overkill?)
【问题讨论】:
标签: amazon-web-services elasticsearch amazon-s3 acid data-consistency