3

我工作的一個項目來管理的文件(如:創建,讀取,維護不同版本等...),我的計劃是使用以下AWS架構。如何解決最終一致性問題在AWS上

enter image description here

在創建文件/更新它將被保存在通過API網關代理S3版本啓用S3桶。 S3 put事件將觸發一個lambda獲取最新版本和所有版本ID並將其保存到DynamoDB。一旦將其保存在DynamoDB表中,它將通過DynamoDB流在Elasticsearch中索引。

我的計劃是對所有搜索查詢使用Elasticsearch。我將從DynamoDB中加載最新的文檔。由於每個記錄都有S3版本ID,我也可以從S3查詢舊版本。由於我的架構依賴於最終的一致性(即S3到DynamoDB和DynamoDB到彈性搜索),我擔心在創建文檔後查詢Elasticsearch或查詢DynamoDB時,我不會獲取最新的文檔數據。

任何改進建議將不勝感激。

謝謝!

回答

3

如您所說,您的應用程序體系結構有多個使用最終一致性的點。

如果您的應用程序的業務案例絕對需要在查詢數據時,你得到的絕對是最新版本,那麼你的架構選擇是不好的,你應該,例如,可以考慮使用RDS持久性來代替。

如果沒有,那麼你只設計您的系統保持其餘記住,獲取已完成PUT不保證查詢立即返回數據。指導如何做到這一點,取決於你的應用程序,不可能通用化。

1

由於您使用dynamodb流,你dynamodb插入將達到您的彈性搜索服務,而是延遲。如果寫入失敗,則由客戶端發出重試。 此外,您還必須記住觸發dynamodb流的時間以及彈性搜索索引所需的時間(加上s3事件)。

所以你的問題與需要達到彈性搜索服務器的時間做更多。

如果你想描繪的當前狀態(因爲這是你最終會與問題),而不需要更改的工具的任何延誤更多的東西是一致的。