Casestudier: Valg af mønster
Undersøg scenarier fra virkeligheden for at forstå, hvornår De bør anvende Saga, Circuit Breaker eller andre kommunikationsmønstre.
Casestudier: Valg af mønster er en gratis Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-kurset indeholder 4 lektioner i alt.
Valg af det rigtige mønster
Velkommen til det sidste minikursus! I mikrotjenester er det afgørende at vælge det rigtige kommunikationsmønster for at bygge robuste og skalerbare systemer.
Denne lektion gennemgår scenarier fra den virkelige verden og hjælper dig med at afgøre, hvornår du skal bruge mønstre som Saga, Circuit Breaker, Retry eller enklere metoder.
Opsummering: Kernemønstre
Før vi går i gang med casestudierne, lad os hurtigt genkalde os de vigtigste mønstre, vi har gennemgået:
- Saga: Håndterer distribuerede transaktioner på tværs af flere tjenester.
- Circuit Breaker: Forhindrer kaskaderende fejl ved at stoppe anmodninger til usunde tjenester.
- Retry: Forsøger automatisk mislykkede handlinger igen.
- Asynchronous Messaging: Afkobler tjenester, så kommunikation kan foregå uden blokering.
Hvert mønster har sit eget formål.
Casestudie 1: Ordrebehandling
Forestil dig en e-handelsplatform. Når en kunde afgiver en ordre, skal flere ting ske:
- Træk varer fra lagerbeholdningen.
- Behandl betalingen.
- Send ordren.
Hvis et trin mislykkes, bør hele transaktionen ideelt set rulles tilbage eller kompenseres. Det kræver koordinering på tværs af forskellige tjenester.
Løsning 1: Saga-mønsteret
I vores scenarie med ordrebehandling passer Saga-mønsteret perfekt. Det sikrer, at en langvarig forretningstransaktion, der strækker sig over flere tjenester, enten gennemføres korrekt eller kompenseres på passende vis.
En Saga koordinerer lokale transaktioner i hver tjeneste ved hjælp af hændelser (Choreography) eller en central orkestrator (Orchestration) for at opretholde konsistens.
Casestudie 2: Ekstern betalingsgateway
Din betalingstjeneste er afhængig af en ekstern betalingstjeneste fra en tredjepart. Denne gateway kan lejlighedsvis opleve driftsforstyrrelser eller blive langsom på grund af høj belastning.
Hvis din tjeneste bliver ved med at sende anmodninger til en gateway, der svigter, kan den opbruge sine egne ressourcer (trådpuljer, forbindelser) og til sidst gå ned, hvilket kan føre til en kaskaderende fejl.
Løsning 2: Circuit Breaker og Retry
For at beskytte mod en ustabil ekstern betalingsgateway er en Circuit Breaker afgørende. Den afviser hurtigt forespørgsler, når gatewayen er nede, så ressourcerne ikke udtømmes.
Du kan kombinere dette med et Retry-mønster til midlertidige fejl. Hvis kredsløbet er lukket, og en forespørgsel mislykkes, kan et nyt forsøg lykkes. Hvis kredsløbet derimod er åbent, bør nye forsøg undertrykkes.
Konceptuel kode: Circuit Breaker
Her er en forenklet, konceptuel visning af, hvordan du kan omgive et kald med en Circuit Breaker. Faktiske implementeringer bruger biblioteker, men følger denne logik.
class PaymentService {
private CircuitBreaker cb = new CircuitBreaker();
public void processPayment(double amount) {
if (cb.allowRequest()) {
try {
// call external gateway
System.out.println("Calling gateway...");
// Assume gateway.charge(amount) might fail
if (Math.random() < 0.3) {
throw new RuntimeException("Gateway error");
}
cb.recordSuccess();
System.out.println("Payment successful.");
} catch (Exception e) {
cb.recordFailure();
System.out.println("Payment failed: " + e.getMessage());
}
} else {
System.out.println("Circuit is open. Falling back.");
// Implement fallback logic here
}
}
}
// Dummy CircuitBreaker for concept
class CircuitBreaker {
private int failureCount = 0;
private boolean isOpen = false;
public boolean allowRequest() {
if (isOpen) {
// Add logic for Half-Open state here
return false;
}
return true;
}
public void recordFailure() {
failureCount++;
if (failureCount > 3) { // Threshold
isOpen = true;
System.out.println("Circuit opened!");
}
}
public void recordSuccess() {
failureCount = 0;
if (isOpen) {
isOpen = false;
System.out.println("Circuit closed!");
}
}
}
public class Main {
public static void main(String[] args) {
PaymentService service = new PaymentService();
for (int i = 0; i < 10; i++) {
System.out.println("\nAttempt " + (i + 1) + ":");
service.processPayment(100.0);
}
}
}Casestudie 3: Generering af rapporter
En bruger anmoder om en kompleks økonomisk rapport, som kan tage flere minutter at generere. Brugeren har ikke brug for rapporten med det samme, men forventer at få besked, når den er klar.
Hvis du behandler denne forespørgsel synkront, fryser brugergrænsefladen, og webserverens ressourcer bliver optaget i længere tid, hvilket påvirker andre brugere.
Løsning 3: Asynkron behandling
Til langvarige, ikke-kritiske operationer som rapportgenerering er asynkron messaging (ved hjælp af en beskedkø eller en eventbus) ideel.
- Brugerens forespørgsel placeres straks i en kø.
- En dedikeret worker-tjeneste henter opgaven og behandler den i baggrunden.
- Når behandlingen er færdig, giver workeren brugeren besked (f.eks. via e-mail eller en push-notifikation).
Det kobler forespørgslen fra dens udførelse, hvilket forbedrer reaktionsevnen og skalerbarheden.
Hvilket mønster skal du bruge?
Forestil dig et scenarie, hvor din analysetjeneste ofte kalder en anbefalingstjeneste for at hente personaliserede data. Anbefalingstjenesten er intern, men oplever af og til korte spidsbelastninger i svartiden eller mindre fejl under høj belastning.
Opsummering: Vælg mønstre med omtanke
Vi har undersøgt, hvordan forskellige mønstre løser specifikke udfordringer i mikrotjenester:
- Saga: Til distribuerede transaktioner, der kræver atomicitet.
- Circuit Breaker og Retry: Til håndtering af upålidelige afhængigheder og midlertidige fejl.
- Asynkron messaging: Til at afkoble langvarige, ikke-kritiske opgaver.
Det afgørende er at forstå tjenestens krav, behovet for konsistens og tolerancen over for fejl, så du kan vælge de bedst egnede mønstre.
Lær Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker) med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Casestudier: Valg af mønster” gratis?
Ja — hele teksten til “Casestudier: Valg af mønster” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-kurset, skal du opgradere til CoddyKit PRO. Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Casestudier: Valg af mønster”?
Undersøg scenarier fra virkeligheden for at forstå, hvornår De bør anvende Saga, Circuit Breaker eller andre kommunikationsmønstre. Du øver dig i Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)?
Der kræves ingen tidligere erfaring. Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Casestudier: Valg af mønster”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-lektion?
Ja. Alle Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Casestudier: Valg af mønster
- Almindelige faldgruber og anti-mønstre
- Udvikling af kommunikationsstrategier
- Chaos engineering for kommunikationsmønstre