时间、顺序与一致性

发布时间 2023-10-11 16:59:18作者: sTruth

一、背景

  分布式架构下,需要协调不同节点之间的先来后到,但不同节点又没有统一承认的时间标准,于是创造了网络时间协议(NTP)试图来解决不同节点之间的时间标准,但是NTP本身表现并不如人意,所以又构造出了逻辑时钟,最后在逻辑时钟的基础上改进为了向量时钟

二、时间标准分类

1. 网络时间协议(NTP)

  一种分层的时间同步体系结构,其中有一个或多个时间服务器作为参考,其他计算机系统通过NTP协议与这些时间服务器进行通信,以校准和调整自己的系统时间。

  NTP面临的问题:

     节点间时间不同步

     硬件时钟漂移

     线程可能休眠

     操作系统休眠

     硬件休眠

2. 逻辑时钟

  它不是真实的物理时钟,而是一种用于确定事件发生顺序的抽象时钟。

  逻辑时钟通常由一个计数器组成,每个事件都会更新计数器的值,通过比较不同节点上的逻辑时钟值,可以确定事件的先后顺序。

  逻辑时钟的两种主要的类型:Lamport时钟和向量时钟。

  2.1 Lamport时钟

    每个进程在发送消息时都会将自己的时钟值附加到消息上,接收到消息的进程会根据接收到的消息和自己的时钟值来更新自己的时钟,通过比较不同进程的时钟值来确定事件的先后关系。

  2.2 向量时钟

    每个进程都维护一个向量,该向量的长度等于进程的数量,当进程发送消息时,它会将自己的向量值附加到消息上,接收到消息的进程会根据接收到的消息和自己的向量值来更新自己的向量,通过比较不同进程的向量值,可以确定事件的先后顺序。

三、解决时间问题的意义

  通过衡量时间的工具,解决顺序问题。

  整个分布式的理论基础就是如何协商不同节点的一致性问题,而顺序则是一致性理论的基本概念。