Hệ thống Dữ liệu Phân tán/Module 1 — Tổng kết & cheat sheet
6/38
Bài 6 / 38~9 phútTư duy hệ dữ liệu quy mô lớnMiễn phí lượt xem

Module 1 — Tổng kết & cheat sheet

Recap bốn thước đo hệ dữ liệu: reliability, scalability, tail latency, maintainability. Cheat sheet một trang, glossary, pitfall tổng hợp và self-assessment.

TL;DR: Module 1 dựng ngôn ngữ đo cho cả track: reliability (chặn fault thành failure), scalability (mô tả tải bằng tham số), tail latency (đo bằng p99, không trung bình), maintainability (operability/simplicity/evolvability). Đây là trang để bookmark trước khi vào replication.

Đã đi qua những gì

Bốn bài đi từ "hệ có sai không" tới "sống với hệ dễ không". Reliability dạy phân biệt fault (bộ phận) vs failure (toàn cục) và vì sao redundancy độc lập là đòn chính. Scalability đổi câu hỏi mơ hồ "scale được không" thành định lượng theo load parameter, và so scale-up vs scale-out. Tail latency chỉ ra trung bình nói dối — phải đo bằng percentile, và tail bị khuếch đại khi fan-out. Maintainability khép lại bằng ba mặt mềm nhưng quyết định hệ sống bao lâu. Bốn thước đo này là bộ lọc để đánh giá mọi quyết định phân tán ở các module sau.

flowchart LR
  R["Reliability<br/>chan fault -> failure"] --> S["Scalability<br/>mo ta tai bang tham so"]
  S --> T["Tail latency<br/>do bang p99"]
  T --> M["Maintainability<br/>operability/simplicity/evolvability"]

🗺️ Cheat sheet

Khái niệmCốt lõiPitfall
Fault vs failureFault = bộ phận lệch spec; failure = cả hệ ngừng phục vụCố diệt mọi fault thay vì chặn leo thang
RedundancyNhân xác suất hỏng nhỏ — chỉ khi độc lậpBản dư dùng chung điểm chết (SPOF)
Ba loại faultPhần cứng (độc lập), phần mềm (tương quan), con người (lớn nhất)Tưởng phần cứng đáng lo nhất
Load parameterCon số mô tả tải: throughput, đọc/ghi, fan-outQuên fan-out → đánh giá sai tải
Scale-up vs outMáy mạnh hơn (trần) vs nhiều máy (phân tán)Scale-up như phản xạ, tích nợ
PercentilepN = N% request nhanh hơn ngưỡngĐo bằng trung bình → giấu tail
Tail amplificationFan-out N → độ trễ = chậm nhất → p99 đầu-cuối tệ hơnĐo p99 từng service, quên end-to-end
SLO/SLACam kết theo percentileCam kết "trung bình dưới X" (rỗng)
MaintainabilityOperability + simplicity + evolvabilityBỏ vì không đo được → nợ ẩn

📖 Glossary module

Thuật ngữĐịnh nghĩa 1 câu
FaultMột bộ phận lệch khỏi spec (đĩa hỏng, node treo).
FailureCả hệ ngừng cung cấp dịch vụ người dùng cần.
RedundancyCó sẵn bản dự phòng độc lập để một bản hỏng thì bản khác gánh.
Single point of failureĐiểm chết chung mà nó hỏng là mọi bản phụ thuộc cùng chết.
Load parameterĐại lượng số mô tả tải (request/s, tỉ lệ đọc/ghi, fan-out...).
Fan-outMột thao tác logic kéo theo nhiều thao tác thật.
Scale-up / scale-outMáy mạnh hơn / nhiều máy hơn.
Percentile (pN)Ngưỡng mà N% request nhanh hơn nó.
Tail latencyĐộ trễ ở đuôi phân phối (p99+) — nhóm người dùng tệ nhất.
Tail amplificationFan-out làm p99 đầu-cuối tệ hơn p99 từng thành phần.
SLO / SLAMục tiêu / cam kết mức dịch vụ, viết theo percentile.
Operability / Simplicity / EvolvabilityDễ vận hành / dễ hiểu (cắt phức tạp thừa) / dễ thay đổi.

⚠️ Pitfall tổng hợp

  • Diệt fault thay vì chịu fault: làm một thành phần "không bao giờ hỏng" → vẫn là SPOF. Đúng: giả định nó sẽ hỏng, đặt redundancy độc lập + failover.
  • Redundancy tương quan: chạy nhiều bản giống hệt để chống bug phần mềm (cùng bug → cùng chết). Đúng: săn và loại điểm chết chung.
  • Quên fan-out: mô tả tải chỉ bằng ghi logic. Đúng: đếm ghi thật (logic × fan-out).
  • Đo bằng trung bình: dashboard đẹp, tail hỏng. Đúng: p50/p95/p99(.9) end-to-end.
  • Bỏ maintainability vì không đo được: nợ ẩn lộ ra ở đội chậm dần. Đúng: coi nó là mục tiêu hạng nhất từ đầu.

✅ Self-assessment

Bạn đã đạt module này nếu trả lời được:

  • Phân biệt được fault vs failure và giải thích redundancy tăng reliability thế nào (và khi nào nó vô dụng)
    • Nếu chưa: đọc lại bài 01 mục 2-4.
  • Đo được độ trễ (response time) bằng percentile p50/p95/p99 và giải thích vì sao trung bình che tail latency
    • Nếu chưa: đọc lại bài 03 mục 2-4 (gồm tail amplification).
  • Chọn được chiến lược scaling (scale-up vs scale-out) theo tham số tải
    • Nếu chưa: đọc lại bài 02 mục 2, 4.
  • Đánh giá được maintainability của một hệ qua operability, simplicity, evolvability
    • Nếu chưa: đọc lại bài 04 mục 2-4.

🚀 What's next

Với bốn thước đo trong tay, Module 2 — Nhân bản bắt đầu phân tán thật: giữ cùng dữ liệu trên nhiều node. Bạn sẽ thấy replication cải thiện reliability (redundancy) và scalability (đọc từ nhiều bản), nhưng trả giá bằng độ phức tạp và độ trễ đồng bộ — đúng kiểu đánh đổi bốn thước đo module này dạy bạn nhìn ra.

📚 Tài liệu mở rộng

  • Sách: Designing Data-Intensive Applications (Martin Kleppmann) — Chương 1 là nguồn agnostic chuẩn cho cả bốn thước đo.
  • Paper: Jeffrey Dean & Luiz Barroso, "The Tail at Scale" (CACM 2013) — nền tảng về tail latency ở quy mô lớn.
  • Paper: Fred Brooks, "No Silver Bullet" (1986) — essential vs accidental complexity, gốc của simplicity.

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