คืออะไร รูปแบบ Saga
ธุรกรรมแบบกระจายผ่านลำดับเหตุการณ์
รูปแบบ Saga คือรูปแบบสำหรับจัดการธุรกรรมแบบกระจายผ่านลำดับของธุรกรรมท้องถิ่นพร้อมการดำเนินการชดเชยเมื่อเกิดความล้มเหลว
ปัญหา
- ไมโครเซอร์วิสมีฐานข้อมูลของตัวเอง
- ธุรกรรม ACID แบบคลาสสิกเป็นไปไม่ได้
- ต้องการความสอดคล้องระหว่างบริการ
ประเภท Saga
- คอรีโอกราฟี — บริการแลกเปลี่ยนเหตุการณ์
- ออร์เคสตราเชัน — ผู้ประสานงานกลางจัดการ
คอรีโอกราฟี
- บริการสมัครรับเหตุการณ์ของกันและกัน
- แต่ละบริการเผยแพร่ผลลัพธ์
- ไม่มีจุดล้มเหลวเดียว
- ยากต่อการติดตามสถานะ
ออร์เคสตราเชัน
- ผู้ประสานงาน Saga จัดการโฟลว์
- เรียกบริการตามลำดับ
- ง่ายต่อการติดตามและดีบัก
- ความเสี่ยงของจุดล้มเหลวเดียว
ธุรกรรมชดเชย
- ยกเลิกขั้นตอนที่เสร็จสมบูรณ์แล้ว
- ต้องเป็น idempotent
- การยกเลิกเชิงความหมาย (ไม่ใช่ rollback)
- ตัวอย่าง: คืนเงินแทนการยกเลิก