共用方式為


服務總線和可靠性

通過 Azure 服務總線中的消息佇列和發佈-訂閱主題,全面管理企業消息代理。 此服務會將訊息儲存在 訊息代理程式 中(例如,佇列),直到取用者準備好接收訊息為止。

優點包括:

  • 跨競爭工作者的負載平衡。
  • 跨服務和應用程式界限安全地路由和傳輸數據和控制。
  • 協調需要高度可靠性的交易工作。

如需使用服務總線的詳細資訊,請參閱 Azure 服務總線傳訊。 瞭解如何設定傳訊,以將應用程式和服務連線到內部部署和雲端環境。

若要瞭解服務總線如何助於穩定的工作負載,請參考下列主題:

注意

先前需要將 屬性 zoneRedundant 設定為 true,以啟用可用性區域,不過此行為預設已變更為啟用可用性區域。 現有的命名空間會盡可能移轉至可用性區域,且屬性 zoneRedundant 已被取代。 即使已啟用可用性區域,屬性 zoneRedundant 仍會顯示為 false

下列各節專屬於 Azure 服務總線和可靠性:

  • 設計考慮
  • 設定檢查清單
  • 建議的組態選項
  • 來源工件

設計考慮

使用 Azure 服務總線運行時間 SLA 將可靠性最大化。 正確設定的應用程式可以傳送或接收訊息,或在已部署的佇列或主題上執行其他作業。 如需詳細資訊,請參閱 服務總線 SLA

其他設計考慮包括:

除了關於 服務總線高級和標準消息層的文件,下列功能僅適用於高級庫存單位(SKU):

部署具有異地災害復原功能且位於可用性區域的服務匯流排時,服務等級操作(SLO)會大幅提升,但不會改變可用時間SLA。

清單

您是否已在設定 Azure 服務總線時考量到可靠性?

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

設定建議

請考慮下列建議,以在設定 Azure 服務總線時將可靠性優化:

建議 描述
評估 Azure 服務總線的進階層優點。 請考慮移轉至服務總線的進階層,以利用平台支援的中斷和災害保護。
使用AMQP通訊協定連線到服務總線,並盡可能使用服務端點或私人端點。 此建議會保留 Azure 骨幹上的流量。 注意:Microsoft.Azure.ServiceBusWindows.Azure.ServiceBus 命名空間的預設連線通訊協定是 AMQP
在傳送者和接收端實作異地複寫,以防止中斷和災害。 標準層僅支持傳送者和接收端異地備援的實作。 Azure 區域中的中斷或災害可能會導致解決方案停機。
設定異地災害。 - 雙活
- 主動/被動
- 配對命名空間 (主動/被動)
- Geo-Replication (具有完整數據複製的主動/被動)
- 注意:次要區域最好是 Azure 的配對區域
如果您需要具有佇列和主題的關鍵性任務傳訊,建議使用具有地理災難復原功能的 Service Bus Premium。 選擇模式取決於業務需求和復原時間目標 (RTO)。
實作服務總線命名空間的高可用性。 進階層支援命名空間層級的異地災害復原和複寫。 在此層級,進階層會使用主要和次要災害復原命名空間,為元數據災害復原提供高可用性。
請確定相關訊息會依保證的順序傳遞。 請注意,在每個訊息上設定分割區索引鍵、會話標識碼或訊息標識符的需求,以確保相關的訊息傳送至訊息實體中的相同分割區。
透過 JMS API 評估不同的 JMS 功能。 透過 JMS 2.0 API 提供的功能(及其軟體開發工具包(SDK)與透過原生 SDK 取得的功能不同。 例如,JMS 中無法使用服務總線會話。
實作傳送或接收訊息時暫時性錯誤處理的復原能力。 務必針對傳送和接收作業實作適當的暫時性故障處理和錯誤處理,以維持吞吐量並防止訊息遺失。
實作 自動調整傳訊單位,以確保您有足夠的資源可供工作負載使用。

來源工件

  • 若要識別不使用私人端點的進階服務總線實例,請使用下列查詢:

    Resources
    | where
      type == 'microsoft.servicebus/namespaces'
    | where
      sku.tier == 'Premium'
      and isempty(properties.privateEndpointConnections)
    
  • 若要識別不在高級層的 Service Bus 實例,請使用下列查詢:

    Resources
    | where
      type == 'microsoft.servicebus/namespaces'
    | where
      sku.tier != 'Premium'
    

下一步