Version: 0.1.0
Authors: Nyiro, Gergo (gergo.nyiro@gmail.com).
References
Interval tree clock (itc) is a good candidate for a logical clock in a distributed system where the members join and leave the cluster very often.
Itc offers the following actions:1> ClockA0 = itc:seed().
{1,0}
Create clock for a new cluster member:
2> [ClockA1, ClockB1] = itc:fork(ClockA0).
[{{1,0},0},{{0,1},0}]
The order of the clocks (ClockA0, ClockA1, ClockB1) cannot be determied.
3> itc:leq(ClockA0, ClockA1). true 4> itc:leq(ClockA1, ClockA0). trueAn event has to be executed to increment the clocks.
5> ClockA2 = itc:event(ClockA1).
{{1,0},{0,1,0}}
6> ClockB2 = itc:event(ClockB1).
{{0,1},{0,0,1}}
So the clocks can be ordered:
7> itc:leq(ClockA0, ClockA2). true 8> itc:leq(ClockA2, ClockA0). falseIf the cluster nodes are synchronized then the clocks can be joined
9> ClockC3 = itc:join(ClockA2, ClockB2).
{1,1}
10> itc:leq(ClockA2, ClockC3).
true
and the new clock can be used in the syncronized nodes.
Generated by EDoc