服務匯流排和可靠性
完全受控的企業訊息代理程式,具有在 Azure 服務匯流排中使用的訊息佇列和發佈/訂閱主題。 此服務可將訊息儲存在「訊息代理程式」(例如,佇列) 中,直到取用方準備接收這些訊息為止。
好處包括:
- 在競爭的背景工作角色之間進行負載平衡。
- 跨服務和應用程式界限安全地路由和傳輸資料與控制。
- 協調需要高度可靠性的交易式工作。
如需使用服務匯流排的詳細資訊,請參閱 Azure 服務匯流排傳訊。 了解如何設定傳訊功能,以連接橫跨內部部署和雲端環境的應用程式和服務。
若要瞭解服務匯流排如何提供可靠的工作負載,請參考下列主題:
下列各節分別適用於 Azure 服務匯流排和可靠性:
- 設計考量
- 設定檢查清單
- 建議設定選項
- 來源成品
設計考量
使用 Azure 服務匯流排執行時間 SLA 來最大化可靠性。 適當設定的應用程式可以傳送或接收訊息,或對已部署的佇列或主題進行其他作業。 如需詳細資訊,請參閱服務匯流排 SLA。
其他設計考量包括:
除了服務匯流排進階版和標準傳訊層的文件之外,下列功能只適用於進階版庫存單位 (SKU):
- 專用資源。
- 虛擬網路整合:限制可連接到服務匯流排執行個體的網路。 需要在子網路上啟用服務端點。 在虛擬網路中執行時,不支援受信任的 Microsoft 服務 (例如,與事件方格的整合)。 如需詳細資訊,請參閱允許從特定虛擬網路存取 Azure 服務匯流排命名空間。
- 私人端點。
-
IP 篩選/防火牆:將連線限制為僅定義
IPv4
位址或IPv4
位址範圍。 - 可用性區域:可免費在單一區域中的可用性區域間散佈複本,而提供更高的可用性。
- 事件方格整合:可用的事件類型。
- 調整傳訊單位。
- 異地災害復原 (配對的命名空間)。
- CMK (客戶管理金鑰) :Azure 服務匯流排加密待用資料,並在存取時自動解密,但客戶也可以攜帶自己的客戶管理金鑰。
使用異地災害復原和可用性區域部署服務匯流排時,服務層級作業 (SLO) 會大幅增加,但不會變更執行時間 SLA。
檢查清單
您是否已在考慮可靠性的情況下設定 Azure 服務匯流排?
- 評估Azure 服務匯流排的進階層優點。
- 確定已正確處理服務匯流排傳訊例外狀況。
- 使用進階訊息佇列通訊協定 (AMQP) 連接至服務匯流排,並盡可能使用服務端點或私人端點。
- 檢閱使用服務匯流排傳訊的效能改進最佳做法。
- 在傳送者和接收者端上執行異地複寫,以防止中斷和災難。
- 設定異地災害。
- 如果您需要具有佇列和主題的任務關鍵傳訊,請使用異地災害復原來建議服務匯流排進階版。
- 在服務匯流排命名空間中設定區域備援 (僅適用於進階版層)。
- 針對服務匯流排命名空間執行高可用性。
- 確定相關訊息以保證的順序傳遞。
- 透過 JMS API 來評估不同的 Java 傳訊服務 (JMS) 功能。
- 使用 .NET Nuget 套件與服務匯流排傳訊實體進行通訊。
- 在傳送或接收訊息時,執行暫時性錯誤處理的復原能力。
- 實作傳訊單位的自動調整。
組態建議
設定 Azure 服務匯流排時,請考慮下列建議以達成可靠性最佳化:
建議 | Description |
---|---|
評估Azure 服務匯流排的進階層優點。 | 請考慮遷移至服務匯流排的進階版層,以利用平台支援的中斷和嚴重損壞狀況保護。 |
使用 AMQP 通訊協定連接至服務匯流排,並盡可能使用服務端點或私人端點。 | 此建議會將流量保留在 Azure 骨幹上。
注意:Microsoft.Azure.ServiceBus 和 Windows.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'