Post on 09-Jun-2015
Page 1Page 1
Các đồng hồ logicLogical Clocks
Distributed Systems
Trường Đại học Duy Tan – Khoa CNTT, Tổ Kỹ thuật mạng – 8/2009
Nguyen Minh Nhatnhatnam06@gmail.com - 0905125143
Page 2
Đồng hồ logic
Giả sử đối với dãy các thông điệp
- Tất cả các tiến trình có thể thỏa mãn việc sắp xếp thứ tự của các sự kiện- Đối với đồng hồ vật lý : Lấy thời gian trong ngày
Giả sử không có nguồn thời gian trung tâm
- Mỗi hệ thống duy trì đồng hồ riêng của chính mình- Không có chỉ thị của các sự kiện
+ Không có khái niệm happened-when
Page 3
Happened-before
Lamport ký hiệu “happened-before” :
- a b : sự kiện a đã xảy ra trước sự kiện bVí Dụ : a thông điệp được gửi đi, b: thông điệp nhận
Transitive:nếu a b và b c thì a c
Page 4
Đồng hồ logic và đồng qui(concurrency)
Giả định ta đã gán giá trị "đồng hồ" cho mỗi sự kiện :
– Nếu ab thì clock(a) < clock(b)– Thời gian không thể chạy ngược
Nếu a và b xảy ra trên các tiến trình khác nhau mà không trao đổi thông điệp, và sau đó không phải a b hoặc không b a là đúng
- Những sự kiện này được gọi là đồng qui
Page 5
Ví dụ về việc đếm sự kiện
• Cho 3 hệ thống: P0, P1, P2
• Các sự kiện :a, b, c, …
• Số lượt sự kiện truy cập cục bộ (địa phương) trên mỗi hệ thống
• Các hệ thống đôi khi giao tiếp với nhau
Page 6
Ví dụ về việc đếm sự kiện
a b
h i
k
P1
P2
P3
1 2
1 3
21
d f
g3
c
2
4 6
e5
j
Page 7
Ví dụ về việc đếm sự kiện
a b
i
kj
P1
P2
P3
1 2
1 3
21
d f
g3
c
2
4 6
Bad ordering:
e h
f k
h
e5
Page 8
Lamport’s algorithm
• Mỗi thông điệp mang một dấu thời gian của đồng hồ gởi
• Khi một tin nhắn đến:- nếu đồng hồ nhận < timestamp thông điệp thiết lập lại đồng hồ hệ thống để (message timestamp + 1)khác không phải làm gì
• Đồng hồ phải được cải tiến giữa hai sự kiện trong tiến trình trình như nhau
Page 9
Lamport’s algorithm
Thuật toán cho phép chúng ta duy trì thứ tự thời gian trong số các sự kiện liên quan - Partial ordering ( thứ tự từng phần )
Page 10
Ví dụ về việc đếm sự kiện
a b
i
kj
P1
P2
P3
1 2
1 7
21
d f
g3
c
2
4 6
6
7
h
e5
Page 11
Tóm lại
• Thuật toán cần nhu cầu truy cập phần mềm monotonically tăng
• ít nhất là có một gia số khi các sự kiện cần được timestamped xảy ra
• Mỗi sự kiện có một dấu thời gian Lamport gắn liền với nó
Đối với bất kỳ hai sự kiện, mà ab, : L (a) <L (b)
Page 12
Identical timestamps
ab, bc, …: trình tự các sự kiện tại địa phương
ic, fd , dg, … :Lamport áp đặt một quan hệ sendreceive
Các sự kiện đồng qui (ví dụ, a & i) có thể có những dấu thời gian tương tự ... hoặc không
a b
h i
kj
P1
P2
P3
1 2
1 7
71
d f
g3
c
6
4 6
e5
Page 13
Unique timestamps (total ordering)
Chúng ta có thể áp đặt mỗi dấu thời gian là duy nhất- Xác định toàn cầu hợp lý dấu thời gian (Ti, i)Ti đại diện cho dấu thời gian Lamport địa phươngi đại diện cho số quy trình (duy nhất trên toàn cầu)Ví dụ (địa chỉ máy, quá trình ID)
– So sánh timestamps:(Ti, i) < (Tj, j)
Nếu và chỉ nếuTi < Tj hoặc
Ti = Tj và i < j
Không liên quan đến các sự kiện sắp xếp
Page 14
Unique (totally ordered) timestamps
a b
i
kj
P1
P2
P3
1.1 2.1
1.2 7.2
7.31.3
d f
g3.1
c
6.2
4.1 6.1h
e5.1
Page 15
Phát hiện mối quan hệ nhân quả (Detecting causal relations)
If L(e) < L(e’)– Không thể kết luận rằng ee’
Hãy xem Lamport timestamps– Không thể kết luận là sự kiện có liên quan nhân
quả
Giải pháp: sử dụng một đồng hồ vector
Page 16
Vector clocksHệ thống đồng hồ vector được Fidge, Mattern và
Schmuck đề xuất. Rules:
1. Vector khởi tạo có giá trị 0 tại mỗi quá trình Vi [j] = 0 for i, j =1, …, N
2. Nhứng số gia tiến trình nguyên tố của các vector trong vector địa phương xảy ra trước khi sự kiện timestamping:
Vi [i] = Vi [i] +1
3. Thông điệp được gửi từ quá trình Pi với Vi gắn liền với nó.
4. Khi Pj nhận được tin nhắn, so sánh vectơ thành phần bởi nguyên tố và thiết lập véc tơ địa phương theo:
Vj [i] = max(Vi [i], Vj [i]) for i=1, …, N
Page 17
Comparing vector timestamps
DefineV = V’ nếu V [i ] = V’[i ] for i = 1 … N V V’ nếu V [i ] V’[i ] for i = 1 … N
Cho 2 sự kiện bất kỳ e, e’Nếu e e’ thì V(e) < V(e’)
• Cũng giống như thuật toán của Lamport
Nếu V(e) < V(e’) thì e e’
Hai sự kiện đồng qui nếu (H1||H2 )không V(e) V(e’) hoặc không V(e’) V(e)
Page 18
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
Page 19
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0)
Page 20
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0)
(2,0,0)
Page 21
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0)
(2,0,0)
(2,1,0)
Page 22
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0)
(2,0,0)
(2,1,0) (2,2,0)
Page 23
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1)
(2,0,0)
(2,1,0) (2,2,0)
(0,0,1)
Page 24
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)
(2,0,0)
(2,1,0) (2,2,0)
(0,0,1) (2,2,2)
Page 25
(0,0,1)
(1,0,0)
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)
(2,0,0)
(2,1,0) (2,2,0)
(2,2,2)
concurrentevents
Page 26
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)
(2,0,0)
(2,1,0) (2,2,0)
(0,0,1) (2,2,2)
concurrentevents
Page 27
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)
(2,0,0)
(2,1,0) (2,2,0)
(0,0,1) (2,2,2)
concurrentevents
Page 28
Vector timestamps
a b
c d
fe
(0,0,0)P1
P2
P3
(0,0,0)
(0,0,0)
(1,0,0)
Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)
(2,0,0)
(2,1,0) (2,2,0)
(0,0,1) (2,2,2)
concurrentevents
Page 29
Quan hệ nhân qủa(Causality) giữa hai sự kiện
• Việc xác lập trật tự nhân quả của hai sự kiện e1 và e2 bất kỳ được thực hiện dựa trên những
• quy luật sau đây:• Quy tắc 1: Nếu hai sự kiện e1, e2 xảy ra
trên cũng một trạm Si (i là số thứ tự của trạm trong hệ), khi đó e1e2 khi và chỉ khi Hi(e1)<Hi(e2).
Page 30
• Quy tắc 2: Nếu e1 là sự kiện gửi đi một thông điệp m trên một trạm, và e2 là sự kiện
• nhận đươc chính thông điệp đó thì e1e2. • Quy tắc 3: Nếu hai sự kiện e1, e2 xảy ra
trên hai trạm Si, Sj bất kỳ trong hệ (i, j là số • thứ tự của trạm) thì ta có e1e2 tương
đương Hi(e1)<Hj(e2). • Quy tắc 4 :Nếu hai sự kiện e1, e2 ta có
e1||e2 tương đương H(e1)||H(e2).– Nếu a->b thì sự kiện a có thể ảnh hưởng đến sự
kiện b
Page 31
• Tương tranh(Concurrency)– Nếu không a->b nor b->a thì một sự kiện
không thể ảnh hưởng đếnsự kiện khác
• Thứ tự từng phần (Partial Ordering )– Sự kiện nguyên nhân là trình tự
• Thứ tự toàn cục (Total Ordering )– Tất cả các sự kiện được trình tự
Page 32Page 32
The end.