Đi đến nội dung chính
VI
Trang chủ / Điều phối giao dịch phân tán bằng Saga và quy trình bền vững
08 thg 7, 2026 · Z-SOFT Admin · 10 phút đọc

Điều phối giao dịch phân tán bằng Saga và quy trình bền vững

Điều phối thanh toán, tồn kho và giao hàng bằng quy trình lưu được trạng thái, có thử lại và xử lý bù trừ.

Xem tất cả bài viết

Tóm tắt: Khi một nghiệp vụ đi qua nhiều dịch vụ, độ tin cậy đến từ quy trình bền vững chứ không phải một khóa dùng chung.

Thuật ngữ chính: Saga: chuỗi bước nghiệp vụ có khả năng bù trừ; compensation: hành động xử lý hậu quả khi một bước trước đã thành công; durable workflow: quy trình lưu lại được trạng thái để tiếp tục sau sự cố.

Bài toán

Thanh toán, giữ hàng và giao hàng không thể cùng nằm trong một giao dịch cơ sở dữ liệu. Một bước có thể đã thành công dù phản hồi bị mất. Hệ thống phải biết tiếp tục, thử lại hoặc thực hiện hành động bù trừ.

Vì sao cách làm đơn giản chưa đủ

Two-phase commit hiếm khi khả dụng giữa các thành phần phụ thuộc SaaS và nếu có cũng ghép availability của chúng. Durable orchestrator xem hoàn thành một phần là trạng thái bình thường.

Compensation không phải lúc nào cũng đảo ngược. Refund sau khi payment đã chịu phí có thể tạo kết quả tài chính khác và cần chính sách rõ ràng.

Luồng xử lý

Command
khởi tạo workflow
máy trạng thái
lưu từng transition
Activity
gọi dịch vụ idempotent
Compensation
phục hồi nghiệp vụ
Workflow lưu intent và tiến độ. Sau đó, điều khiển từng activity tới khi thành công, compensation hoặc cần con người xử lý.

Quyết định kiến trúc

Orchestrate luồng quan trọng

Workflow trung tâm làm rõ sequence, deadline và thao tác hỗ trợ. Choreography vẫn phù hợp cho phản ứng độc lập.

Lưu trạng thái trước khi hành động

Ghi transition dự định trước khi gọi activity để sau restart biết phần nào còn thiếu.

Định nghĩa semantic idempotency

Dùng định danh order hoặc operation, không dùng yêu cầu ID ngẫu nhiên của mỗi thử lại, để một hành động nghiệp vụ chỉ có một kết quả.

Phân tích chuyên sâu

máy trạng thái là mô hình sản phẩm

Pending, confirmed, cancelled và requires-rà soát phải có ý nghĩa chính xác với khách hàng. Support, finance và engineering cần dùng chung ngôn ngữ.

Công việc con người nằm trong thiết kế

Một số ngoại lệ không thể tự động an toàn. Manual task cần người phụ trách, deadline, evidence và resume action vẫn idempotent.

Các bước triển khai

  1. Mô hình hóa business trạng thái, deadline và terminal kết quả trước khi viết activity.
  2. Gán stable operation ID và cơ chế tra kết quả idempotent cho mỗi activity.
  3. Xem compensation là hành động nghiệp vụ có sự cố và audit trail riêng.

Ví dụ kỹ thuật: Workflow đơn hàng bền vững

workflow.save(state = 'RESERVING', version = 4)
reservation = inventory.reserve(orderId, operationId)
workflow.save(state = 'CHARGING', reservationId)
charge = payments.charge(orderId, operationId)
workflow.save(state = 'CONFIRMED', chargeId)

Khi replay, kết quả activity được tra bằng operation ID. Workflow không được tính lại giá trị nondeterministic như thời gian hiện tại nếu chưa ghi nó vào history.

Các tình huống lỗi cần tính trước

  • Thanh toán thành công nhưng phản hồi bị mất.
  • Compensation lỗi và cần thử lại sau hoặc quyết định thủ công.
  • Hai workflow instance tranh cùng một business aggregate.

Tín hiệu cần giám sát

Tín hiệuÝ nghĩa
Tuổi workflow theo trạng tháiTìm hành trình khách hàng bị kẹt hoặc quá deadline.
Số lần và độ trễ của activityPhát hiện thành phần phụ thuộc bất ổn cùng thử lại amplification.
Tỷ lệ compensation và kiểm tra thủ côngThể hiện chi phí ngoại lệ kỹ thuật lẫn nghiệp vụ.

Cách kiểm chứng thiết kế

  • Làm mất phản hồi sau mỗi activity thành công và chứng minh workflow vẫn hội tụ.
  • Restart orchestrator ở mọi trạng thái đã lưu.
  • Buộc compensation thất bại và kiểm tra alert cùng xử lý thủ công.

Kế hoạch triển khai an toàn

Mirror một luồng hiện có vào workflow nhưng chưa điều khiển tác động phụ. So sánh history. Sau đó, chuyển từng activity. Giữ fallback hữu hạn và báo cáo đối soát tới khi đường mới vượt qua diễn tập thành phần phụ thuộc cùng restart.

Checklist trước khi đưa vào vận hành

  • Workflow history bền vững và replay xác định.
  • Timeout thể hiện business deadline, không phải giới hạn HTTP tùy ý.
  • Operator có thể xem, thử lại, compensate hoặc escalate an toàn.

Kết luận

Saga thành công khi partial progress được nhìn thấy và phục hồi, không phải khi giả vờ hệ phân tán là atomic.

Đối tác công nghệ chiến lược

Biến bài toán kinh doanh thành một lộ trình rõ ràng.

Trao đổi trực tiếp với đội ngũ Z-SOFT về mục tiêu, hiện trạng và bước đi phù hợp tiếp theo.

Đặt lịch tư vấn