分布式系统需要时间
1.调度程序,超时,故障检测器
2.性能测量
3.日志文件和数据库:记录事件发生的时间
- 具有时间限制有效性的数据
-
确定多个节点上的事件顺序
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
参考文章
逻辑时钟 - 如何刻画分布式中的事件顺序
网友评论