Thiết kế hệ thống mạng xã hội 200tr Users - System Design | Trần Quốc Huy - Wecommit

Tóm tắt ngắn:
Video của Trần Quốc Huy và Trung Nam từ Wecommit tập trung vào thiết kế hệ thống cho mạng xã hội với 200 triệu người dùng. Họ thảo luận về những thách thức khi thiết kế hệ thống chịu tải lớn, đặc biệt là khi xử lý bài đăng của người dùng có lượng follower khổng lồ (ví dụ như Donald Trump). Các công nghệ và khái niệm được đề cập bao gồm: database (primary và secondary data store, key-value store), message queue (MQ), cache, CDN, và các loại database như Cassandra. Video trình bày một quy trình thiết kế hệ thống, bắt đầu từ mô hình đơn giản rồi tối ưu hóa từng bước bằng cách phân loại người dùng (online, active, inactive), tách các thành phần hệ thống, và sử dụng các kỹ thuật cache và CDN để giảm tải cho database. Phương pháp thiết kế được nhấn mạnh là tư duy “chia để trị”, tối ưu từng thành phần nhỏ rồi tổng hợp lại thành hệ thống lớn.
Tóm tắt chi tiết:
Video được chia thành các phần chính:
-
Giới thiệu bài toán: Video đặt ra bài toán thiết kế hệ thống mạng xã hội có thể xử lý bài đăng của người dùng có hàng trăm triệu follower mà không bị sập. Đây là một bài toán kinh điển trong System Design.
-
Phân tích mô hình cơ bản: Họ trình bày một mô hình đơn giản gồm
Post Service
(chịu trách nhiệm đăng bài),Timeline Service
(chịu trách nhiệm hiển thị dòng thời gian),Primary Data Store
(lưu thông tin bài đăng),Secondary Data Store
(dữ liệu đọc), vàMessage Queue
(MQ) để phân phối thông tin bài đăng. Tuy nhiên, mô hình này không hiệu quả với người dùng có lượng follower khổng lồ. -
Tối ưu hóa hệ thống: Để giải quyết vấn đề hiệu năng, họ đề xuất các giải pháp:
- Phân loại người dùng: Chia người dùng thành các nhóm (online, active, inactive) để giảm tải cho
Post Service
. Tuy nhiên, cách này gây ra vấn đề dữ liệu không nhất quán cho người dùng active chuyển sang online. - Thêm trường
isKOL
: Thêm trường này vào database để xác định người dùng có lượng follower lớn (KOL). Chỉ cập nhật bài đăng của KOL cho người dùng online đang theo dõi họ. - Interval time: Đặt khoảng thời gian để cập nhật dữ liệu từ
Secondary Data Store
, giảm tần suất truy vấn. - Cache thông tin người dùng theo dõi: Cache thông tin người dùng đang theo dõi KOL để giảm tải cho
Secondary Data Store
. - Tách database: Tách database lưu thông tin người dùng theo dõi ra khỏi database lưu bài đăng để giảm tải.
- Tối ưu database: Chọn database phù hợp (ví dụ Cassandra) và tối ưu cấu hình để tăng tốc độ ghi. Sử dụng kỹ thuật nén ảnh để giảm dung lượng lưu trữ. Sử dụng CDN để phân phối nội dung tĩnh.
- Phân loại người dùng: Chia người dùng thành các nhóm (online, active, inactive) để giảm tải cho
-
Quy trình thiết kế hệ thống: Họ tóm tắt quy trình thiết kế thành 4 bước:
- Phân tích yêu cầu chức năng và bài toán.
- Thiết kế hệ thống đơn giản nhất đáp ứng yêu cầu chức năng.
- Phân tích yêu cầu phi chức năng (khả năng mở rộng, hiệu năng, tính sẵn sàng).
- Cập nhật/thiết kế lại hệ thống để đáp ứng yêu cầu phi chức năng.
-
Kết luận: Video nhấn mạnh tư duy "chia để trị" trong thiết kế hệ thống, bắt đầu từ mô hình đơn giản rồi tối ưu từng bước dựa trên phân tích yêu cầu phi chức năng. Họ khuyến khích người xem áp dụng tư duy này trong các dự án của mình. Họ cũng đề cập đến việc tối ưu hóa từng thành phần của hệ thống, từ việc chọn database phù hợp đến việc sử dụng các kỹ thuật cache và CDN. Một câu nói đáng chú ý là: "cứ tối ưu theo cách thức là chỗ nào có vấn đề, chỗ nào khả năng bị
we
hoặc là chỗ nào nó đang bị chọc vào database nhiều quá thì ta tìm cách ta tối ưu".