共用方式為


服務匯流排和可靠性

完全受控的企業訊息代理程式,具有在 Azure 服務匯流排中使用的訊息佇列和發佈/訂閱主題。 此服務可將訊息儲存在「訊息代理程式」(例如,佇列) 中,直到取用方準備接收這些訊息為止。

好處包括:

  • 在競爭的背景工作角色之間進行負載平衡。
  • 跨服務和應用程式界限安全地路由和傳輸資料與控制。
  • 協調需要高度可靠性的交易式工作。

如需使用服務匯流排的詳細資訊,請參閱 Azure 服務匯流排傳訊。 了解如何設定傳訊功能,以連接橫跨內部部署和雲端環境的應用程式和服務。

若要瞭解服務匯流排如何提供可靠的工作負載,請參考下列主題:

下列各節分別適用於 Azure 服務匯流排和可靠性:

  • 設計考量
  • 設定檢查清單
  • 建議設定選項
  • 來源成品

設計考量

使用 Azure 服務匯流排執行時間 SLA 來最大化可靠性。 適當設定的應用程式可以傳送或接收訊息,或對已部署的佇列或主題進行其他作業。 如需詳細資訊,請參閱服務匯流排 SLA

其他設計考量包括:

除了服務匯流排進階版和標準傳訊層的文件之外,下列功能只適用於進階版庫存單位 (SKU):

使用異地災害復原和可用性區域部署服務匯流排時,服務層級作業 (SLO) 會大幅增加,但不會變更執行時間 SLA。

檢查清單

您是否已在考慮可靠性的情況下設定 Azure 服務匯流排?

  • 評估Azure 服務匯流排的進階層優點。
  • 確定已正確處理服務匯流排傳訊例外狀況
  • 使用進階訊息佇列通訊協定 (AMQP) 連接至服務匯流排,並盡可能使用服務端點或私人端點。
  • 檢閱使用服務匯流排傳訊的效能改進最佳做法
  • 在傳送者和接收者端上執行異地複寫,以防止中斷和災難。
  • 設定異地災害。
  • 如果您需要具有佇列和主題的任務關鍵傳訊,請使用異地災害復原來建議服務匯流排進階版。
  • 在服務匯流排命名空間中設定區域備援 (僅適用於進階版層)。
  • 針對服務匯流排命名空間執行高可用性。
  • 確定相關訊息以保證的順序傳遞。
  • 透過 JMS API 來評估不同的 Java 傳訊服務 (JMS) 功能。
  • 使用 .NET Nuget 套件與服務匯流排傳訊實體進行通訊。
  • 在傳送或接收訊息時,執行暫時性錯誤處理的復原能力。
  • 實作傳訊單位的自動調整。

組態建議

設定 Azure 服務匯流排時,請考慮下列建議以達成可靠性最佳化:

建議 Description
評估Azure 服務匯流排的進階層優點。 請考慮遷移至服務匯流排的進階版層,以利用平台支援的中斷和嚴重損壞狀況保護。
使用 AMQP 通訊協定連接至服務匯流排,並盡可能使用服務端點或私人端點。 此建議會將流量保留在 Azure 骨幹上。 注意:Microsoft.Azure.ServiceBusWindows.Azure.ServiceBus 命名空間的預設連線通訊協定為 AMQP
在傳送者和接收者端上執行異地複寫,以防止中斷和災難。 標準層僅支援傳送者和接收器端異地備援的執行。 Azure 區域中的中斷或災害可能會導致解決方案停機。
設定異地災害。 - 主動/主動
- 主動/被動
- 配對命名空間 (主動/被動)
- 請注意:次要地區最好是 Azure 配對區域
如果您需要具有佇列和主題的任務關鍵傳訊,請使用異地災害復原來建議服務匯流排進階版。 選擇模式取決於商務需求,以及復原時間目標 (RTO)。
在服務匯流排命名空間中設定區域備援 (僅適用於進階版層)。 區域備援包含三個傳訊存放區複本。 系統會將一個區域配置為主要傳訊存放區,並將其他區域配置為次要。 如果主要區域變得無法使用,次要區域就會升級為主要區域,而不會有可感知的停機時間。 可用性區域可在 Azure 區域的子集中使用,並定期新增區域。
針對服務匯流排命名空間執行高可用性。 進階版層支援命名空間層級的異地災害復原和複寫。 在此層級中,進階版層會使用主要和次要災害復原命名空間,為中繼資料災害復原提供高可用性。
確定相關訊息以保證的順序傳遞。 請注意,必須在每個訊息上設定分割索引鍵、工作階段識別碼或訊息識別碼,以確保相關的訊息會傳送至傳訊實體中的相同分割。
透過 JMS API 評估不同的 JMS 功能。 透過 JMS 2.0 API (及其軟體開發套件 (SDK)) 所提供的功能,與透過原生 SDK 提供的功能不同。 例如,服務匯流排工作階段無法在 JMS 中使用。
在傳送或接收訊息時,執行暫時性錯誤處理的復原能力。 針對傳送和接收作業,請務必執行適當的暫時性錯誤處理和錯誤處理,以維護輸送量並防止訊息遺失。
作傳訊單位的自動調整,以確保您有足夠的資源可供工作負載使用。

來源成品

  • 若要識別未使用私人端點的進階版服務匯流排執行個體,請使用下列查詢:

    Resources
    | where
      type == 'microsoft.servicebus/namespaces'
    | where
      sku.tier == 'Premium'
      and isempty(properties.privateEndpointConnections)
    
  • 若要識別未使用進階版層的服務匯流排執行個體,請使用下列查詢:

    Resources
    | where
      type == 'microsoft.servicebus/namespaces'
    | where
      sku.tier != 'Premium'
    
  • 若要識別不是區域備援的進階版服務匯流排執行個體,請使用下列查詢:

    Resources
    | where
      type == 'microsoft.servicebus/namespaces'
    | where
      sku.tier == 'Premium'
      and properties.zoneRedundant == 'false'
    

後續步驟