Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker) · Lektion

Protokollen for two-phase commit

Forstå two-phase commit (2PC) til distribuerede transaktioner, protokollens garantier og blokerende svagheder, samt hvorfor microservices i stedet foretrækker sagaer.

Lektion 4 af 413 trin

Protokollen for two-phase commit er en gratis Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)-lektion på CoddyKit. Dette er lektion 4 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.

Behovet for atomare distribuerede skrivninger

Når én forretningshandling strækker sig over to databaser, ønsker du alt eller intet: begge gennemfører eller begge ruller tilbage. En enkelt lokal transaktion kan ikke spænde over separate systemer, så vi har brug for en koordineringsprotokol.

Tofaset commit introduceres

Tofaset commit (2PC) er en klassisk protokol, hvor en koordinator fører flere deltagere frem til en enstemmig beslutning: gennemfør eller afbryd.

Fase 1: Forberedelse

Koordinatoren spørger hver deltager: kan du gennemføre? Hver deltager udfører arbejdet, låser ressourcerne, skriver i sin log og svarer ja (forberedt) eller nej.

Fase 2: Gennemfør eller afbryd

Hvis alle svarede ja, beder koordinatoren alle om at gennemføre. Hvis nogen svarede nej, beder den alle om at afbryde. Beslutningen er endelig og registreret.

Garantien

2PC sikrer atomicitet på tværs af deltagerne: Der findes ingen tilstand, hvor én har gennemført, mens en anden har afbrudt, så længe protokollen gennemføres.

Blokeringsproblemet

Her er den alvorlige fejl: Hvis koordinatoren går ned efter fase 1, sidder deltagerne fast og holder låsene, uden at kunne træffe en beslutning. De blokerer på ubestemt tid, indtil koordinatoren er tilbage.

Låse ødelægger gennemløbet

Ressourcerne forbliver låst under hele protokoludvekslingen. På tværs af tjenester og netværk reducerer det samtidighed og tilgængelighed markant, hvilket er uacceptabelt for mikrotjenester i stor skala.

CAP-spændingen

2PC prioriterer konsistens over tilgængelighed. En netværkspartition under gennemførelsen kan fastlåse hele transaktionen og dermed tilsidesætte den tilgængelighed, som distribuerede systemer normalt prioriterer.

XA-transaktioner

XA-standarden implementerer 2PC på tværs af ressourceadministratorer (databaser og JMS-brokere). Den fungerer, men kobler tjenester tæt sammen og viderefører alle 2PC's blokeringsproblemer.

Hvorfor mikrotjenester undgår 2PC

Mikrotjenester prioriterer løs kobling og tilgængelighed. De afviser normalt 2PC til fordel for saga-mønsteret: en sekvens af lokale transaktioner med kompenserende handlinger, hvor man accepterer eventual consistency i stedet for distribuerede låse.

Hvornår 2PC stadig giver mening

2PC er ikke altid forkert. Inden for én tillidsgrænse kan transaktioner med lav belastning og kort varighed over pålidelig infrastruktur (f.eks. én database plus én meddelelsesbroker) bruge det sikkert.

Hurtigt tjek

Test din forståelse af 2PC.

Opsummering

Du har lært om 2PC:

  • 2PC koordinerer en gennemførelse på tværs af deltagere, hvor alt enten gennemføres eller afbrydes
  • Fase 1 forbereder (låser og stemmer); fase 2 gennemfører eller afbryder
  • Det garanterer atomicitet, men blokerer ved koordinatorfejl
  • Låse og CAP-afvejningen skader tilgængeligheden i stor skala
  • Mikrotjenester foretrækker sagaer; 2PC passer til små, pålidelige tilfælde inden for én grænse
Gratis at komme i gang

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 “Protokollen for two-phase commit” gratis?

Ja — hele teksten til “Protokollen for two-phase commit” 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 “Protokollen for two-phase commit”?

Forstå two-phase commit (2PC) til distribuerede transaktioner, protokollens garantier og blokerende svagheder, samt hvorfor microservices i stedet foretrækker sagaer. 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 4 af 4.

Hvor lang tid tager lektionen “Protokollen for two-phase commit”?

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

  1. ACID- kontra BASE-principper
  2. Forstå eventual consistency
  3. Transaktionshåndtering i mikrotjenester
  4. Protokollen for two-phase commit
← Tilbage til Kommunikationsmønstre i mikrotjenester (Saga, Circuit Breaker)