Circuit breaker

Beskrivelse af Circuit Breaker i Orkestreringskomponenten, dvs. funktionalitet og de konfigurerbare elementer der er i Circuit breakeren.

Redaktør: Kurt Hansen

 

Indholdsfortegnelse

Hvad er en Circuit Breaker

 Generelt er Circuit breaker et designmønster, der anvendes i software, til detektere fejl og samtidig omfatter logik der forhindrer en fejl, der konstant gentages, i at påvirke systemets funktionalitet eller tilgængelighed. Fejl kan være afledt af vedligeholdelse, midlertidig ekstern systemfejl eller uventede systemproblemer. Circuit breaker sikrer også, at fejl et sted ikke afstedkommer fejl i den øvrige del af system-landskabet.

Hvordan virker Circuit Breaker i Orkestreringskomponenten

Circuit breaker i Orkestreringskomponenten er bygget således at vedvarende fejl ved kald til en datakilde ikke påvirker svartider fra Orkestreringskomponenten samt minimerer afledt belastning således at visningsklienter får den bedst mulige svartid fra Orkestreringskomponenten.

Circuit breaker virker ved, at når der er observeret x-antal fejlende kald efter hinanden for en bestemt datakilde, så bliver datakilden deaktiveret. Deaktivering betyder at Orkestreringskomponenten, ved efterfølgende kald til enten liste eller detalje, ikke forsøger at kalde en givne datakilde. Orkestreringskomponenten deaktiverer også datakilderne med det samme, hvis der er tale om fejl i forretningslogisk validering. Dette sker, når datakilder forsøger at sende data tilbage på et andet CPR-nummer, end det Orkestreringskomponenten forespørger på.

Datakilden bliver ikke permanent deaktiveret, men deaktiveres kun for at fastsat tidsrum. Når dette tidsrum er udløbet, så forsøger Orkestreringskomponenten at kalde datakilden igen. Ofte vil fejl hos datakilder være at temporær karakter, så det giver god mening at forsøge igen senere. Et servicevindue hos en datakilde kan ofte resultere i timeout, men når servicevinduet er færdigt, vil datakilden svare normalt igen.

Hvis en datakilde er blevet deaktiveret et fastsat antal gange, vil datakilden blive permanent deaktiveret. Er en datakilde blevet permanent deaktiveret, skal den manuelt aktiveres for at blive forsøgt kaldt igen.

Circuit breaker opererer per datakilde/per datamodel, dvs. hvis en datakilde bliver deaktiveret af Circuit breakeren, gælder det kun for den datamodel, hvor fejlkald er registreret.

Tærskelværdier

De forskellige tærskelværdier der arbejdes med i Circuit breaker er alle konfigurerbare, og der en individuel værdi per datakilde per datamodel.

Tærskelværdier findes for følgende:

  • Fejlkald: antal fejlkald til datakilde for en datamodel. Tælles en op ved hvert fejlkald, men nulstilles ved succesfulde kald. Når tærskelværdi nås, deaktiveres datakilde og antal fejlkald nulstilles. Datakilden forsøges at blive kaldt igen efter et fastsat tidsrum.

  • Antal deaktiveringer: Optælling af antal deaktiveringer. Tælles 1 op per deaktivering. Hvis tærskelværdi nås, bliver datakilde deaktiveret permanent.

  • Tidsrum for deaktiveringer: Der fastsættes et bestemt tidsinterval, hvor deaktiveringerne skal ske inden for, for at dataservice deaktiveres permanent.

 

Værdi for deaktiveringsperiode (ventetid) ved hver deaktivering er en global konfiguration for Orkestreringskomponenten. Er pt. sat til 5 minutter.

Flow for Circuit breaker

Flowet for Circuit breaker er illustreret i nedenstående figur.

image-20240621-055120.png

 

 

Version Date Comment
Current Version (v. 8) Jun 27, 2024 07:21 Mads Østergaard
v. 7 Jun 21, 2024 05:53 Kurt Hansen
v. 6 Jun 21, 2024 05:52 Kurt Hansen
v. 5 Jun 20, 2024 12:05 Mads Østergaard
v. 4 Jun 20, 2024 09:23 Mads Østergaard
v. 3 Jun 16, 2024 18:21 Kurt Hansen
v. 2 Jun 16, 2024 14:00 Kurt Hansen
v. 1 Jun 16, 2024 13:59 Kurt Hansen