Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) · leksjon

Kasusstudier: Valg av mønster

Undersøk virkelige scenarier for å forstå når Saga, Circuit Breaker eller andre kommunikasjonsmønstre bør brukes.

Leksjon 1 av 411 trinn

Kasusstudier: Valg av mønster er en gratis leksjon i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker), og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) inneholder totalt 4 leksjoner.

Velge riktig mønster

Velkommen til det siste minikurset! I mikrotjenester er det avgjørende å velge riktig kommunikasjonsmønster for å bygge robuste og skalerbare systemer.

Denne leksjonen utforsker virkelige scenarier og hjelper Dem med å avgjøre når mønstre som Saga, Circuit Breaker, Retry eller enklere metoder bør brukes.

Oppsummering: Kjernepatternene

Før vi går inn i casestudiene, skal vi raskt repetere hovedmønstrene vi har dekket:

  • Saga: Håndterer distribuerte transaksjoner på tvers av flere tjenester.
  • Circuit Breaker: Forhindrer kaskaderende feil ved å stanse forespørsler til ustabile tjenester.
  • Retry: Forsøker automatisk mislykkede operasjoner på nytt.
  • Asynchronous Messaging: Kobler tjenester fra hverandre og muliggjør ikke-blokkerende kommunikasjon.

Hvert mønster har sitt eget formål.

Casestudie 1: Ordrebehandling

Se for Dem en e-handelsplattform. Når en kunde legger inn en ordre, må flere ting skje:

  1. Trekk varer fra lagerbeholdningen.
  2. Behandle betalingen.
  3. Send ordren.

Hvis et trinn mislykkes, bør hele transaksjonen ideelt sett rulles tilbake eller kompenseres. Dette krever koordinering på tvers av ulike tjenester.

Løsning 1: Saga-mønsteret

For scenariet med ordrebehandling passer Saga-mønsteret perfekt. Det sikrer at en langvarig forretningstransaksjon som går på tvers av flere tjenester, enten fullføres eller kompenseres på riktig måte.

En Saga koordinerer lokale transaksjoner i hver tjeneste ved hjelp av hendelser (Choreography) eller en sentral orkestrator (Orchestration) for å opprettholde konsistens.

Casestudie 2: Ekstern betalingsgateway

Betalingstjenesten Deres er avhengig av en ekstern betalingstjeneste fra en tredjepart. Denne gatewayen kan av og til oppleve driftsavbrudd eller bli treg på grunn av høy belastning.

Hvis tjenesten fortsetter å sende forespørsler til en gateway som svikter, kan den tømme sine egne ressurser (trådpakker og tilkoblinger) og til slutt krasje, noe som fører til en kaskaderende feil.

Løsning 2: Circuit Breaker og Retry

For å beskytte mot en upålitelig ekstern betalingsgateway er en Circuit Breaker avgjørende. Den avbryter forespørsler raskt når gatewayen er nede, og hindrer dermed at ressursene blir brukt opp.

Dette kan kombineres med et Retry-mønster for forbigående feil. Hvis kretsen er lukket og en forespørsel mislykkes, kan et nytt forsøk lykkes. Hvis kretsen derimot er åpen, bør nye forsøk undertrykkes.

Konseptuell kode: Circuit Breaker

Her ser De en forenklet, konseptuell fremstilling av hvordan De kan pakke inn et kall med en Circuit Breaker. Faktiske implementasjoner bruker biblioteker, men følger denne logikken.

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);
    }
  }
}

Kasusstudie 3: Rapportgenerering

En bruker ber om en kompleks økonomisk rapport som kan ta flere minutter å generere. Brukeren trenger ikke rapporten umiddelbart, men forventer å få beskjed når den er klar.

Hvis De behandler denne forespørselen synkront, vil brukergrensesnittet fryse, og webserverens ressurser vil være bundet opp i en lengre periode. Dette påvirker andre brukere.

Løsning 3: Asynkron behandling

For langvarige, ikke-kritiske operasjoner som rapportgenerering er asynkron meldingsutveksling (ved hjelp av en meldingskø eller eventbuss) ideelt.

  • Brukerens forespørsel legges umiddelbart i en kø.
  • En dedikert arbeidstjeneste henter oppgaven og behandler den i bakgrunnen.
  • Når oppgaven er fullført, varsler arbeidstjenesten brukeren (for eksempel via e-post eller et push-varsel).

Dette kobler forespørselen fra gjennomføringen, noe som gir bedre respons og skalerbarhet.

Hvilket mønster bør De bruke?

Se for Dem et scenario der analysetjenesten ofte kaller en anbefalingstjeneste for å hente personaliserte data. Anbefalingstjenesten er intern, men opplever av og til korte perioder med økt forsinkelse eller mindre feil under høy belastning.

Oppsummering: Smart valg av mønster

Vi har sett på hvordan ulike mønstre løser bestemte utfordringer i mikrotjenester:

  • Saga: For distribuerte transaksjoner som krever atomisitet.
  • Circuit Breaker og Retry: For håndtering av upålitelige avhengigheter og forbigående feil.
  • Asynkron meldingsutveksling: For frikobling og langvarige, ikke-kritiske oppgaver.

Det viktigste er å forstå tjenestens krav, behov for konsistens og toleranse for feil, slik at De kan velge de mest passende mønstrene.

Gratis å komme i gang

Lær deg Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Kasusstudier: Valg av mønster» gratis?

Ja – hele teksten i «Kasusstudier: Valg av mønster» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) inneholder totalt 4 leksjoner.

Hva lærer jeg i «Kasusstudier: Valg av mønster»?

Undersøk virkelige scenarier for å forstå når Saga, Circuit Breaker eller andre kommunikasjonsmønstre bør brukes. Du øver på Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)?

Ingen tidligere erfaring er nødvendig. Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker) på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Kasusstudier: Valg av mønster»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)-leksjonen?

Ja. Alle Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Kasusstudier: Valg av mønster
  2. Vanlige fallgruver og anti-mønstre
  3. Videreutvikling av kommunikasjonsstrategier
  4. Chaos Engineering for kommunikasjonsmønstre
← Tilbake til Kommunikasjonsmønstre for mikrotjenester (Saga, Circuit Breaker)