Zustandsautomaten für die Orchestrierung
Wenden Sie Konzepte von Zustandsautomaten an, um robuste und vorhersehbare Saga-Orchestratoren zu erstellen, die den Transaktionsfortschritt verfolgen.
Zustandsautomaten für die Orchestrierung ist eine kostenlose Microservices Communication Patterns (Saga, Circuit Breaker)-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Microservices Communication Patterns (Saga, Circuit Breaker)-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Microservices Communication Patterns (Saga, Circuit Breaker)-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
State Machines for Sagas
Welcome to this lesson on using state machines to build robust saga orchestrators!
Orchestration sagas manage complex distributed transactions by keeping track of the overall process. State machines are a powerful tool for this.
Why State Machines?
A saga orchestrator needs to know the exact status of a business process at any given moment. This allows it to:
- Decide the next action to take.
- Handle failures and trigger compensation.
- Ensure consistency across multiple services.
State machines provide a clear, structured way to model this complex logic.
State Machine Basics
At its core, a state machine consists of three main concepts:
- States: Represent different phases or conditions of the saga (e.g.,
OrderCreated,PaymentPending). - Events: Occurrences that trigger changes in the saga (e.g.,
PaymentSuccessful,ShipmentFailed). - Transitions: Rules that define how an event causes the saga to move from one state to another.
Example: Order Processing Saga
Let's consider a common scenario: an online order processing saga.
This saga might involve several services:
- Order Service
- Payment Service
- Shipping Service
The orchestrator needs to coordinate these steps.
Defining Saga States
For our order processing saga, we can define states like:
ORDER_CREATED: Initial state.PAYMENT_PENDING: Waiting for payment confirmation.PAID: Payment successful.SHIPPING_PENDING: Waiting for shipment to be initiated.SHIPPED: Item has been shipped.CANCELLED: Order cancelled (due to failure or user action).
Defining Saga Events
And the events that can occur:
ORDER_PLACED: Customer places an order.PAYMENT_SUCCESS: Payment service confirms payment.PAYMENT_FAILED: Payment service reports failure.SHIPMENT_SUCCESS: Shipping service confirms shipment.SHIPMENT_FAILED: Shipping service reports an issue.ORDER_CANCELLED_REQUEST: User requests cancellation.
State Transition Logic
The core of a state machine is its transition logic: Current State + Event = New State (and possibly an action).
For example:
- If in
ORDER_CREATEDstate andORDER_PLACEDevent occurs, transition toPAYMENT_PENDING. - If in
PAYMENT_PENDINGstate andPAYMENT_SUCCESSevent occurs, transition toPAID.
This defines the predictable flow of your saga.
Code: Simple State Transition
Here's a simplified Java example demonstrating how states and events can drive transitions in an orchestrator.
Try running it to see the state changes!
public class SimpleSagaState {
public enum SagaStepState {
STARTED,
PROCESSING_PAYMENT,
PAYMENT_COMPLETE,
FAILED
}
private SagaStepState currentState;
public SimpleSagaState() {
this.currentState = SagaStepState.STARTED;
}
public SagaStepState getCurrentState() {
return currentState;
}
public void processEvent(String event) {
System.out.println("Event: " + event);
switch (currentState) {
case STARTED:
if ("OrderCreated".equals(event)) {
currentState = SagaStepState.PROCESSING_PAYMENT;
}
break;
case PROCESSING_PAYMENT:
if ("PaymentSuccess".equals(event)) {
currentState = SagaStepState.PAYMENT_COMPLETE;
} else if ("PaymentFailed".equals(event)) {
currentState = SagaStepState.FAILED;
}
break;
case PAYMENT_COMPLETE:
// After payment, might go to shipping, etc.
break;
case FAILED:
System.out.println("Saga already failed.");
break;
}
System.out.println("New State: " + currentState);
}
public static void main(String[] args) {
SimpleSagaState saga = new SimpleSagaState();
System.out.println("Initial State: " + saga.getCurrentState());
saga.processEvent("OrderCreated");
saga.processEvent("PaymentSuccess");
saga.processEvent("ShipmentInitiated"); // This event won't change state in this simplified example
System.out.println("Final State: " + saga.getCurrentState());
}
}Compensation with States
One of the biggest advantages of using state machines for sagas is how they simplify compensation logic.
If a service fails, the orchestrator receives a 'failed' event. Based on the current state, the state machine can determine which compensation actions need to be triggered to reverse previous successful steps.
For example, if in PAID state and SHIPMENT_FAILED occurs, the state machine can transition to CANCELLED and trigger a refund.
State Transition Question
Consider an order saga using a state machine. The order is currently in the PAYMENT_PENDING state.
If the orchestrator receives a PAYMENT_FAILED event, what is the most appropriate next state for the saga, typically indicating compensation?
Recap: States for Orchestration
In this lesson, we explored how state machines are crucial for building robust saga orchestrators.
- They provide a clear model for tracking saga progress.
- States, Events, and Transitions define the saga's flow.
- They simplify handling complex logic, especially for compensation.
By explicitly defining states and transitions, you create predictable and resilient distributed transactions.
Lerne Microservices Communication Patterns (Saga, Circuit Breaker) mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 12
- Lektionen
- 48
Häufig gestellte Fragen
Ist die Lektion „Zustandsautomaten für die Orchestrierung“ kostenlos?
Ja — der vollständige Text von „Zustandsautomaten für die Orchestrierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Microservices Communication Patterns (Saga, Circuit Breaker)-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Microservices Communication Patterns (Saga, Circuit Breaker)-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zustandsautomaten für die Orchestrierung“?
Wenden Sie Konzepte von Zustandsautomaten an, um robuste und vorhersehbare Saga-Orchestratoren zu erstellen, die den Transaktionsfortschritt verfolgen. Du übst Microservices Communication Patterns (Saga, Circuit Breaker) mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Microservices Communication Patterns (Saga, Circuit Breaker) zu starten?
Keine Vorkenntnisse erforderlich. Microservices Communication Patterns (Saga, Circuit Breaker) auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Zustandsautomaten für die Orchestrierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Microservices Communication Patterns (Saga, Circuit Breaker)-Lektion Code schreiben und ausführen?
Ja. Jede Microservices Communication Patterns (Saga, Circuit Breaker)-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Saga-Orchestratoren entwerfen
- Zustandsautomaten für die Orchestrierung
- Implementierung mit einer Workflow-Engine
- Orchestrierte Sagas testen