Logical Clocks
Định nghĩa
Logical Clocks (Đồng hồ logic) là cơ chế gán số thứ tự đơn điệu (monotonic counter) cho các sự kiện trong hệ thống phân tán để theo dõi mối quan hệ nguyên nhân - kết quả (causality / happened-before relationship) giữa chúng mà không dựa vào đồng hồ vật lý của máy tính.
Cách hiểu bằng lời của tôi
Đồng hồ vách tường (physical wall-clock) trên các server phân tán luôn bị lệch (clock drift) do sai số phần cứng và NTP sync. Do đó, ta không thể dùng timestamp vật lý để biết sự kiện diễn ra trước hay sau sự kiện . Logical Clock thay thế thời gian thực bằng việc đếm trình tự sự kiện: nếu dẫn đến , thì .
Quan hệ Happened-Before ()
Leslie Lamport định nghĩa quan hệ :
- Nếu và thuộc cùng một tiến trình và xảy ra trước , thì .
- Nếu là hành động gửi tin nhắn và là hành động nhận tin nhắn đó, thì .
- Nếu và , thì (tính bắc cầu).
- Nếu hai sự kiện và không có quan hệ bắc cầu với nhau, chúng được coi là song song (concurrent: ).
Biến thể phổ biến
- Lamport Timestamps: Cung cấp thứ tự bán phần (partial ordering) đơn giản với chi phí cực thấp (chỉ 1 số integer).
- Vector Clocks: Lưu mảng integer tương ứng với từng node, cho phép phát hiện chính xác các sự kiện xung đột (concurrent updates).
- TrueTime: Tiếp cận hybrid bằng cách kết hợp phần cứng đồng hồ nguyên tử/GPS để giới hạn độ bất định thời gian thực.
Trade-off
- Ưu điểm: Đảm bảo nguyên lý causality tuyệt đối mà không cần đồng bộ đồng hồ vật lý phức tạp.
- Nhược điểm: Không cung cấp thông tin về thời gian thực (ví dụ: sự kiện xảy ra cách đây bao nhiêu phút/giờ).