Vector Clocks
Định nghĩa
Vector Clocks là phần mở rộng của Lamport Timestamps trong đó mỗi tiến trình duy trì một mảng (vector) kích thước (với là số lượng tiến trình trong hệ thống). Kỹ thuật này cho phép phát hiện chính xác mối quan hệ nguyên nhân - kết quả (causality) và các sự kiện ghi song song xung đột (concurrent updates / causal conflicts).
Quy tắc cập nhật
Cho hệ thống gồm tiến trình:
- Ban đầu: với mọi .
- Sự kiện nội bộ: tăng giá trị bản thân: .
- Gửi tin nhắn: tăng và gửi kèm vector trong tin nhắn .
- Nhận tin nhắn: Khi nhận tin nhắn chứa vector :
- Với mọi : .
- Tăng phần tử bản thân: .
So sánh Vector & Phát hiện Xung đột
Cho hai vector và :
- nếu với mọi .
- nếu và tồn tại ít nhất một mà (tức ).
- Concurrent Conflict: Nếu và , hai sự kiện là song song (). Hệ thống phát hiện xung đột và yêu cầu ứng dụng tự resolve (ví dụ: Amazon Dynamo sibling resolution).
Trade-off
- Ưu điểm: Phát hiện 100% sự kiện xung đột và causality hai chiều ().
- Nhược điểm: Kích thước vector tăng tuyến tính theo số lượng node , gây tốn băng thông và bộ nhớ khi lên tới hàng nghìn node.