Dapr-összetevők rugalmassága
A rugalmassági szabályzatok proaktív módon megakadályozzák, észlelik és helyreállítják a tárolóalkalmazás hibáit. Ebből a cikkből megtudhatja, hogyan alkalmazhat rugalmassági szabályzatokat olyan alkalmazásokra, amelyek a Dapr használatával integrálhatók a különböző felhőszolgáltatásokkal, például az állami áruházakkal, a pub/alüzenet-közvetítőkkel, a titkos tárakkal stb.
A következő kimenő és bejövő műveleti irányokhoz konfigurálhat rugalmassági szabályzatokat, például újrapróbálkozási, időtúllépési és kapcsolatcsoport-megszakítókat egy Dapr-összetevőn keresztül:
- Kimenő műveletek: Hívás a Dapr oldalkocsiról egy összetevőre, például:
- Állapot megőrzése vagy beolvasása
- Üzenet közzététele
- Kimeneti kötés meghívása
- Bejövő műveletek: A Dapr oldalkocsiról a tárolóalkalmazásba irányuló hívások, például:
- Előfizetések üzenet küldésekor
- Eseményt szállító bemeneti kötések
Az alábbi képernyőkép azt mutatja be, hogy egy alkalmazás hogyan használ újrapróbálkozási szabályzatot a sikertelen kérelmekből való helyreállításra.
Támogatott rugalmassági szabályzatok
Rugalmassági szabályzatok konfigurálása
Megadhatja, hogy a Bicep, a CLI vagy az Azure Portal használatával hozzon létre rugalmassági szabályzatokat.
Az alábbi rugalmassági példa az összes elérhető konfigurációt szemlélteti.
resource myPolicyDoc 'Microsoft.App/managedEnvironments/daprComponents/resiliencyPolicies@2023-11-02-preview' = {
name: 'my-component-resiliency-policies'
parent: '${componentName}'
properties: {
outboundPolicy: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
circuitBreakerPolicy: {
intervalInSeconds: 15
consecutiveErrors: 10
timeoutInSeconds: 5
}
}
inboundPolicy: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
circuitBreakerPolicy: {
intervalInSeconds: 15
consecutiveErrors: 10
timeoutInSeconds: 5
}
}
}
}
Fontos
Az összes rugalmassági szabályzat alkalmazása után újra kell indítania a Dapr-alkalmazásokat.
Szabályzat-specifikációk
Időtúllépések
Az időtúllépések a hosszú ideig futó műveletek korai leállítására szolgálnak. Az időtúllépési szabályzat a következő tulajdonságokat tartalmazza.
properties: {
outbound: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
}
inbound: {
timeoutPolicy: {
responseTimeoutInSeconds: 15
}
}
}
Metaadatok | Kötelező | Leírás | Példa |
---|---|---|---|
responseTimeoutInSeconds |
Igen | Időtúllépés a Dapr-összetevő válaszára várva. | 15 |
Újrapróbálkozások
httpRetryPolicy
A sikertelen műveletek stratégiájának meghatározása. Az újrapróbálkozési szabályzat a következő konfigurációkat tartalmazza.
properties: {
outbound: {
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
}
inbound: {
httpRetryPolicy: {
maxRetries: 5
retryBackOff: {
initialDelayInMilliseconds: 1000
maxIntervalInMilliseconds: 10000
}
}
}
}
Metaadatok | Kötelező | Leírás | Példa |
---|---|---|---|
maxRetries |
Igen | Sikertelen http-kérés esetén végrehajtandó újrapróbálkozések maximális száma. | 5 |
retryBackOff |
Igen | Figyelje a kéréseket, és állítsa le az érintett szolgáltatás felé irányuló összes forgalmat, amikor időtúllépési és újrapróbálkozási feltételek teljesülnek. | N.A. |
retryBackOff.initialDelayInMilliseconds |
Igen | Késleltetés az első hiba és az első újrapróbálkozás között. | 1000 |
retryBackOff.maxIntervalInMilliseconds |
Igen | Az újrapróbálkozások közötti maximális késleltetés. | 10000 |
Megszakítók
Definiáljon egy circuitBreakerPolicy
olyan kérések figyelésére, amelyek emelt hibaarányt okoznak, és bizonyos feltételek teljesülése esetén leállítja az érintett szolgáltatás felé irányuló összes forgalmat.
properties: {
outbound: {
circuitBreakerPolicy: {
intervalInSeconds: 15
consecutiveErrors: 10
timeoutInSeconds: 5
}
},
inbound: {
circuitBreakerPolicy: {
intervalInSeconds: 15
consecutiveErrors: 10
timeoutInSeconds: 5
}
}
}
Metaadatok | Kötelező | Leírás | Példa |
---|---|---|---|
intervalInSeconds |
Nem | Az áramkör-megszakító által a belső számok törlésére használt ciklikus időtartam (másodpercben). Ha nincs megadva, az intervallum a megadott timeoutInSeconds értékre van állítva. |
15 |
consecutiveErrors |
Igen | A kapcsolatcsoport-utazások és -megnyitások előtt engedélyezett kéréshibák száma. | 10 |
timeoutInSeconds |
Igen | A nyitott állapot időszaka (másodpercben), közvetlenül a hiba után. | 5 |
Megszakító folyamat
consecutiveErrors
A kapcsolatcsoport-utazás feltételének megadása (a kapcsolatcsoport-utazás feltételekéntconsecutiveFailures > $(consecutiveErrors)-1
) megadja az áramköri utak előtt és félúton megnyíló hibák számát.
A kapcsolatcsoport fél nyitva várja az timeoutInSeconds
időtartamot, amely alatt a consecutiveErrors
kérelmek számának egymást követő sikeresnek kell lennie.
- Ha a kérések sikeresek, a kapcsolatcsoport bezárul.
- Ha a kérések sikertelenek, a kapcsolatcsoport félig megnyitott állapotban marad.
Ha nem állított be értéket intervalInSeconds
, a kapcsolatcsoport a beállított timeoutInSeconds
idő után bezárt állapotba kerül, függetlenül az egymást követő kérések sikerességétől vagy sikertelenségétől. Ha be 0
van állítvaintervalInSeconds
, a kapcsolatcsoport soha nem alaphelyzetbe áll automatikusan, csak félig nyitott állapotból zárt állapotba lép, ha sikeresen végrehajtja consecutiveErrors
a kéréseket egy sorban.
Ha beállított egy intervalInSeconds
értéket, amely meghatározza a kapcsolatcsoport lezárt állapotba állításának időtartamát attól függetlenül, hogy a félig megnyitott állapotban küldött kérelmek sikeresek-e vagy sem.
Rugalmassági naplók
A tárolóalkalmazás Figyelés szakaszában válassza a Naplók lehetőséget.
A Naplók panelen írjon és futtasson egy lekérdezést a rugalmasság kereséséhez a tárolóalkalmazás rendszernaplóiban. Például annak megállapításához, hogy egy rugalmassági szabályzat be lett-e töltve:
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
Kattintson a Futtatás gombra a lekérdezés futtatásához, és tekintse meg az eredményt a szabályzat betöltését jelző naplóüzenettel.
A tényleges rugalmassági szabályzatot úgy is megtalálhatja, hogy engedélyezi az összetevő hibakeresését, és a következő példához hasonló lekérdezést használ:
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
A Futtatás gombra kattintva futtassa a lekérdezést, és tekintse meg az eredményként kapott naplóüzenetet a szabályzatkonfigurációval.
Kapcsolódó tartalom
Megtudhatja, hogyan működik a szolgáltatás és a szolgáltatás közötti kommunikáció rugalmassága a szolgáltatásfelderítésben beépített Azure Container Apps használatával