Azure 架構完善的架構檢視 Azure 事件中樞
Azure 事件中樞 是可調整的事件處理服務,可擷取及處理大量的事件和數據,具有低延遲和高可靠性。 它每秒可接收和處理數百萬個事件。 傳送至事件中樞的數據可以使用任何即時分析提供者或批處理和儲存配接器來轉換和儲存。
如需使用事件中樞的詳細資訊,請參閱 Azure 事件中樞 檔,瞭解如何使用事件中樞從聯機的裝置和應用程式每秒擷取數百萬個事件。
若要瞭解使用事件中樞的方式可協助您達到工作負載的卓越營運和可靠性,請參閱下列文章:
下列各節專屬於從 Well Architected Framework 的觀點 Azure 事件中樞:
- 設計考量
- 設定檢查清單
- 建議的組態選項
- 來源成品
設計考量
Azure 事件中樞 提供運行時間 SLA。 如需詳細資訊,請參閱 事件中樞的 SLA。
檢查清單
您是否已將 Azure 事件中樞 設定為卓越營運?
- 分別為事件發行者和取用者建立 SendOnly 和 ListenOnly 原則。
- 使用 SDK 將事件傳送至事件中樞時,請確定已正確攔截重試原則 (
EventHubsException
或OperationCancelledException
) 擲回的例外狀況。 - 在高輸送量案例中,使用批次事件。
- 每個取用者都可以從事件中樞 SKU 支援的一到最大分割區讀取事件
- 開發新的應用程式時,請使用
EventProcessorClient
(.NET 和 Java) 或EventHubConsumerClient
(Python 和 JavaScript) 作為用戶端 SDK。 - 作為整個解決方案可用性和災害復原策略的一部分,請考慮啟用事件中樞異地災害復原選項。
- 當解決方案有大量的獨立事件發行者時,請考慮使用事件發行者進行更細緻的訪問控制。
- 請勿將事件發佈至特定分割區。
- 經常發佈事件時,請盡可能使用AMQP通訊協定。
- 分割區數目反映您可以達成的下游平行處理原則程度。
- 請確定每個取用應用程式都會使用個別取用者群組,而且每個取用者群組只能有一個作用中的接收者。
- 使用擷取功能時,請仔細考慮時間範圍和檔案大小的設定,特別是低事件磁碟區。
組態建議
在設定 Azure 事件中樞 時,請考慮下列建議來優化可靠性:
建議 | 描述 |
---|---|
使用 SDK 將事件傳送至事件中樞時,請確定已正確攔截重試原則 (EventHubsException 或 OperationCancelledException ) 擲回的例外狀況。 |
使用 HTTPS 時,請確定已實作適當的重試模式。 |
在高輸送量案例中,使用批次事件。 | 服務會將具有多個事件的數位傳遞給 json 訂閱者,而不是具有一個事件的陣列。 取用的應用程式必須處理這些陣列。 |
每個取用者都可以從事件中樞 SKU 支援的一到最大分割區讀取事件。 | 若要在取用應用程式端達到最大規模,每個取用者都應該從單一分割區讀取。 |
開發新的應用程式時,請使用 EventProcessorClient (.NET 和 Java) 或 EventHubConsumerClient (Python 和 JavaScript) 作為用戶端 SDK。 |
EventProcessorHost 已被取代。 |
作為整個解決方案可用性和災害復原策略的一部分,請考慮啟用事件中樞異地災害復原選項。 | 此選項允許在不同的區域中建立次要命名空間。 只有作用中的命名空間隨時接收訊息。 訊息和事件不會復寫到次要區域。 區域故障轉移 的 RTO 最多 30 分鐘。 確認此 RTO 符合客戶的需求,並符合更廣泛的可用性策略。 如果需要較高的 RTO,請考慮實作用戶端故障轉移模式。 |
當解決方案有大量的獨立事件發行者時,請考慮使用事件發行者進行更細緻的訪問控制。 | 事件發行者會自動將分割區索引鍵設定為發行者名稱,因此只有在事件來自所有發行者時,才應該使用此功能。 |
請勿將事件發佈至特定分割區。 | 如果排序事件很重要,請實作下游排序或使用不同的傳訊服務。 |
經常發佈事件時,請盡可能使用AMQP通訊協定。 | 初始化會話時,AMQP 的網路成本較高,但 HTTPS 每個要求都需要 TLS 額外負荷。 AMQP 對於頻繁發行者的效能較高。 |
分割區數目反映您可以達成的下游平行處理原則程度。 | 若要達到最大輸送量,請在建立事件中樞時,使用SKU所支援的最大分割區數目。 增加分割區數目可讓您調整並行處理實體以符合分割區,以確保最佳的傳送和接收可用性。 |
使用擷取功能時,請仔細考慮時間範圍和檔案大小的設定,特別是低事件磁碟區。 | Data Lake gen2 會收取最少交易大小的費用。 如果您將時間範圍設定得太低,以至於檔案未達到最小大小,您將會產生額外的成本。 |
來源成品
若要尋找具有 基本 SKU 的事件中樞命名空間,請使用下列查詢:
Resources
| where type == 'microsoft.eventhub/namespaces'
| where sku.name == 'Basic'
| project resourceGroup, name, sku.name