剑桥大学-Time,clocks,and ordering of events

分布式系统需要时间
1.调度程序,超时,故障检测器
2.性能测量
3.日志文件和数据库:记录事件发生的时间

  1. 具有时间限制有效性的数据
  2. 确定多个节点上的事件顺序
    image.png

    1.在分布式系统中,网络的传输并不是FIFO模式,因此对于用户C来说他可能先收到m2,后收到m1的消息,这可能导致是非因果。
    2.解决办法之一,用户A和用户B在发送消息的时候带上时间戳,用户C根据时间戳来判断因果关系。但是这要求用户A的物理时间和用户B的物理时间要同步。但时间上是不现实的会存在时间漂移。
    3.可以使用逻辑时间解决这个问题

逻辑时钟与物理时钟
1.物理时钟:计算经过的秒数--->对许多事情有用,但可能与因果关系不一致
2.逻辑时钟:计算发生的事件数--->旨在捕获因果关系

逻辑时钟:
1.Lamport 时钟
2.向量时钟

Lamport时钟算法


image.png

向量时钟


image.png

对于Lamport时钟来说的问题是 对于L(a) < L(b) ,无法确定a->b或a||b
向量时钟的特点
V(a) < V(b) <---> a--->b
V(a) =V(b) <---> a=b
V(a) || V(b) <---> a||b

参考文章
逻辑时钟 - 如何刻画分布式中的事件顺序

你可能感兴趣的:(剑桥大学-Time,clocks,and ordering of events)