logical clock 逻辑时钟

分布式系统使用的是逻辑时钟一些分布式存储系统,对数据项后面加上版本号,更新时增加版本号的值,应该算一种
逻辑时钟。【比如,事件的因果关系就是一种逻辑。】

常见的逻辑时钟(描述方法):Lamport timestamps(事件先后关系),Vector clock(无因果关系,同时发生的事件,vector用于并发,是不是想到了java里的容器?没错!哈哈)。

前者用于描述一种事件的顺序关系(单线程)。Vector clock用于描述同时发生关系(concurrent并发,多线程才有并发,多线程和CPU的核心数和超线程技术有关)Vector clock的方法用于发现数据版本冲突(分布式存储系统),即Version vector

http://www.doc88.com/p-7903104995524.html

或者(推荐):https://www.cnblogs.com/bangerlee/p/5448766.html

摘要:

分布式系统的一些场景也需要记录和比较不同节点间事件发生的顺序,但不同于日常生活使用物理时钟记录时间,分布式系统使用逻辑时钟记录事件顺序关系。

为什么分布式系统不使用物理时钟(physical clock)记录事件?每个事件对应打上一个时间戳,当需要比较顺序的时候比较相应时间戳不就好了?

原因:分布式系统中每个节点记录的时间并不一样,即使设置了 NTP 时间同步节点间也存在毫秒级别的偏差,也会导致事件的先后顺序无法比较。【注意:物理时钟,毫秒级在人来看非常短,但是对于高速运转的CPU,毫秒就是非常长的时间间隔了。在这段误差时间间隔内,不同节点上完全可能发生了很多事件,这样,当需要区分事件顺序时,便无法区分事件的先后顺序!】

猜你喜欢

转载自vallygan.iteye.com/blog/2405711