时间与顺序

时间与顺序

物理时钟与逻辑时钟

  1. 分布式系统中每个节点记录时间不一样,即便设置NTP时间同步,节点间也存在毫秒级的偏差,由此产生了逻辑时钟,记录时间发生顺序
  2. 分布式系统中按是否存在节点交互可拆分三类事件,一类发生节点内部,二是发生事件,三是接受事件
  3. 逻辑时钟(Lamport timestamps, Vector clock)
    3.1 逻辑时钟前进
    3.1.1 每个事件对应一个逻辑时间戳,初始值为0
    3.1.2 如果事件发生节点内发生,时间戳加1
    3.1.3 如果事件属于发送事件,时间戳加1并在消息中带上该时间戳
    3.1.4 如果事件属于接收事件,时间戳 = MAX(本地时间戳,消息中的时间戳) + 1
    3.2 逻辑时钟比较(Lamport timestamps)
    3.2.1 事件A,B时间戳a,b.如果a < b, 则存在 A->B
    3.2.2 事件A,B时间戳b,b.如果a = b, 定义节点顺序 c, d, 如果 c < d. 则 A=>B
    3.3 逻辑时钟比较(Vector clock)
    3.3.1 假设事件a,b分别在P,Q发生,Vector clock分别为Ta, Tb 如果Tb[Q] > Pa[Q]并且 Tb[P] >= Ta[P]则 a发生b之前记为a->b
    3.3.2 如果Tb[Q] > Ta[Q]并且Tb[P] < Ta[P] 则认为同时发生记为a<->b
    3.4 使用(Version vector)
    3.4.1 数据冲突
    3.4.1.1 分布式系统数据中一般会存在多个副本,多个副本可能被同时刷新,这会引起副本数据不一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值