Replication: nhiều bản sao để đọc
Một primary nhận ghi, các replica đọc (primary–replica). Dữ liệu được copy gần như tức thì. Giải phóng tải đọc, và có bản dự phòng khi primary chết.
Replica nhận dữ liệu sau primary vài mili-giây. Nếu user vừa tạo xong mà đọc qua replica, có thể chưa thấy. Giải pháp: đọc ghi tức thì qua primary (read-your-writes), hoặc chấp nhận nhất quán cuối.
Sharding: chia dữ liệu theo chiều ngang
Sharding chia bảng lớn thành nhiều phần (shard) trên nhiều máy. Mỗi shard chứa một phần dữ liệu theo khoá shard (ví dụ user_id). Tăng dung lượng và ghi song song.
| Kỹ thuật | Giải quyết | Đánh đổi |
|---|---|---|
| Replication | Tải đọc, dự phòng | Trễ nhân bản, write vẫn 1 chỗ |
| Sharding | Dung lượng + tải ghi | Query xuyên shard khó, rebalance khổ sở |
| Cache | Tải đọc nóng | Dữ liệu cũ, phức tạp invalidation |
| Index | Truy vấn nhanh hơn | Ghi chậm hơn, tốn bộ nhớ |
CAP theorem: chọn hai, hy sinh một
Consistency (mọi nơi cùng một dữ liệu), Availability (luôn trả lời được), Partition tolerance (chịu mạng chia cắt). Khi mạng chập chờn (luôn xảy ra), bạn phải chọn giữa C và A.
| Chọn | Ví dụ hệ thống | Hệ quả |
|---|---|---|
| CP — ưu tiên nhất quán | Tài khoản ngân hàng | Khi mạng chia cắt, chấp nhận từ chối (unavailable) |
| AP — ưu tiên sẵn sàng | News feed, giỏ hàng | Dữ liệu có thể lệch tạm thời, gộp lại sau |
| CA — hiếm khi đạt | Hệ thống một máy | Không chịu partition — thực tế hiếm dùng |
❓ Hệ thống ngân hàng khi mạng giữa 2 datacenter bị đứt. Nên ưu tiên gì?
- Phân biệt replication và sharding
- Biết read-your-writes và trễ nhân bản
- Thuộc 3 chữ cái của CAP
- Chọn CP hay AP theo nghiệp vụ