Kiến trúc hệ thống 22/09/2026 7 phút

Discord lưu hàng nghìn tỷ tin nhắn thế nào: đánh bại hot partition và GC

Discord chứa hàng nghìn tỷ tin nhắn. Bài toán khó: một kênh nóng biến thành một partition khổng lồ, và GC của JVM Cassandra gây pause chết người. Cách họ giải: khoá phân mảnh (channel_id, bucket), chuyển sang ScyllaDB (C++, không GC), và data services Rust gộp request trùng. Kèm demo Go đo thật hai kỹ thuật cốt lõi.

Kiến trúc hệ thống 22/09/2026 6 phút

Consistent hashing: cách Amazon Dynamo chia dữ liệu mà không phải dời cả kho

Chia khoá cho N node bằng hash%N nghe hợp lý — cho tới khi thêm một node và gần như MỌI khoá phải chuyển chỗ. Amazon Dynamo (2007) giải bằng consistent hashing: thêm/bớt node chỉ dời ~1/N khoá. Đo thật trong Go: modulo dời 88,9% vs consistent hashing 14%, và virtual nodes kéo lệch tải từ 82× xuống 2,7×.

Kiến trúc hệ thống 22/09/2026 5 phút

Kafka và log phân tán: vì sao 'chỉ thêm vào cuối' ingest được hàng triệu message/giây

Kafka ghi xuống đĩa mà vẫn nhanh khủng khiếp. Bí quyết không phải phần cứng đắt tiền mà là một lựa chọn cấu trúc: log chỉ-thêm-vào-cuối biến mọi thao tác thành ghi tuần tự, cộng page cache và zero-copy. Đo thật trong Go: append tuần tự đạt 665 MB/s (5,4 triệu msg/s), nhanh 10× ghi ngẫu nhiên và 2× khi gộp.

Kiến trúc hệ thống 22/09/2026 6 phút

Uber tìm tài xế gần bạn thế nào: geospatial index chạy THẬT trên Redis GEO

Ghép khách với tài xế không thể so khoảng cách tới cả triệu tài xế mỗi lần. Bài này dựng THẬT một chỉ mục không gian trên Redis GEO (dùng geohash), nạp 500.000 tài xế và đo trực tiếp: GEOSEARCH trả lân cận đã sắp theo khoảng cách, 13.368 truy vấn/giây p50 3,6ms, index 42MB. Và vì sao Uber tự xây H3 lục giác.

Kiến trúc hệ thống 22/09/2026 6 phút

Dựng feed như Twitter/X: fanout khi ghi hay khi đọc, và bài toán người nổi tiếng

Dòng thời gian của bạn phải trả về tức thì dù bạn theo dõi hàng nghìn người. Đẩy tweet vào timeline mọi follower (push) khiến một sao 50 triệu follower tạo 50 triệu lần ghi cho một tweet. Gộp lúc đọc (pull) thì đọc quá đắt. Mô phỏng trong Go: mô hình lai rẻ hơn push ~10× và pull ~4,9×.

Kiến trúc hệ thống 22/09/2026 8 phút

Cloudflare giới hạn tần suất ở biên: dựng sliding window counter THẬT trên Redis

Rate limit ở biên phải chạy cho hàng triệu danh tính mà vừa chính xác vừa cực rẻ RAM. Fixed window cho lọt gấp đôi ở ranh giới; log chính xác ngốn RAM. Bài này dựng sliding window counter kiểu Cloudflare chạy THẬT trên Redis bằng script Lua nguyên tử — đo trực tiếp: fixed cho lọt 200, sliding chặn ở 102; và MEMORY USAGE thật 96 byte vs hơn 1 MB.