1

我遇到了這個問題,到目前爲止似乎唯一的解決方案是更強的一致性模型。該服務是Amazon S3,它提供了最終的一致性。我們使用它作爲blob存儲後端。最終一致性和消息傳遞

問題是,我們將消息傳遞模式引入了我們的應用程序,我們喜歡它。毫無疑問,這是好處。但是,它似乎要求更強的一致性。情形:

  1. 子系統從用戶獲取數據
  2. 數據被保存到S3發送
  3. 消息由另一子系統接收
  4. 消息
  5. 數據從S3
  6. 讀...蟋蟀。這是舊數據嗎?有時候是這樣。

所以。我們試圖明顯地發送消息中的數據,以避免S3讀取不一致。但是這是非常糟糕的事情,消息會變得不必要的巨大,當接收者太忙或者宕機,並且在已經有新數據可用的情況下接收到消息時,它會失敗。

有沒有解決這個問題的方法,還是我們真的需要轉儲S3來獲得像RDBMS或MongoDB這樣更加一致的後端?

回答

0

如果你的場景允許你的數據總是被寫在S3下的一個新鍵上(通過總是創建新的對象),那麼你可以依靠亞馬遜的寫後讀一致性。

這裏是亞馬遜的描述,描述這種一致性模型:

在美國西部(北加州),歐盟(愛爾蘭), 亞太地區(新加坡)和亞太地區的Amazon S3存儲桶(東京)區域爲新對象的PUTS提供 後讀寫一致性,併爲覆蓋PUTS和DELETES提供最終的 一致性。美國標準地區 中的Amazon S3存儲桶提供最終一致性。

+0

我們決定將blob存儲轉換爲MongoDB,它提供了很強的一致性。 – skrat