選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

REL04-BP02 實作鬆散耦合相依性 - 可靠性支柱

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

REL04-BP02 實作鬆散耦合相依性

佇列系統、串流系統、工作流程和負載平衡器之間具有鬆散耦合的相依性。鬆耦合有助於將某個元件的行為與依賴它的其他元件隔離,進而提高彈性和敏捷性。

解除相依性 (例如佇列系統、串流系統和工作流程) 有助於將變更或失敗對系統造成的影響降到最低。這種分離使組件的行為不會影響依賴它的其他組件,從而提高了彈性和敏捷性。

在緊耦合的系統中,對某個元件進行變更時,可能必須變更其他依賴此元件的元件,從而導致所有元件的效能降低。耦合會破壞此相依性,因此相依元件只需要知道受版本控制的和已發布的界面。在相依性之間實作鬆耦合,可避免一個元件中的故障影響另一個元件。

鬆耦合可讓您修改程式碼或新增功能至某個元件,同時將依賴該元件的其他元件的風險降至最低。其還能讓您在元件層級提供細微的恢復能力,您可以橫向擴充,甚至是變更相依性的基礎實作。

若要透過鬆耦合進一步改善彈性,請盡可能讓元件採用非同步互動。此模型適用於不需要立即回應的任何互動,以及確認已註冊請求便以足夠的狀況。它涉及產生事件的一個元件和取用事件的另一個元件。這兩個元件不會透過直接 point-to-point互動整合,而是通常透過中繼耐用儲存層整合,例如 Amazon SQS佇列、串流資料平台,例如 Amazon Kinesis 或 AWS Step Functions。

圖表顯示佇列系統和負載平衡器之間具有鬆散耦合的相依性

圖 4:佇列系統和負載平衡器之間具有鬆散耦合的相依性

Amazon SQS佇列和 AWS Step Functions 只是新增中繼層以進行鬆散耦合的兩種方式。事件驅動的架構也可以 AWS 雲端 使用 Amazon 建置在 中 EventBridge,這可以從用戶端 (事件生產者) 仰賴的服務 (事件消費者) 中抽象用戶端 (事件生產者)。當您需要高輸送量、推送型訊息時, many-to-manyAmazon Simple Notification Service (Amazon SNS) 是有效的解決方案。使用 Amazon SNS主題,您的發佈者系統可以將訊息散播到大量訂閱者端點以進行平行處理。

雖然佇列提供多項優勢,但在大多數硬式即時系統中,超過閾值時間 (通常為秒) 的請求應視為過時 (用戶端已放棄且不再等待回應) 且未處理。這樣才可以處理較新的 (且可能仍有效的) 請求。

預期成果:實作鬆耦合的相依性可將元件層級故障的影響降到最低,這有助於診斷和解決問題。它還能簡化開發週期,讓團隊在模組化層級實作變更,而不會影響依賴此元件之其他元件的效能。這種方法可讓您根據資源需求,以及對成本效益有所貢獻之元件的使用情況,在元件層級進行橫向擴充。

常見的反模式:

  • 部署整合型工作負載。

  • 直接在工作負載層APIs之間調用,而沒有容錯移轉或非同步處理請求的能力。

  • 使用共用資料的緊耦合。鬆耦合系統應避免透過共用資料庫或其他形式的緊耦合資料儲存共用資料,這可能會重新引入緊耦合並阻礙可擴展性。

  • 忽略反壓。當元件無法以相同的速率處理傳入的資料時,工作負載應該要有能力減緩或停止傳入的資料。

建立此最佳實務的優勢:鬆耦合有助於將某個元件的行為與依賴它的其他元件隔離,進而提高彈性和敏捷性。避免一個元件中的失敗影響其他元件。

未建立此最佳實務時的曝險等級:

實作指引

實作鬆耦合相依性。有各種解決方案可讓您建置鬆耦合的應用程式。其中包括實作完全受管佇列、自動化工作流程、對事件做出反應APIs等服務,這些服務可協助隔離元件與其他元件的行為,進而提高復原能力和靈活性。

實作步驟

資源

相關文件:

相關影片:

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。