Dapr 元件復原能力 (預覽)
復原原則會主動防止、偵測及復原容器應用程式失敗。 在本文中,您將瞭解如何將復原原則套用至使用 Dapr 與不同雲端服務的應用程式,例如狀態存放區、發佈/子訊息代理程式、秘密存放區等等。
您可以透過 Dapr 元件設定下列輸出和輸入作業指示的復原原則,例如重試和逾時:
- 輸出作業: 從 Dapr Sidecar 呼叫元件,例如:
- 保存或擷取狀態
- 發佈訊息
- 叫用輸出系結
- 輸入作業: 從 Dapr Sidecar 呼叫容器應用程式,例如:
- 傳遞訊息時的訂用帳戶
- 傳遞事件的輸入系結
下列螢幕快照顯示應用程式如何使用重試原則嘗試從失敗的要求復原。
支持的復原原則
設定復原原則
您可以選擇使用 Bicep、CLI 或 Azure 入口網站 來建立復原原則。
下列復原範例示範所有可用的組態。
resource myPolicyDoc 'Microsoft.App/managedEnvironments/daprComponents/resiliencyPolicies@2023-08-01-preview' = {
name: 'my-component-resiliency-policies'
parent: '${componentName}'
properties: {
outboundPolicy: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
}
inboundPolicy: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
}
}
}
重要
套用所有復原原則之後,您必須重新啟動 Dapr 應用程式。
原則規格
逾時
逾時是用來提早終止長時間執行的作業。 逾時原則包含下列屬性。
properties: {
outbound: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
}
inbound: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
}
}
中繼資料 | 必要 | 描述 | 範例 |
---|---|---|---|
responseTimeoutInSeconds |
Yes | 等候來自 Dapr 元件的回應逾時。 | 15 |
重試
httpRetryPolicy
定義失敗作業的策略。 重試原則包含下列設定。
properties: {
outbound: {
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
}
inbound: {
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
}
}
中繼資料 | 必要 | 描述 | 範例 |
---|---|---|---|
maxRetries |
Yes | 針對失敗的 HTTP-request 執行重試次數上限。 | 5 |
retryBackOff |
Yes | 監視要求,並在符合逾時和重試準則時關閉受影響服務的所有流量。 | N/A |
retryBackOff.initialDelayInMilliseconds |
Yes | 第一次錯誤與第一次重試之間的延遲。 | 1000 |
retryBackOff.maxIntervalInMilliseconds |
Yes | 重試之間的延遲上限。 | 10000 |
復原記錄
從容器應用程式的 [ 監視] 區段中,選取 [ 記錄]。
在 [記錄] 窗格中,撰寫並執行查詢,以透過容器應用程式系統記錄尋找復原功能。 例如,若要尋找是否已載入復原原則:
ContainerAppConsoleLogs_CL
| where ContainerName_s == "daprd"
| where Log_s contains "Loading Resiliency configuration:"
| project time_t, Category, ContainerAppName_s, Log_s
| order by time_t desc
按兩下 [ 執行 ] 以執行查詢,並使用指出正在載入原則的記錄訊息來檢視結果。
或者,您可以在元件上啟用偵錯,並使用類似下列範例的查詢來尋找實際的復原原則:
ContainerAppConsoleLogs_CL
| where ContainerName_s == "daprd"
| where Log_s contains "Resiliency configuration ("
| project time_t, Category, ContainerAppName_s, Log_s
| order by time_t desc
按兩下 [ 執行 ] 以執行查詢,並使用原則組態檢視產生的記錄訊息。
相關內容
查看使用 Azure Container Apps 內建服務探索服務對服務通訊的復原運作 方式