首页 > 编程知识 正文

Lamport 逻辑时钟

时间:2023-05-05 21:13:33 阅读:230316 作者:2064

    分布式系统中按是否存在节点交互可分为三类事件,一类发生于节点内部,二是发送事件,三是接收事件。注意: 以下文章中提及的时间戳如无特别说明,都指的是Lamport 逻辑时钟的时间戳,不是物理时钟的时间戳。

 

    如果a在进程Pi中,b在进程Pj中,Ci(a) = Cj(b)且i < j,那么a在b之前。形式化一点,我们可以把系统事件E上的全序关系“=>”定义为:

    假设a是Pi中的事件,b是Pj中的事件,那么:a => b当且仅当以下两个条件之一成立:

    1. Ci(a) < Cj(b);

    2. Ci(a) = Cj(b) 且 i < j;

    Lamport 逻辑时钟原理如下:

每个事件对应一个Lamport时间戳,初始值为0;如果事件在节点内发生,本地进程中的时间戳加1;如果事件属于发送事件,本地进程中的时间戳加1并在消息中带上该时间戳;如果事件属于接收事件,本地进程中的时间戳 = Max(本地时间戳,消息中的时间戳) + 1。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。