Hệ thống Dữ liệu Phân tán/Module 4 — Transaction phân tán: tổng quan
20/38
Bài 20 / 38~10 phútTransaction phân tánMiễn phí lượt xem

Module 4 — Transaction phân tán: tổng quan

Từ giao dịch trên một node tới nhiều node: anomaly & serializability, two-phase commit, và vì sao thường nên TRÁNH distributed transaction.

TL;DR: Một transaction gộp nhiều thao tác thành một đơn vị "hoặc-tất-cả-hoặc-không" (atomicity) và cô lập khỏi giao dịch khác (isolation) — bạn đã học ở khoá SQL cho một node. Khi dữ liệu nằm trên nhiều node (do replication + partitioning), hai đảm bảo đó khó hơn hẳn: atomicity đòi mọi node cùng commit hoặc cùng huỷ dù mạng/máy có thể chết giữa chừng, và isolation đòi ngăn các anomaly xuyên node. Module này đi qua: anomaly & serializability (các cách hai giao dịch đồng thời phá nhau), two-phase commit (2PC) — cơ chế kinh điển cho atomic commit xuyên node, và vì sao 2PC đắt + blocking dẫn tới xu hướng tránh distributed transaction bằng saga/idempotency.

Vì sao module này tồn tại

Replication và partitioning phân dữ liệu ra nhiều node. Nhưng nhiều thao tác nghiệp vụ cần thay đổi nhiều mảnh cùng lúc, nguyên khối: chuyển tiền (trừ tài khoản A, cộng tài khoản B), đặt vé (giữ ghế + trừ tồn + tạo đơn). Nếu các mảnh đó nằm ở các node khác nhau, ta cần một cách để chúng cùng thành công hoặc cùng thất bại — không được trừ A mà không cộng B.

Đó là bài toán distributed transaction. Nó khó vì mọi "rắc rối phân tán" (mạng trễ, node chết giữa chừng — Module 5) đều tấn công đúng lúc commit. Module này cho bạn hiểu cơ chế (2PC), thấy vì sao nó đắt, và biết khi nào nên tránh nó thay vì dùng nó.

Sau module này bạn sẽ

  • Distinguish anomaly (lost update, write skew) và serializability trong bối cảnh phân tán
  • Explain two-phase commit (2PC) và vì sao nó blocking và đắt
  • Choose khi nào tránh distributed transaction bằng saga/idempotency

Lộ trình module

flowchart LR
  A["01 On ACID<br/>-> phan tan"] --> B["02 Anomaly<br/>& serializability"]
  B --> C["03 2PC<br/>blocking + dat"]
  C --> D["04 Tranh dist-txn<br/>saga/idempotency"]

Bắt đầu ở bài ôn ACID — nối từ khoá SQL và chỉ ra điều gì vỡ khi lên nhiều node. Rồi anomaly & serializability (chuẩn vàng của isolation). Rồi 2PC — cơ chế atomic commit xuyên node và điểm yếu chí mạng của nó. Khép bằng khi nào tránh: saga, idempotency, outbox.

Yêu cầu trước khi bắt đầu

  • Module 2 (Replication) + Module 3 (Partitioning) — hiểu vì sao dữ liệu trải nhiều node.
  • Bắt buộc có ích: ACID, isolation levels, anomaly ở khoá SQL (transactions) — module recall trực tiếp và mở rộng.

Cách học module này hiệu quả

  • Giữ một câu hỏi xuyên suốt: thao tác này có THẬT SỰ cần atomic xuyên node không? Rất nhiều bài toán tưởng cần lại giải được rẻ hơn bằng cách khác.
  • Nối liên tục về Module 5: 2PC "blocking" và các anomaly đều bắt nguồn từ "không phân biệt được node chậm với node chết".
  • Ghi nhớ kết luận thực dụng: distributed transaction (2PC) là công cụ đắt và mong manh; biết nó để hiểu vì sao ngành nghiêng về tránh nó.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên