تصميم Sagas مدفوعة بالأحداث
صمّموا تدفق Saga بالتنسيق اللامركزي باستخدام الأحداث لتحفيز الإجراءات عبر خدمات مصغّرة مختلفة.
تصميم Sagas مدفوعة بالأحداث درس مجاني في Microservices Communication Patterns (Saga, Circuit Breaker) على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Microservices Communication Patterns (Saga, Circuit Breaker)، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Microservices Communication Patterns (Saga, Circuit Breaker) 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Event-Driven Saga Design
Welcome! In this lesson, we'll learn how to design the flow of a Choreography Saga. This pattern helps manage complex business transactions that span multiple services.
We'll focus on using events as the primary way services communicate and trigger each other's actions.
Choreography Refresher
Remember Choreography Sagas? In this style, services communicate directly by publishing and subscribing to events.
- No central orchestrator: Services react to events from others.
- Decentralized decisions: Each service decides its next step based on the event it receives.
Our Business Scenario
Let's design a saga for an "Online Order Placement" system. This common scenario involves several steps across different microservices:
- Customer places order.
- Inventory is checked and reserved.
- Payment is processed.
- Order is shipped.
Identifying Core Saga Steps
For our "Order Placement" saga, we can break it down into these main steps, each potentially handled by a different service:
- Order Service: Creates the order.
- Inventory Service: Reserves items.
- Payment Service: Processes payment.
- Shipping Service: Schedules shipment.
Events Drive the Flow
In a choreography saga, each step is initiated by an event. When one service completes its task, it publishes an event.
Other services, interested in that event, subscribe to it and react accordingly. This creates a chain reaction.
Kicking Off the Saga
Every saga needs a starting point. For our "Order Placement," the Order Service initiates the process.
When a customer places an order, the Order Service creates it and publishes an OrderCreatedEvent.
Inventory Reacts to Order
The Inventory Service subscribes to OrderCreatedEvent. Upon receiving it, it attempts to reserve the items for the order.
After processing, it publishes either an InventoryReservedEvent or an InventoryFailedEvent.
class OrderCreatedEvent {
String orderId;
String customerId;
// ... item details
}
class InventoryService {
public void handleOrderCreated(OrderCreatedEvent event) {
System.out.println("Inventory Service: Received OrderCreatedEvent for " + event.orderId);
// Logic to reserve items...
boolean success = true; // Assume success for now
if (success) {
System.out.println("Inventory Service: Items reserved. Publishing InventoryReservedEvent.");
// In a real system, publish InventoryReservedEvent
} else {
System.out.println("Inventory Service: Inventory failed. Publishing InventoryFailedEvent.");
// In a real system, publish InventoryFailedEvent
}
}
}
public class Main {
public static void main(String[] args) {
InventoryService inventory = new InventoryService();
OrderCreatedEvent newOrder = new OrderCreatedEvent();
newOrder.orderId = "ORD123";
newOrder.customerId = "CUST456";
inventory.handleOrderCreated(newOrder);
}
}Payment Reacts to Inventory
The Payment Service subscribes to InventoryReservedEvent. This means payment only proceeds if inventory is successfully reserved.
It processes the payment and then publishes either a PaymentProcessedEvent or a PaymentFailedEvent.
Shipping Reacts to Payment
Finally, the Shipping Service subscribes to PaymentProcessedEvent. It schedules the shipment only after payment is confirmed.
It then publishes an OrderShippedEvent to complete the main saga flow.
Planning for Rollbacks
What if a step fails? For example, if payment fails after inventory is reserved? In a choreography saga, we use compensation events.
The Payment Service would publish a PaymentFailedEvent. The Inventory Service would subscribe to this event and publish an InventoryReleasedEvent to undo its previous action.
Saga Flow Check
Consider our Order Placement saga. What is the correct sequence of events if the entire process is successful?
Recap: Designing Event Flows
We've learned how to design a choreography saga by breaking down a business transaction into steps.
- Each step publishes an event to trigger the next.
- We identified the initial event and subsequent events for a successful flow.
- We also briefly considered how compensation events are used to handle failures.
Next, we'll explore how message brokers facilitate this communication!
تعلم Microservices Communication Patterns (Saga, Circuit Breaker) مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 12
- الدروس
- 48
الأسئلة الشائعة
هل درس «تصميم Sagas مدفوعة بالأحداث» مجاني؟
نعم — نص درس «تصميم Sagas مدفوعة بالأحداث» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Microservices Communication Patterns (Saga, Circuit Breaker)، انتقل إلى CoddyKit PRO. تتضمن دورة Microservices Communication Patterns (Saga, Circuit Breaker) 4 دروس في المجموع.
ماذا ستتعلم في «تصميم Sagas مدفوعة بالأحداث»؟
صمّموا تدفق Saga بالتنسيق اللامركزي باستخدام الأحداث لتحفيز الإجراءات عبر خدمات مصغّرة مختلفة. تتمرن على Microservices Communication Patterns (Saga, Circuit Breaker) مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Microservices Communication Patterns (Saga, Circuit Breaker)؟
لا تُشترط خبرة سابقة. Microservices Communication Patterns (Saga, Circuit Breaker) على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تصميم Sagas مدفوعة بالأحداث»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Microservices Communication Patterns (Saga, Circuit Breaker) هذا؟
نعم. كل درس في Microservices Communication Patterns (Saga, Circuit Breaker) يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تصميم Sagas مدفوعة بالأحداث
- ناقل الأحداث ووسطاء الرسائل
- التعامل مع التعويض باستخدام الأحداث
- بناء مستهلكي أحداث قابلين للتنفيذ المتكرر