Hệ thống Dữ liệu Phân tán/Module 2 — Nhân bản (Replication): tổng quan
7/38
Bài 7 / 38~10 phútNhân bản (replication)Miễn phí lượt xem

Module 2 — Nhân bản (Replication): tổng quan

Giữ cùng dữ liệu trên nhiều node để tăng tin cậy, đọc gần, và chịu lỗi. Ba kiến trúc: single-leader, multi-leader, leaderless — và bài toán khó nhất: giữ các bản đồng bộ.

TL;DR: Replication là giữ cùng một dữ liệu trên nhiều node. Lý do: chịu lỗi (một node chết vẫn còn bản khác — chính là redundancy ở Module 1), đọc gần người dùng (giảm độ trễ), và chia tải đọc ra nhiều bản. Cái khó không phải sao chép mà là giữ các bản đồng bộ khi có ghi — và mạng thì trễ, node thì có thể chết. Module này đi qua ba kiến trúc theo thứ tự phức tạp tăng dần: single-leader (một bản nhận ghi, các bản còn lại theo sau), multi-leader (nhiều bản nhận ghi — sinh xung đột), và leaderless (mọi bản bình đẳng, dùng quorum). Xuyên suốt là một khái niệm bạn sẽ giải thích được và dùng lại: replication lag và các đảm bảo nhất quán yếu đi kèm nó.

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

Module 1 kết luận: muốn tin cậy và mở rộng, phải đặt dữ liệu lên nhiều máy. Replication là hình thức đầu tiên và cơ bản nhất của việc đó — nhân dữ liệu ra nhiều bản giống nhau. Nó cải thiện cùng lúc reliability (redundancy), scalability (đọc từ nhiều bản), và độ trễ (đọc từ bản gần).

Nhưng "nhiều bản giống nhau" là lời hứa khó giữ khi dữ liệu thay đổi: lúc một bản vừa nhận ghi mới, các bản khác còn dữ liệu cũ. Toàn bộ độ khó — và mọi kiến trúc trong module — sinh ra từ câu hỏi: giữ các bản đồng bộ tới mức nào, và trả giá gì?

Sau module này bạn sẽ

  • Compare single-leader, multi-leader, leaderless theo trade-off nhất quán và khả dụng
  • Explain replication lag và các đảm bảo read-your-writes, monotonic reads, consistent prefix reads
  • Design conflict resolution cho multi-leader và leaderless (LWW, vector clock, read repair)

Lộ trình module

flowchart LR
  SL["01-02 Single-leader<br/>+ replication lag"] --> ML["03 Multi-leader<br/>xung dot ghi"]
  ML --> LL["04 Leaderless<br/>quorum R+W>N"]
  LL --> C["05 Chon mo hinh<br/>theo workload"]

Bắt đầu ở bài Single-leader — kiến trúc đơn giản nhất, phổ biến nhất — và khái niệm cốt lõi replication lag đi kèm. Rồi multi-leader — cho phép ghi ở nhiều nơi, đổi lấy bài toán xung đột ghi. Rồi leaderless — bỏ luôn khái niệm leader, dùng quorum (bạn đã học ở track thuật toán). Khép bằng bài tổng hợp: chọn mô hình nào theo workload.

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

  • Module 1 (bốn thước đo) — replication là bài tập đầu tiên về cân bằng chúng.
  • Có ích: quorumvector clock (track Thuật toán — Phân tán), ACID/WAL (khoá SQL) — module sẽ recall tới.

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

  • Mỗi kiến trúc, hỏi đúng cặp câu Module 1: cải thiện thước đo nào, trả giá thước đo nào? Không có kiến trúc "tốt nhất", chỉ có "hợp workload".
  • Bám sát replication lag: gần như mọi đảm bảo nhất quán yếu (read-your-writes, monotonic reads) là cách sống chung với lag, không phải cách xoá nó.
  • Khi tới leaderless, nối thẳng về bài quorum đã học — module này là ứng dụng hệ thống của cơ chế đó.

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