
1. Distributed Counter là gì?
Distributed counter là một cấu trúc dữ liệu cho phép nhiều node trong một hệ thống phân tán cùng thay đổi giá trị của bộ đếm (tăng hoặc giảm). Tuy nhiên, việc triển khai thực tế không hề đơn giản vì những nguyên nhân sau:
2. Vì sao Distributed Counter phức tạp?
Giả sử có hai node A và B cùng cập nhật bộ đếm, giá trị ban đầu là 5:
Kết quả cuối cùng vẫn là 6, trong khi lẽ ra phải là 7.
Tình huống này mới chỉ với 2 node, nếu có hàng nghìn hoặc hàng triệu node cập nhật đồng thời thì vấn đề sẽ nghiêm trọng hơn nhiều.
Do đó, bài toán distributed counter đòi hỏi sự cân bằng giữa đồng thời, chịu lỗi, hiệu suất và tránh mất mát hay sai lệch dữ liệu.
3. Một số giải pháp cho Distributed Counter
3.1 Strong Consistency – Two-Phase Commit (2PC)
2PC là giao thức dùng để đảm bảo tính nhất quán mạnh trong hệ thống phân tán. Nó gồm 2 bước:
Ứng dụng phù hợp:
3.2 Quorum-based Counter
Dựa trên nguyên tắc đa số để cân bằng giữa nhất quán và hiệu suất.
Phù hợp khi:
3.3 CRDT (Conflict-free Replicated Data Types)
CRDT là cấu trúc dữ liệu cho phép nhiều node cập nhật độc lập và sau đó tự hợp nhất dữ liệu mà không gây xung đột.
Nguyên tắc:
Ưu điểm:
3.4 Probabilistic Counters – HyperLogLog
Phương pháp đếm gần đúng, dùng ít bộ nhớ, phù hợp với dữ liệu cực lớn
.
Ứng dụng:
3.5 Gossip-based Protocol
Cơ chế truyền thông tin giống lan truyền tin đồn:
Phù hợp khi:
4. CAP Theorem và Distributed Counter
Theo CAP: không thể vừa nhất quán mạnh, vừa sẵn sàng, vừa chịu phân vùng mạng cùng lúc.
Bảng so sánh:
Loại Counter |
Ưu tiên C/A/P |
Ứng dụng |
Đánh đổi |
Strong Consistency (2PC) |
CP |
Tài chính, đặt vé |
Giảm tính sẵn sàng khi có phân vùng mạng |
Quorum-based |
CP hoặc AP tùy cấu hình |
Lượt thích, lượt xem MXH |
Linh hoạt nhưng cần cấu hình cân đối |
CRDT |
AP |
Chỉnh sửa hợp tác, đo lường |
Nhất quán dần dần, triển khai phức tạp |
Gossip-based |
AP |
Giám sát hệ thống, mạng P2P |
Tiêu tốn băng thông, nhất quán dần dần |
Ví dụ: Yahoo! PNUTS sử dụng “per-record timeline consistency” để cân bằng giữa các mức độ nhất quán và hiệu suất ở các region khác nhau.
5. Kết luận
Distributed counter là một thách thức lớn trong hệ thống phân tán do phải xử lý đồng thời nhiều yêu cầu, đảm bảo sẵn sàng và nhất quán. Mỗi giải pháp có ưu/nhược điểm riêng và cần lựa chọn phù hợp với yêu cầu của ứng dụng.
Các bài viết sau sẽ hướng dẫn chi tiết cách triển khai từng loại counter.