1 / 30

Distributed Systems

Distributed Systems. Logical Clocks Paul Krzyzanowski pxk@cs.rutgers.edu ds@pk.org. Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License. Logical clocks. Assign sequence numbers to messages

garren
Télécharger la présentation

Distributed Systems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Distributed Systems Logical Clocks Paul Krzyzanowski pxk@cs.rutgers.edu ds@pk.org Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License.

  2. Logical clocks Assign sequence numbers to messages • All cooperating processes can agree on order of events • vs. physical clocks: time of day Assume no central time source • Each system maintains its own local clock • No total ordering of events • No concept of happened-when

  3. Happened-before Lamport’s “happened-before” notation a b event a happened before event b e.g.: a: message being sent, b: message receipt Transitive: if ab and bc then ac

  4. Logical clocks & concurrency Assign “clock” value to each event • if ab then clock(a) < clock(b) • since time cannot run backwards If a and b occur on different processes that do not exchange messages, then neither a  b nor b  a are true • These events are concurrent

  5. Event counting example • Three systems: P0, P1, P2 • Events a, b, c, … • Local event counter on each system • Systems occasionally communicate

  6. Event counting example e a b c d f P1 3 4 5 1 2 6 g h i P2 2 1 3 j k P3 1 2

  7. Event counting example e a b c d f P1 3 4 5 1 2 6 g h i P2 2 1 3 j k P3 1 2 Bad ordering: e  h f  k

  8. Lamport’s algorithm • Each message carries a timestamp of the sender’s clock • When a message arrives: • if receiver’s clock < message timestamp set system clock to (message timestamp + 1) • else do nothing • Clock must be advanced between any two events in the same process

  9. Lamport’s algorithm Algorithm allows us to maintain time ordering among related events • Partial ordering

  10. Event counting example e a b c d f P1 3 4 5 1 2 6 g h i P2 2 1 7 6 j k P3 1 2 7

  11. Summary • Algorithm needs monotonically increasing software counter • Incremented at least when events that need to be timestamped occur • Each event has a Lamport timestamp attached to it • For any two events, where a  b: L(a) < L(b)

  12. Problem: Identical timestamps e a b c d f P1 3 4 5 1 2 6 g h i P2 6 1 7 j k P3 1 7 ab, bc, …: local events sequenced ic, fd , dg, … : Lamport imposes asendreceive relationship Concurrent events (e.g., a & i) may have the same timestamp … or not

  13. Unique timestamps (total ordering) We can force each timestamp to be unique • Define global logical timestamp (Ti, i) • Ti represents local Lamport timestamp • i represents process number (globally unique) • E.g. (host address, process ID) • Compare timestamps: (Ti, i) < (Tj, j) if and only if Ti < Tj or Ti = Tj and i < j Does not relate to event ordering

  14. Unique (totally ordered) timestamps e a b c d f P1 3.1 4.1 5.1 1.1 2.1 6.1 g h i P2 6.2 1.2 7.2 j k P3 1.3 7.3

  15. Problem: Detecting causal relations If L(e) < L(e’) • Cannot conclude that ee’ Looking at Lamport timestamps • Cannot conclude which events are causally related Solution: use a vector clock

  16. Vector clocks Rules: • Vector initialized to 0 at each processVi [j] = 0 for i, j =1, …, N • Process increments its element of the vector in local vector before timestamping event:Vi [i] = Vi [i] +1 • Message is sent from process Pi with Vi attached to it • When Pj receives message, compares vectors element by element and sets local vector to higher of two values Vj [i] = max(Vi [i], Vj [i]) for i=1, …, N

  17. Comparing vector timestamps Define V = V’ iff V[i ] = V’[i ] for i = 1 … NV  V’ iff V[i ]  V’[i ] for i = 1 … N For any two events e, e’ if e  e’ then V(e) < V(e’) • Just like Lamport’s algorithm if V(e) < V(e’) then e  e’ Two events are concurrent if neither V(e)  V(e’) nor V(e’)  V(e)

  18. Vector timestamps (0,0,0) a b P1 (0,0,0) c d P2 (0,0,0) e f P3

  19. Vector timestamps (1,0,0) (0,0,0) a b P1 (0,0,0) c d P2 (0,0,0) e f P3 Event timestamp a (1,0,0)

  20. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (0,0,0) c d P2 (0,0,0) e f P3 Event timestamp a (1,0,0) b (2,0,0)

  21. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (0,0,0) c d P2 (0,0,0) e f P3 Event timestamp a (1,0,0) b (2,0,0) c (2,1,0)

  22. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,0) e f P3 Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0)

  23. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,1) (0,0,0) e f P3 Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1)

  24. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,1) (2,2,2) (0,0,0) e f P3 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)

  25. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,1) (2,2,2) (0,0,0) e f P3 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) concurrentevents

  26. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,1) (2,2,2) (0,0,0) e f P3 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) concurrentevents

  27. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,1) (2,2,2) (0,0,0) e f P3 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) concurrentevents

  28. Vector timestamps (1,0,0) (2,0,0) (0,0,0) a b P1 (2,1,0) (2,2,0) (0,0,0) c d P2 (0,0,1) (2,2,2) (0,0,0) e f P3 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) concurrentevents

  29. Summary: Logical Clocks & Partial Ordering • Causality • If a->b then event a can affect event b • Concurrency • If neither a->b nor b->a then one event cannot affect the other • Partial Ordering • Causal events are sequenced • Total Ordering • All events are sequenced

  30. The end.

More Related