Utforma Saga-orchestratorer
Lär Er att utforma en särskild orchestrator-tjänst som ansvarar för att hantera en sagas tillstånd och steg.
Utforma Saga-orchestratorer är en gratis lektion i Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker) på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker), och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker) innehåller totalt 4 lektioner.
Vad är en sagaorkestrerare?
I en orkestreringssaga tar en särskild tjänst, kallad orkestreraren, ansvar för att hantera hela den distribuerade transaktionen.
Tänk på den som en dirigent i en orkester. I stället för att enskilda musiker (tjänster) reagerar på varandra talar dirigenten (orkestreraren) om för varje musiker när det är dags att spela sin del.
Varför använda en orkestrerare?
Orkestrering erbjuder flera fördelar, särskilt för komplexa affärsflöden:
- Centraliserad logik: All sagalogik finns på ett ställe, vilket gör den enklare att förstå och hantera.
- Enklare ändringar: Det är enklare att ändra sagans steg eller lägga till nya, eftersom ändringarna begränsas till orkestreraren.
- Tydligare felsökning: Det blir enklare att följa en transaktions flöde och exakt fastställa var ett fel inträffade.
Huvudansvar
En sagaorkestrerare har flera viktiga ansvarsområden för att säkerställa att transaktionen slutförs korrekt eller kompenseras på rätt sätt:
- Initierar sagan: Startar transaktionen genom att skicka det första kommandot.
- Följer tillståndet: Håller reda på sagans aktuella förlopp och tillstånd.
- Samordnar steg: Skickar kommandon till deltagande tjänster baserat på det aktuella tillståndet och svaren.
- Hanterar kompensation: Utlöser återställningsåtgärder om något steg misslyckas.
Exempel: saga för orderläggning
Vi kan titta på en saga för ”orderläggning” som omfattar flera tjänster:
- Ordertjänst: Skapar ordern.
- Betaltjänst: Behandlar betalningen.
- Lagerhanteringstjänst: Uppdaterar lagersaldot.
- Leveranstjänst: Ordnar leveransen.
Orkestreraren leder ordern genom dessa steg.
Hantering av orkestrerarens tillstånd
Orkestreraren måste hålla reda på var i sin livscykel sagan befinner sig. Detta är dess tillstånd. Vanligtvis lagrar den:
sagaId: En unik identifierare för den aktuella transaktionen.currentStep: Vilket steg som är aktivt eller har slutförts.status: Till exempelIN_PROGRESS,COMPLETED,FAILED,COMPENSATING.
Detta tillstånd måste beständiggöras (sparas) så att orkestreraren kan återhämta sig om den kraschar.
Utforma flödet
Orkestrerarens utformning kretsar kring ett flöde som liknar en tillståndsmaskin:
- Orkestreraren skickar ett kommando till en deltagande tjänst (till exempel ’ProcessPayment’).
- Den deltagande tjänsten utför sin åtgärd och skickar tillbaka en händelse (till exempel ’PaymentProcessed’ eller ’PaymentFailed’).
- Orkestreraren tar emot händelsen, uppdaterar sitt tillstånd och avgör vilket kommando som ska skickas härnäst, eller initierar kompensation.
Orkestrerarens struktur (kod)
Här är ett förenklat Java-exempel som visar hur en orkestrerare kan hantera sitt tillstånd och reagera på svar. Koden simulerar flödet:
public class OrderSagaOrchestrator {
private String sagaId;
private String currentState;
public OrderSagaOrchestrator(String id) {
this.sagaId = id;
this.currentState = "INITIATED";
System.out.println("Saga " + sagaId + " state: " + currentState);
}
public void startOrderSaga() {
System.out.println("Sending 'Process Payment' command.");
this.currentState = "PAYMENT_PROCESSING";
System.out.println("Saga " + sagaId + " state: " + currentState);
}
public void handlePaymentResponse(boolean success) {
if (success) {
System.out.println("Payment successful. Sending 'Update Inventory' command.");
this.currentState = "INVENTORY_UPDATING";
} else {
System.out.println("Payment failed. Initiating compensation.");
this.currentState = "FAILED";
}
System.out.println("Saga " + sagaId + " state: " + currentState);
}
public String getCurrentState() {
return currentState;
}
public static void main(String[] args) {
OrderSagaOrchestrator orchestrator = new OrderSagaOrchestrator("ORD-123");
orchestrator.startOrderSaga();
orchestrator.handlePaymentResponse(true); // Simulate success
// orchestrator.handlePaymentResponse(false); // Try simulating failure
}
}Kommunikation med orkestreraren
För tillförlitlig kommunikation samverkar orkestrerare vanligtvis med deltagande tjänster via en meddelandekö (till exempel Apache Kafka eller RabbitMQ).
- Orkestreraren publicerar kommandon till köer eller ämnen för specifika tjänster.
- Deltagande tjänster publicerar händelser (lyckade eller misslyckade) tillbaka till ämnen som orkestreraren prenumererar på.
Denna asynkrona meddelandehantering ger lös koppling och bättre motståndskraft.
Implementera kompensation
Om en deltagande tjänst rapporterar ett fel måste orkestreraren initiera kompensation. Det innebär att alla steg som har slutförts korrekt återställs.
Om betalningen till exempel lyckades men lageruppdateringen misslyckades skulle orkestreraren skicka kommandot ’RefundPayment’ till Payment Service.
Orkestrerarens beständiga tillstånd är avgörande här, eftersom det exakt visar vilka steg som måste ångras.
Snabb kontroll
Vilka av följande är viktiga ansvarsområden för en sagaorkestrerare?
Sammanfattning: Utforma orkestrerare
I den här lektionen har vi lärt oss hur man utformar en sagaorkestrerare. Det är en särskild tjänst som fungerar som en central samordnare för distribuerade transaktioner.
- Den initierar steg, följer tillstånd och samordnar deltagande tjänster.
- Beständig tillståndshantering och robust kommunikation via meddelandeköer är centrala delar av utformningen.
- Orkestrerare förenklar felsökning och hantering av komplexa affärsflöden, särskilt tack vare sin inbyggda kompensationslogik.
Härnäst utforskar vi hur tillståndsmaskiner kan användas för att bygga ännu mer robusta orkestrerare!
Lär dig Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker) med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Utforma Saga-orchestratorer” gratis?
Ja – hela texten till ”Utforma Saga-orchestratorer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker), kan Ni uppgradera till CoddyKit PRO. Kursen i Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker) innehåller totalt 4 lektioner.
Vad lär jag mig i ”Utforma Saga-orchestratorer”?
Lär Er att utforma en särskild orchestrator-tjänst som ansvarar för att hantera en sagas tillstånd och steg. Ni övar på Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker) med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker)?
Du behöver inga förkunskaper. Utbildningen i Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker) på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Utforma Saga-orchestratorer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker)-lektionen?
Ja. Varje Kommunikationsmönster för mikrotjänster (Saga, Circuit Breaker)-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Utforma Saga-orchestratorer
- Tillståndsmaskiner för orchestration
- Implementera med en workflow-motor
- Testa orkestrerade sagor