向量时钟

为什么需要向量时钟
Lamport 逻辑时钟算法中每个进程只拥有自己的本地时间,没有其他进程的时间,导致无法描述事件的因果关系。如果每个进程都能够知道其他所有进程的时间,是否就能够得到事件的因果关系了呢?为此,有人提出了向量时钟算法。
向量时钟的原理
用VC(a)来表示事件a的Vector Clock,有如下性质:VC(a) < VC(b)可以推出事件a causally 发生在事件b之前(也就是事件a发生在事件b之前)。
假设有N个进程,每个进程Pi维护一个向量VC,也就是Pi的Vector Clock,这个向量VC有如下属性:

VCi[i] 是到目前为止进程Pi上发生的事件的个数
VCi[k] 是进程Pi知道的进程Pk发生的事件的个数(即Pi对Pj的知识)

利用向量时钟判断因果关系
分布式系统中的事件要么是有因果关系(先后顺序),
要么是没有因果关系(同时发生)。向量时钟V1上的各个时间分量如果全部都小于等于V2上各个时间分量,则认为V1比V2早。向量时钟V1上的各个时间分量有的比V2上的时间分量大,有的比其小,则认为是同时发生。
向量时钟的应用——冲突检测

基于向量时钟我们可以获得任意两个事件的顺序关系,结果要么是有因果关系(先后顺序),要么是没有因果关系(同时发生)。通过向量时钟,我们能够识别到如果两个数据更新操作是同时发生的关系,那么说明出现了数据冲突。注意是检测(发现问题),它并不能解决数据冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值