分布式-逻辑时钟

本文探讨了分布式系统中两种时钟同步机制:Lamport时间戳和向量时间戳。介绍了这两种方法的工作原理及其如何帮助解决分布式环境中事件顺序的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尽管时钟同步是可能的,但是它不是绝对必要的。
如果两个进程不交互,那么它们的时钟也无需同步。
 
1、Lamport时间戳
如果a,b是同一个进程的两个事件,a在b发生前发生,那么a->b为真。
如果a是一个进程发送消息的事件,而b为另一个进程接受这个消息的事件,则a->b也为真。
 
逻辑时钟:进程按下列规则修改它们自己的逻辑时钟:
LC1:
	在进程Pi发出每个事件之前,Li加1: Li=Li+1、
LC2:
	(a)当进程Pi发送消息m时,在m中附加值t=Li 
	  (b) 在接收(m,t)时,进程Pj计算Lj=max(Lj,t),然后在给receive(m)事件打时间戳时应用LC1。
 
2、向量时间戳
每个进程P维护一个向量V。该向量具有下面两个性质
a: Vi[i]是目前为止进程Pi发送的事件数目
b: 如果Vi[j] = k, 那么进程Pi知道进程Pj已经发生了K个事件
第一个性质通过进程Pi发生新事件事,递增Vi[i]来完成。
第二个性质通过发送消息中携带进程的事件向量来完成。设消息中携带的时间向量为vt[]
进程Pj收到Pi发送的消息m时:Pj调整自己的时间向量,Vj[k] = max{Vj[k], vt[k]},此后将Vj[j]自增1.
 
PS:一些分布式存储系统,对数据项后面加上版本号,更新时增加版本号的值,应该算一种逻辑时钟吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值