事件方格和可靠性
Azure 事件方格 可讓您使用事件架構輕鬆地建置應用程式。 此解決方案內建支援來自 Azure 服務的事件,例如記憶體 Blob 和資源群組。 事件格線也支援針對您自己的事件使用自訂主題。
如需使用事件方格的詳細資訊,請參閱使用 Azure 事件方格 建立和路由自定義事件。
若要瞭解如何使用事件方格建立更可靠的工作負載,請參閱 Azure 事件方格 中的伺服器端異地災害復原。
下列各節專屬於 Azure 事件方格 和可靠性:
- 設計考量
- 設定檢查清單
- 建議的組態選項
- 來源成品
設計考量
Azure 事件方格 提供運行時間 SLA。 如需詳細資訊,請參閱 事件方格的 SLA。
檢查清單
您是否已將可靠性設定為 Azure 事件方格?
- 在多區域 Azure 解決方案的情況下,為每個區域部署事件方格實例。
- 監視事件方格以取得失敗的事件傳遞。
- 使用批次事件。
- 事件批次不能超過
1MB
大小。 - 在負載測試期間設定和優化批次大小選取專案。
- 只有在傳遞至保存自定義程式碼的端點時,才會接受事件方格訊息與
HTTP
200-204
回應。 - 監視事件方格中是否有失敗的事件發佈。
組態建議
在設定 Azure 事件方格 時,請考慮下列建議來優化可靠性:
建議 | 描述 |
---|---|
監視事件方格以取得失敗的事件傳遞。 | Delivery Failed 每次無法將訊息傳遞至事件處理程式時,計量都會增加(逾時或非200-204 HTTP 狀態代碼)。 如果事件無法遺失,請設定寄不出的信件佇列 (DLQ) 記憶體帳戶。 DLQ 帳戶是將放置最大重試計數之後無法傳遞的事件。 或者,透過事件方格處理 新的檔案 事件,在 DLQ 記憶體帳戶上實作通知系統。 |
在高輸送量案例中使用批次事件。 | 服務會將具有多個事件的數位傳遞給 json 訂閱者,而不是具有一個事件的陣列。 取用的應用程式必須能夠處理這些陣列。 |
事件批次不能超過 1MB 大小。 |
如果訊息承載很大,則批次中只能容納一或少數訊息。 取用服務需要處理更多事件批次。 如果您的事件具有大型承載,請考慮將它儲存在其他地方,例如在 Blob 記憶體中,並在事件中傳遞參考。 透過 CloudEvents 架構與第三方服務整合時,不建議超過 64KB 事件。 |
在負載測試期間設定和優化批次大小選取專案。 | 批次大小選取取決於承載大小和訊息磁碟區。 |
監視事件方格中是否有失敗的事件發佈。 | 計量 Unmatched 會顯示已發佈但不符合任何訂用帳戶的訊息。 視您的應用程式架構而定,後者可能是刻意的。 |
來源成品
若要判斷所有可用事件方格主題的 輸入架構 類型,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
若要擷取 事件方格網域現有私人端點的資源標識碼 ,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/domains' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
若要識別 所有可用事件方格網域的公用網路存取 狀態,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']
若要識別 所有公用事件方格網域的防火牆規則 ,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
若要識別 所有公用事件方格主題的防火牆規則 ,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
若要擷取 事件方格主題現有私人端點的資源標識碼 ,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/topics' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
若要判斷 所有可用事件方格網域的輸入架構 類型,請使用下列架構:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
若要識別 所有可用事件方格主題的公用網路存取 狀態,請使用下列查詢:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']