Backend nền tảng
E4 · Saga Pattern
Transaction phân tán xuyên microservices qua chuỗi bước local + compensating transaction khi lỗi.
E4 · Nâng cao
Đặt tour du lịch: đặt vé máy bay → khách sạn → xe. Nếu khách sạn hết phòng thì hủy vé máy bay đã đặt (bù trừ), thay vì khóa tất cả cùng lúc.
Cốt lõi
- Transaction phân tán xuyên microservices qua chuỗi bước local + compensating transaction khi lỗi.
- Choreography: các service tự phản ứng qua event. Orchestration: có một orchestrator điều phối.
Đánh đổi
Thay 2PC (chậm, khóa lâu) trong microservices; đổi lại chỉ đạt eventual consistency.
Trong thực tế
Order → Payment → Inventory; Saga đặt chuyến của Uber.
Bug thường gặp
Bước bù trừ (hoàn tiền) lỗi mà không có retry → đơn đã hủy nhưng tiền không được hoàn.
Tự hỏi lại
Khi nào chọn Orchestration thay vì Choreography?