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

Module 1 — Tư duy hệ dữ liệu quy mô lớn: tổng quan

Trước khi phân tán dữ liệu, phải biết đo nó: reliability, scalability, tail latency, maintainability. Bốn thước đo định hình mọi quyết định trong track.

TL;DR: Một hệ dữ liệu tốt không phải "chạy được" mà là tin cậy, mở rộng được, và bảo trì được — ba mục tiêu của DDIA Chương 1. Module này dựng bốn thước đo bạn sẽ dùng suốt track: reliability (chịu lỗi, phân biệt fault vs failure), scalability (mô tả tải bằng tham số, không nói "nhanh/chậm" chung chung), tail latency (đo bằng p95/p99 thay vì trung bình), và maintainability (vận hành/đơn giản/tiến hoá được). Chưa có gì "phân tán" ở đây — nhưng mọi lý do để phân tán (replication, partitioning) đều bắt nguồn từ bốn thước đo này.

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

Cả track này bàn cách đặt dữ liệu lên nhiều máy — nhân bản, phân mảnh, đồng thuận. Nhưng trước khi hỏi "phân tán thế nào", phải trả lời "phân tán để đạt điều gì". Câu trả lời luôn là một trong bốn: tin cậy hơn, mở rộng hơn, độ trễ đuôi tốt hơn, dễ bảo trì hơn.

Nếu không có ngôn ngữ chung để đo bốn thứ đó, mọi tranh luận thiết kế sẽ mắc kẹt ở cảm tính ("hệ này nhanh", "chỗ kia hay lỗi"). Module này cho bạn ngôn ngữ đó — để phần còn lại của track lập luận được bằng số và bằng trade-off, không bằng cảm giác.

Sau module này bạn sẽ

  • Distinguish fault vs failure và giải thích redundancy tăng reliability thế nào
  • Measure độ trễ (response time) bằng percentile (p50/p95/p99) và giải thích vì sao trung bình che giấu tail latency
  • Choose chiến lược scaling (scale-up vs scale-out) theo tham số tải
  • Evaluate maintainability của một hệ qua operability, simplicity, evolvability

Lộ trình module

flowchart LR
  R["01 Reliability: chiu loi"] --> S["02 Scalability: mo ta tai"]
  S --> T["03 Tail latency: do bang p99"]
  T --> M["04 Maintainability: van hanh + tien hoa"]

Bốn bài đi từ "hệ có sai không" (reliability) sang "hệ chịu được bao nhiêu tải" (scalability), rồi "tải đó cảm thấy thế nào ở đuôi" (tail latency — mặt định lượng của scalability), khép lại bằng "sống với hệ này ra sao qua thời gian" (maintainability). Ba bài đầu định lượng; bài cuối là tư duy vận hành. Bắt đầu ở bài Reliability.

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

  • Không cần kiến thức phân tán trước — đây là bài mở đầu track.
  • Có ích nếu đã quen khái niệm độ trễ/thông lượng (khoá Networking) và cache (khoá Máy tính cho Lập trình viên) — các bài sẽ recall tới.

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

  • Bốn thước đo này là bộ lọc cho mọi bài sau: khi học replication hay partitioning, luôn hỏi "cái này cải thiện thước đo nào, trả giá thước đo nào".
  • Ở bài tail latency, tự tính p99 trên một dãy số nhỏ bằng tay trước khi đọc đáp án — cảm giác "trung bình nói dối" chỉ thấm khi tự làm.
  • Đừng học thuộc định nghĩa; học để phân biệt (fault vs failure, p50 vs p99, scale-up vs scale-out) — đó là thứ dùng được.

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