Amazon-Web-Services

不錯過任何 HTTP 文章

  • October 27, 2014

我有一個 web 服務,它有幾個“機器”客戶端連接到它,它們不時使用 HTTP 發布數據。該服務的性質是我不能允許該服務失去單個傳入請求。但是,我確實遇到過,有時我會從數據庫後端或類似情況中收到錯誤,從而導致錯誤並且文章失去。(但是響應並不那麼重要)。

是否有關於如何處理此類錯誤的最佳實踐文件/架構描述。我正在考慮將傳入請求排隊並稍後嘗試,或者將其轉發到網路農場中的另一個網路伺服器。

我目前在 AWS 中執行 RDS/MySQL 數據庫後端到 IIS7.5 Web 應用程序。一切負載平衡並在多可用模式下執行。我的想法是將任何麻煩的請求放入 SQS 並定期處理該隊列,但我想在這個領域已經有很多想法,如果我自己滾動它可能會遇到一些陷阱。

首先,如果您絕對無法處理哪怕是少量的停機時間(例如發生故障轉移時),那麼您應該在客戶端應用程序中實現重試邏輯。

如果對這些請求的響應不是時間敏感的(例如,它是一個日誌,並且只要記錄了日誌就不會立即傳遞它並不重要),那麼我肯定會考慮使用基於隊列的架構。

SQS是 AWS 上隊列的明顯選擇,但請記住:

  • 雖然它是分佈式且高度可用的,但單個節點確實會不時出現故障。如果您碰巧獲得了一個無效的 SQS 節點,您仍然需要在客戶端中使用重試邏輯。
  • SQS 僅受贈者“至少一次”傳遞,因此您可能會多次收到消息。以我的經驗,這種情況很少見,並且可能最常發生在節點發生故障時。

還要確保您的基礎設施跨可用區複製,最好是跨區域複製。例如,當送出到主要區域失敗時,您的客戶端可以在另一個區域嘗試 SQS。

引用自:https://serverfault.com/questions/639786