想象一下将文件上传到Amazon S3,并且在成功时,文件(和元数据)的位置存储在ElasticSearch中的记录中。好的很好。
但是,如果其中一个请求失败,您如何确保数据一致性(ACID?)? 例如,如果ElasticSearch服务不可用
这会导致状态不一致。
所以问题是如何让这些实例保持同步?
想法是:
答案 0 :(得分:0)
在这种情况下,ACID是不可能的,因为您正在使用最终一致的系统。
您的第三个建议是最接近最佳做法。
此系统的参考体系结构是将对象写入AWS S3,然后将S3 Bucket通知用于AWS Lambda以执行对Elasticsearch的写入。如果在S3-> Lambda-> Elasticsearch的通知阶段写入失败,请使用死信SQS队列收集损坏的作业,然后使用CloudWatch Events-> Lambda定时刷新队列。