CN114124276B - 一种分布式系统中的时钟同步方法、装置及系统 - Google Patents

一种分布式系统中的时钟同步方法、装置及系统 Download PDF

Info

Publication number
CN114124276B
CN114124276B CN202010906862.6A CN202010906862A CN114124276B CN 114124276 B CN114124276 B CN 114124276B CN 202010906862 A CN202010906862 A CN 202010906862A CN 114124276 B CN114124276 B CN 114124276B
Authority
CN
China
Prior art keywords
node
clock offset
offset value
master node
clock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010906862.6A
Other languages
English (en)
Other versions
CN114124276A (zh
Inventor
王江
王蕊
周兆琦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010906862.6A priority Critical patent/CN114124276B/zh
Priority to PCT/CN2021/099640 priority patent/WO2022041936A1/zh
Priority to EP21859780.5A priority patent/EP4199385A4/en
Publication of CN114124276A publication Critical patent/CN114124276A/zh
Priority to US18/175,365 priority patent/US20230213962A1/en
Application granted granted Critical
Publication of CN114124276B publication Critical patent/CN114124276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0667Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

本申请公开了一种分布式系统中的时钟同步方法及相关装置,该分布式系统包括多个节点,多个节点包括主节点和多个从节点。主节点获取多个本地时钟偏移值,多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移,主节点根据多个本地时钟偏移值确定目标从节点相对主节点的全局时钟偏移值,并向目标从节点发送全局时钟偏移值,目标从节点获取本地时钟的时钟基准值,然后根据时钟基准值和全局时钟偏移值进行时钟同步。本申请实施例提供的方案,通过主节点确定全局时钟偏移值可以实现全局的误差均摊,有利于提高每个节点时钟同步的精度,本申请中时钟同步精度可以达到1微秒。

Description

一种分布式系统中的时钟同步方法、装置及系统
技术领域
本申请涉及计算机领域,具体涉及一种分布式系统中的时钟同步方法、装置及系统。
背景技术
在由多个设备构成的分布式系统中,各个设备维护独立的时钟晶振,因此为了确保各个设备拥有统一的时间线,需要各个设备之间进行时钟同步。例如,在分布式数据库系统中,为了确保隶属于同一个事务但分布在不同服务器上的数据被有序调用,就需要采用时钟同步方法尽量使每个服务器的时钟保持一致。
目前时钟同步的过程通常是主时钟源为系统中的每个服务器提供时钟源,但将该时钟源传输到服务器上会有时间延迟,服务器接收到该时钟源后,会结合网络传输的时间延迟进行本地时钟同步。
但不同服务器的时钟晶振不同,而时钟晶振随着温度、电压等因素的变化,导致计时精确度不尽相同。因此,目前的时钟同步方案的同步精度低,亟待解决。
发明内容
本申请实施例提供一种分布式系统中的时钟同步方法,用于提高时钟同步的精度。本申请实施例还提供了相应的装置及系统。
本申请第一方面提供一种分布式系统,该分布式系统包括多个节点,多个节点包括主节点和多个从节点;其中,主节点用于:获取多个本地时钟偏移值,多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移;根据多个本地时钟偏移值确定多个从节点中的目标从节点相对主节点的第一全局时钟偏移值;向目标从节点发送第一全局时钟偏移值。目标从节点用于:接收主节点发送的目标从节点相对主节点的第一全局时钟偏移值;获取时钟基准值,时钟基准值指示目标从节点的本地时钟;根据时钟基准值和第一全局时钟偏移值进行时钟同步。
本申请中的“节点”可以是物理机,如:服务器,也可以是虚拟机(virtualmachine,VM)或容器(container)。
在一种可能的设计中,该分布式系统为分布式数据库系统,多个节点包括分布式数据库系统中用于存储数据的服务器、数据节点,或者用于存储数据的VM或容器。
在第一方面提供的分布式系统中,具有本地时钟偏移的两个节点具有指向关系,该指向关系表示的是相对的方向,如:两个节点中第一节点指向第二节点,则表示需要确定第二节点相对第一节点的时钟偏移值。若用一节点和另一节点来表示这两个节点,则一节点为第一节点,另一节点为第二节点。主节点会针对每个从节点都会确定一个对应的全局时钟偏移值。需要说明的是,本申请中的“本地时钟偏移值”指的是具有指向关系的两个节点之间的时钟偏移值,“全局时钟偏移值”指的是主节点对多个本地时钟偏移值做过修正后得到的每个从节点相对主节点的时钟偏移值。本申请中的用到了:“多个”,该多个包括两个或两个以上,也可以表示为至少两个。该全局时钟偏移值是主节点对分布式系统中的相对偏移值做过误差均摊后得到的。目标从节点的同步时钟可以是将时钟基准值和第一全局时钟偏移值相加得到的。由该第一方面可见,主节点可以结合两两节点之间的多个本地时钟偏移值确定每个从节点与主节点的全局时钟偏移值,这样相对于分布式系统中每个节点只能根据本地时钟偏移值做时钟同步,本申请通过主节点确定全局时钟偏移值可以实现全局的误差均摊,有利于提高每个节点时钟同步的精度,本申请的时钟同步精度可以达到1微秒(us)。
在第一方面的一种可能的实现方式中,目标从节点用于:从处理器的寄存器中获取时钟基准值,时钟基准值是目标从节点的网卡设备(network adapter)通过与处理器之间的物理链路同步到处理器的寄存器的。
该种可能的实现方式中,目标从节点的网卡设备和处理器可以通过物理链路通信,处理器中可以包括时钟单元,该时钟单元为寄存器,网卡设备中的网卡时钟单元可以通过物理链路将网卡时钟单元获取的最新的时钟基准值同步到处理器中用作时钟单元的寄存器中,这样在通过软件方式实现时钟同步时,处理器运行用于时钟同步的程序,就可以从处理器的时钟寄存器中获取该时钟基准值,不需要再从网卡时钟设备获取该时钟基准值,从而提高了时钟同步的速度。
在第一方面的一种可能的实现方式中,分布式系统的拓扑图中包括至少一个线性无关环,每个线性无关环中包括按照顺时针或逆时针的指向关系关联的至少三个节点,至少三个节点中每两个具有指向关系的节点具有一个本地时钟偏移值,至少三个节点包括主节点,或者,至少三个节点都为从节点。
该种可能的实现方式中,按照顺时针或逆时针的指向关系关联的至少三个节点指的是:一个线性无关环中具有指向关系的每个节点对之间的指向关系都是朝着一个方向的,如:节点A->节点B->节点C->节点A。需要说明的是,本申请中的线性无关环中不存在双向指向关系。在该节点A->节点B->节点C->节点A的线性无关环中,包含三个本地时钟偏移值,分别为节点B相对节点A的本地时钟偏移值,节点C相对节点B的本地时钟偏移值,节点A相对节点C的本地时钟偏移值。该种通过线性无关环的方式得到本地时钟偏移值,有利于均摊分布式系统中的各从节点与主节点的时钟偏移值。
在第一方面的一种可能的实现方式中,两个节点中的一节点用于:向另一节点发送多个探测报文;接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应;根据多个探测报文的发送时间和接收时间,以及多个响应报文的发送时间和接收时间,确定一节点与另一节点之间的时钟偏移关系;根据时钟偏移关系确定另一节点相对一节点的本地时钟偏移值,一节点为主节点或目标从节点。
该种可能的实现方式中,时钟偏移关系是通过一节点与另一节点之间的多个上边界数据和多个下边界数据确定的,每个上边界数据是另一节点接收到一个探测报文的第一时间与一节点发送该探测报文的第二时间的第一时间差,每个下边界数据是另一节点发送与该探测报文对应的响应报文的第三时间与一节点接收该响应报文的第四时间的第二时间差,响应报文与探测报文对应;根据时钟偏移关系确定另一节点相对一节点的时钟偏移值,一节点为主节点或目标从节点。本申请中,针对线性无关环上具有指向关系的两个节点,可以通过发送探测报文以及回复响应报文的方式来收集上边界数据和下边界数据,进而确定两个节点之间的时钟偏移关系。需要说明的是,本申请时钟同步的过程是持续在进行的,两个节点之间的探测报文和响应报文也是持续发送的,所以,本申请会根据最新的探测报文和响应报文中的事件确定最新的上边界数据和下边界数据,进而更新上述时钟偏移关系。因为上述时钟偏移关系的确定需要用到大量的上边界数据和下边界数据,所以,该过程也可以理解为是机器学习的过程,通过大量数据得到线性关系式,并且还可以根据最新的上边界数据和下边界数据更新该线性关系式。该种实现方式可以确保主节点获取最新的时钟偏移值,进而提高时钟同步的精度。
在第一方面的一种可能的实现方式中,两个节点中的一节点用于:向另一节点发送多个探测报文;接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应;发送多个跟随报文,多个跟随报文和多个探测报文一一对应,每个探测报文的发送时间与探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内;从多个探测报文中确定至少一个目标探测报文,另一节点接收至少一个目标探测报文的接收时间,与接收至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;根据至少一个目标探测报文的发送时间和接收时间,以及至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定一节点与另一节点之间的时钟偏移关系;根据时钟偏移关系确定另一节点相对一节点的本地时钟偏移值。
该种可能的实现方式中,考虑到网络传输时可能会出现传输异常,所以有的探测报文可能不适合参与确定时钟偏移关系,因此,可以在发送第一探测报文后的第一预设时间间隔(例如:S秒)后再发送一个对应的第一跟随报文,根据另一节点接收到第一跟随报文和第一探测报文之间的时间间隔是否在第二预设时间间隔内来确定该第一探测报文是否有效,若在第二预设时间间隔内,则该第一探测报文有效,若不在第二预设时间间隔内,则过滤掉该第一探测报文,该第二预设时间间隔可以小于或等于第一预设时间间隔,该第二预设时间间隔也可以是一个包含第一预设时间间隔的范围,如:[S-a,S+a]。也就是说,若另一节点接收第一探测报文的接收时间与接收对应的第一跟随报文的接收时间之间的间隔在该[S-a,S+a]范围内,则该第一探测报文有效,该第一探测报文可以用于参与时钟偏移关系的确定。若另一节点接收第一探测报文的接收时间与接收对应的第一跟随报文的接收时间之间的间隔在该[S-a,S+a]范围之外,则该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。目标探测报文是过滤后剩余的可用于参与时钟偏移关系的确定的探测报文。该种实现方式过滤掉受网络传输影响较大的探测报文,可以进一步提高时钟同步的精度。
在第一方面的一种可能的实现方式中,一节点距离发送多个探测报文之后的预设时间间隔,针对每个探测报文发送一个跟随报文;然后根据第三时间差与第一时间差的差值确定对应的第一探测报文是否用于参与确定时钟偏移关系,第三时间差为另一节点接收到第一跟随报文的第五时间与一节点发送该第一跟随报文的第六时间的差值,第一探测报文为多个探测报文中的任意一个,第一跟随报文与第一探测报文对应。第一跟随报文也可以对应一个第一响应报文,该第一响应报文中可以包含另一节点接收到第一跟随报文的时间第五时间。若第三时间差与第一时间差的差值位于一个阈值范围内,则确定第一探测报文用于参与确定时钟偏移关系。若第三时间差与第一时间差的差值位于该阈值范围之外,则该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。
该种可能的实现方式中,可以通过比较第一探测报文从一节点传输到另一节点的时间差与第一跟随报文从一节点传输到另一节点的时间差的方式来确定该第一探测报文是否有效,若第三时间差与第一时间差的差值位于阈值范围内,如:位于[-a,a]之内,则表示网络正常,该第一探测报文有效,可以参与时钟偏移关系的确定,若第三时间差与第一时间差的差值位于阈值范围之外,如:位于[-a,a]之外,则表示网络异常,该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。该a可以是预先设置的一个较小的值。
在第一方面的一种可能的实现方式中,主节点用于:修正多个本地时钟偏移值,以得到修正后的多个本地时钟偏移值,修正后的多个本地时钟偏移值之和等于0,修正后的多个本地时钟偏移值中包括第一从节点相对主节点的第二全局时钟偏移值,第一从节点与主节点具有直接指向关系,目标从节点为第一从节点,则第二全局时钟偏移值为第一全局时钟偏移值。
在第一方面的一种可能的实现方式中,主节点用于:根据第一从节点与所述主节点之间的时钟偏移关系,以及第二从节点与所述第一从节点之间的时钟偏移关系,确定第二从节点与所述主节点之间的时钟偏移关系,所述第一从节点与所述主节点具有直接指向关系,所述第二从节点与所述主节点之间没有直接指向关系;根据第二从节点与主节点之间的时钟偏移关系,确定第二从节点相对主节点的第三全局时钟偏移值,目标从节点为第二从节点,则第三全局时钟偏移值为第一全局时钟偏移值。
该种可能的实现方式中,理论上,同一个线性无关环的至少三个节点对的本地时钟偏移值之和应该等于0,但实际场景中,通常同一个线性无关环的本地时钟偏移值之和不等于0,本申请中会获取分布式系统中每个线性无关环上的各本地时钟偏移值,然后以分布式系统中每个线性无关环的本地时钟偏移值之和等于0为目标进行修正,得到修正后的多个本地时钟偏移值。若修正后的多个本地时钟偏移值包含分布式系统中的每个从节点与主节点的时钟偏移值,则可以修正后的从多个本地时钟偏移值中直接确定每个从节点各自相对主节点的全局时钟偏移值,若有的从节点的全局时钟偏移值没包含在修正后的多个本地时钟偏移值中,则可以通过“流言传播”的方式,借助与主节点有直接指向关系的节点来确定该没有直接关系的从节点与主节点的时钟偏移关系,进而确定该从节点与主节点的全局时钟偏移值。由该种可能的实现方式可知,主节点不仅能实现全局的误差均摊,还可以通过“流言传播”的方式,确定出与主节点没有直接关系的从节点的全局时钟偏移值。
本申请第二方面提供一种分布式系统中的时钟同步方法,该分布式系统包括多个节点,多个节点包括主节点和多个从节点,其特征在于,该方法包括:多个从节点中的目标从节点获取主节点发送的全局时钟偏移值,全局时钟偏移值指示目标从节点相对主节点的时钟偏移,全局时钟偏移值是根据多个本地时钟偏移值确定的,多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移;目标从节点获取时钟基准值,时钟基准值指示目标从节点的本地时钟;目标从节点根据时钟基准值和全局时钟偏移值进行时钟同步。
该第二方面中的相关内容可以参与第一方面中的相关内容进行理解。该第二方面,从节点可以根据主节点发送的全局时钟偏移值进行时钟同步,因为该全局时钟偏移值是主节点通过全局误差均摊得到的,这样相对于分布式系统中每个节点只能根据本地时钟偏移值做时钟同步,本申请有利于提高每个节点时钟同步的精度,本申请的时钟同步精度可以达到1微秒(us)。
在第二方面的一种可能的实现方式中,上述步骤:目标从节点获取时钟基准值,包括:从处理器的寄存器中获取时钟基准值,时钟基准值是目标从节点的网卡设备通过与处理器之间的物理链路同步到寄存器的。
该种可能的实现方式中,目标从节点的网卡设备和处理器可以通过物理链路通信,处理器中可以包括时钟单元,该时钟单元为寄存器,网卡设备中的网卡时钟单元可以通过物理链路将网卡时钟单元获取的最新的时钟基准值同步到处理器中用作时钟单元的寄存器中,这样在通过软件方式实现时钟同步时,就可以从处理器的寄存器中获取该时钟基准值,不需要再从网卡时钟设备获取该时钟基准值,从而提高了时钟同步的速度。
在第二方面的一种可能的实现方式中,多个本地时钟偏移值包括另一节点相对目标从节点的本地时钟偏移值,该方法还包括:目标从节点向另一节点发送多个探测报文;目标从节点接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应;目标从节点根据多个探测报文的发送时间和接收时间,以及多个响应报文的发送时间和接收时间,确定目标从节点与另一节点之间的时钟偏移关系;目标从节点根据时钟偏移关系确定另一节点相对目标从节点的本地时钟偏移值。
在第二方面的一种可能的实现方式中,多个本地时钟偏移值包括另一节点相对目标从节点的本地时钟偏移值,该方法还包括:目标从节点向另一节点发送多个探测报文;目标从节点接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应;目标从节点发送多个跟随报文,多个跟随报文和多个探测报文一一对应,每个探测报文的发送时间与探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内;目标从节点从多个探测报文中确定至少一个目标探测报文,另一节点接收至少一个目标探测报文的接收时间,与接收至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;目标从节点根据至少一个目标探测报文的发送时间和接收时间,以及至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定目标从节点与另一节点之间的时钟偏移关系;目标从节点根据时钟偏移关系确定另一节点相对目标从节点的本地时钟偏移值。
在第二方面的一种可能的实现方式中,该方法还包括:目标从节点距离发送多个探测报文之后的预设时间间隔,针对每个探测报文发送一个跟随报文;然后根据第三时间差与第一时间差的差值确定对应的第一探测报文是否用于参与确定时钟偏移关系,第三时间差为另一节点接收到第一跟随报文的第五时间目标从节点发送该第一跟随报文的第六时间的差值,第一探测报文为多个探测报文中的任意一个,第一跟随报文与第一探测报文对应。第一跟随报文也可以对应一个第一响应报文,该第一响应报文中可以包含另一节点接收到第一跟随报文的时间第五时间。若第三时间差与第一时间差的差值位于一个阈值范围内,则确定第一探测报文用于参与确定时钟偏移关系。若第三时间差与第一时间差的差值位于该阈值范围之外,则该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。
上述第二方面的任一可能的实现方式中的内容可以参阅第一方面中的内容进行理解。
本申请第三方面提供一种分布式系统中的时钟同步方法,分布式系统包括多个节点,多个节点包括主节点和多个从节点,包括:主节点获取多个本地时钟偏移值,多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移;主节点根据多个本地时钟偏移值确定多个从节点中的目标从节点相对主节点的第一全局时钟偏移值;主节点向目标从节点发送第一全局时钟偏移值,第一全局时钟偏移值用于目标从节点进行时钟同步。
该第三方面的相关内容可以参阅第一方面的内容进行理解。该第三方面,主节点可以结合两两节点之间的多个本地时钟偏移值确定每个从节点与主节点的全局时钟偏移值,这样相对于分布式系统中每个节点只能根据本地时钟偏移值做时钟同步,本申请通过主节点确定全局时钟偏移值可以实现全局的误差均摊,有利于提高每个节点时钟同步的精度,本申请的时钟同步精度可以达到1微秒(us)。
在第三方面的一种可能的实现方式中,分布式系统的拓扑图中包括至少一个线性无关环,每个线性无关环中包括按照顺时针或逆时针的指向关系关联的至少三个节点,至少三个节点中每两个具有指向关系的节点具有一个本地时钟偏移值,至少三个节点包括主节点,或者,至少三个节点都为从节点。
在第三方面的一种可能的实现方式中,多个本地时钟偏移值包括另一节点相对主节点的本地时钟偏移值,该方法还包括:主节点向另一节点发送多个探测报文;主节点接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应;主节点根据多个探测报文的发送时间和接收时间,以及多个响应报文的发送时间和接收时间,确定主节点与另一节点之间的时钟偏移关系;主节点根据时钟偏移关系确定另一节点相对主节点的本地时钟偏移值。
在第三方面的一种可能的实现方式中,多个本地时钟偏移值包括另一节点相对主节点的本地时钟偏移值,该方法还包括:主节点向另一节点发送多个探测报文;主节点接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应;主节点发送多个跟随报文,多个跟随报文和多个探测报文一一对应,每个探测报文的发送时间与探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内;主节点从多个探测报文中确定至少一个目标探测报文,另一节点接收至少一个目标探测报文的接收时间,与接收至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;主节点根据至少一个目标探测报文的发送时间和接收时间,以及至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定主节点与另一节点之间的时钟偏移关系;主节点根据时钟偏移关系确定另一节点相对主节点的本地时钟偏移值。
在第三方面的一种可能的实现方式中,主节点距离发送多个探测报文之后的预设时间间隔,针对每个探测报文发送一个跟随报文;然后根据第三时间差与第一时间差的差值确定对应的第一探测报文是否用于参与确定时钟偏移关系,第三时间差为另一节点接收到第一跟随报文的第五时间与主节点发送该第一跟随报文的第六时间的差值,第一探测报文为多个探测报文中的任意一个,第一跟随报文与第一探测报文对应。第一跟随报文也可以对应一个第一响应报文,该第一响应报文中可以包含另一节点接收到第一跟随报文的时间第五时间。若第三时间差与第一时间差的差值位于一个阈值范围内,则确定第一探测报文用于参与确定时钟偏移关系。若第三时间差与第一时间差的差值位于该阈值范围之外,则该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。
在第三方面的一种可能的实现方式中,上述步骤:主节点根据多个本地时钟偏移值确定多个从节点中的目标从节点相对主节点的第一全局时钟偏移值,包括:主节点修正多个本地时钟偏移值,以得到修正后的多个本地时钟偏移值,修正后的多个本地时钟偏移值之和等于0,修正后的多个本地时钟偏移值中包括第一从节点相对主节点的第二全局时钟偏移值,第一从节点与主节点具有直接指向关系,目标从节点为第一从节点,则第二全局时钟偏移值为第一全局时钟偏移值。
在第三方面的一种可能的实现方式中,主节点根据多个本地时钟偏移值确定多个从节点中的目标从节点相对主节点的第一全局时钟偏移值,包括:主节点根据第一从节点与主节点之间的时钟偏移关系,以及第二从节点与第一从节点之间的时钟偏移关系,确定第二从节点与主节点之间的时钟偏移关系,第一从节点与主节点具有直接指向关系,第二从节点与主节点之间没有直接指向关系;主节点根据第二从节点与主节点之间的时钟偏移关系,确定第二从节点相对主节点的第三全局时钟偏移值,目标从节点为第二从节点,则第一全局时钟偏移值为第三全局时钟偏移值。
在第三方面的一种可能的实现方式中,主节点的时钟源来自于卫星时钟。
该种可能的实现方式中,通过卫星时钟可以实现全球时钟同步。
上述第三方面的任一可能的实现方式中的内容可以参阅第一方面中的内容进行理解。
本申请第四方面,提供了一种时钟同步装置,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块或单元,如:接收单元、获取单元和处理单元,需要说明的是,获取单元和处理单元可以通过一个处理单元来实现。
本申请第五方面,提供了一种时钟同步装置,该装置包括用于执行上述第三方面或第三方面的任意可能的实现方式中的方法的模块或单元,如:接收单元、处理单元和发送单元。
本申请第六方面,提供了一种时钟同步装置。该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
本申请第七方面,提供了一种时钟同步装置。该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第三方面或第三方面的任意可能的实现方式中的方法。
本申请第八方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第二方面,及其各种实现方式中的任一种分布式系统中的时钟同步方法。
本申请第九方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第三方面,及其各种实现方式中的任一种分布式系统中的时钟同步方法。
本申请第十方面,提供一种计算机程序产品(或称为计算机程序),该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第二方面或者第二方面的任一种可能的实现方式所提供的一种分布式系统中的时钟同步方法。
本申请第十一方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第三方面或者第三方面的任一种可能的实现方式所提供的一种分布式系统中的时钟同步方法。
本申请第十二方面提供了一种节点,该节点包括处理器和网卡设备,所述处理器被配置为执行计算机程序(指令),以实现上述第二方面或者第二方面的任一种可能的实现方式所提供的时钟同步方法。
在一种可能的实现方式中,处理器中包括处理器时钟单元,用于存储处理器时钟。网卡设备包括网卡时钟单元,用于存储网卡设备的物理时钟。
在一种可能的实现方式中,处理器时钟单元和网卡时钟单元之间具有物理链路,所述网卡设备物理时钟的基准值被同步至处理器时钟单元。
在一种可能的实现方式中,处理器通过读取处理器时钟单元的值以确定时钟基准值。
本申请第十三方面提供了一种芯片系统,该芯片系统包括处理器,用于支持时钟同步装置实现上述第三方面或第三方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,比如时钟寄存器,用于保存时钟同步的所需的程序指令和数据,比如处理器的时钟。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
可以理解地,上述提供的任一种时钟同步装置、计算机存储介质或者计算机程序产品均用于执行上文所提供的对应的时钟同步方法。因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1是分布式系统的一实施例示意图;
图2是本申请实施例提供的时钟同步方法的一实施例示意图;
图3是本申请实施例提供的一场景示例示意图;
图4是本申请实施例提供的时钟同步方法的另一实施例示意图;
图5是本申请实施例提供的时钟同步方法的另一实施例示意图;
图6是本申请实施例提供的时钟同步方法的另一示例示意图;
图7是本申请实施例提供的时钟同步方法的另一实施例示意图;
图8是本申请实施例提供的分布式系统中一节点的结构示意图;
图9是本申请实施例提供的全球时钟同步的一场景示意图;
图10是本申请实施例提供的时钟同步装置的一实施例示意图;
图11是本申请实施例提供的时钟同步装置的另一实施例示意图;
图12是本申请实施例提供的计算机设备的一实施例示意图;
图13是本申请实施例提供的分布式系统的一实施例示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例提供一种分布式系统中的时钟同步方法,用于提高时钟同步的精度。本申请实施例还提供了相应的装置及系统。以下分别进行详细说明。
本申请实施例提供的时钟同步方法可以应用于分布式系统(distributedsystem)中,该分布式系统可以是分布式数据库系统,也可以是其他场景的分布式系统,该分布式系统也可以称为集群。下面介绍结合图1介绍本申请实施例提供的一种分布式系统。
如图1所示,该分布式系统包括主时钟源设备、从时钟源设备和多个节点,如图1中节点1、节点2,…,节点N,N为大于2的整数。其中,主时钟源设备为多个节点中的每个节点提供时钟源,从时钟源设备在主时钟源设备出现故障时接替主时钟源设备的工作,为每个节点提供时钟源。该主时钟源设备和从时钟源设备可以是通信楼综合定时供给系统(building integrated timing supply system,BITS)时钟源,该BITS时钟源可以提供基准的时间信号。节点可以是服务器、计算机等物理设备,也可以是虚拟机(virtualmachine,VM)、容器(container)等逻辑实体。例如,若该分布式系统为分布式数据库系统,则该多个节点可以包括分布式数据库系统中的数据节点、协调节点等。数据节点和协调节点均部署在数据库服务器上。
分布式系统中的每个节点可以从主时钟源设备获取到时钟源,然后节点会结合本地时钟偏移进行时钟同步,得到同步时钟,使得各个节点拥有统一的时间线。但目前这种时钟同步方式精度很低。
因此,本申请实施例提供一种分布式系统中的时钟同步方法,可以从分布式系统的多个节点中确定一个主节点,其他节点作为从节点,由主节点结合该分布式系统中具有指向关系的两个节点之间的时钟偏移来做全局修正,进而确定每个从节点相对主节点的全局时钟偏移值,从节点根据该全局时钟偏移值,以及本地的基准时钟进行从节点本地的时钟同步。
针对图1所示的一个分布式系统中的多个节点可以包括一个主节点,除主节点之外的节点为从节点。该主节点可以是部署该分布式系统时配置好的,也可以是在分布式系统配置好后再动态分配的。若该分布式系统中增加了新的节点或删除了节点,也可以重新配置主节点。
需要说明的是,本申请中的“本地时钟偏移值”指的是具有指向关系的两个节点之间的时钟偏移值,“全局时钟偏移值”指的是主节点对多个本地时钟偏移值做过修正后得到的每个从节点相对主节点的时钟偏移值。本申请中的用到了:“多个”,该多个包括两个或两个以上,也可以表示为至少两个。
基于上述分布式系统,下面结合图2介绍本申请实施例提供的时钟同步方法。如图2所示,本申请实施例提供的时钟同步方法的一实施例包括:
101、主节点获取多个本地时钟偏移值。
多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移。这两个节点具有指向关系,这两个节点可以一个为主节点,一个为从节点,也可以两个节点都为从节点。也就是说,多个时钟偏移值可以包括该主节点相对于一个或多个从节点的时钟偏移值,也可以包括从节点相对于主节点的时钟偏移值或一个从节点相对于另一个从节点的时钟偏移值。
两个节点具有指向关系,该指向关系表示的是相对的方向,如:两个节点中第一节点指向第二节点,则表示需要确定第二节点相对第一节点的时钟偏移值。若用一节点和另一节点来表示这两个节点,则一节点为第一节点,另一节点为第二节点。
102、主节点根据多个本地时钟偏移值确定目标从节点相对主节点的第一全局时钟偏移值。
分布式系统中的任意一个从节点都可以为该目标从节点,也就是说,该主节点会确定每个从节点相对主节点的全局时钟偏移值。
103、主节点向目标从节点发送第一全局时钟偏移值,对应地,目标从节点接收主节点发送的目标从节点相对主节点的第一全局时钟偏移值。
104、目标从节点获取时钟基准值,时钟基准值指示目标从节点的本地时钟。
105、目标从节点根据时钟基准值和第一全局时钟偏移值进行时钟同步。
该步骤105进行始终同步,可以得到同步时钟。
同步时钟是校准后的本地时钟,指示节点真实的本地时间。
步骤105可以是将时钟基准值和第一全局时钟偏移值相加得到该同步时钟,然后用该同步时钟更新该目标从节点的本地时钟,从而实现时钟同步。
本申请实施例提供的时钟同步的方案,主节点可以结合两两节点之间的多个时钟偏移值确定每个从节点与主节点的全局时钟偏移值,这样相对于分布式系统中每个节点只能根据本地时钟偏移值做时钟同步相比,通过主节点确定全局时钟偏移值可以实现全局的误差均摊,有利于提高每个节点时钟同步的精度,本申请的时钟同步精度可以达到1微秒(us)。
可选地,上述具有指向关系的两个节点可以位于一个线性无关环上,该线性无关环包含于该分布式系统的拓扑图中。通常,该分布式系统的拓扑图中会包括至少一个线性无关环。每个线性无关环中包括按照顺时针或逆时针的指向关系关联的至少三个节点,至少三个节点中每两个具有指向关系的节点具有一个本地时钟偏移值。至少三个节点可以包括主节点,其他节点为从节点,也可以是这至少三个节点都为从节点。
按照顺时针或逆时针的指向关系关联的至少三个节点指的是:一个线性无关环中具有指向关系的每个节点对之间的指向关系都是朝着一个方向的,如:节点A->节点B->节点C->节点A。
分布式系统中所包含的线性无关环的一示例可以参阅图3进行理解。如图3所示,该图3中以分布式系统中包括5个节点为例,每个线性无关环中包括3个节点。在图3所示的示例中,在指定主节点时可以指定节点1为主节点,指定主节点时也可以输入K=2的参数,该参数表示,针对分布式系统中的每个节点都可以与其他两个节点形成线性无关环。当然,分布式系统中不限于只有图3中的5个节点,线性无关环也不限于只有三个节点,这里只是以图3所示的场景为例进行说明。
在图3中包括的线性无关环有:节点1->节点2->节点4->节点1,节点1->节点3->节点5->节点1,节点1->节点3->节点4->节点1,节点2->节点3->节点5->节点2,节点2->节点4->节点5->节点2。其中,每个线性无关环上两个节点之间的指向关系都是单向的,每个线性无关环上的所有节点会形成一个单一指向上的闭环。
线性无关环上的箭头表示两个节点之间的指向关系。具有指向关系的两个节点中,箭头开始的节点会向箭头结束的节点发送探测报文,箭头结束的节点会向箭头开始的节点发送响应报文,然后由箭头开始的节点确定两个节点之间的时钟偏移关系,进而确定箭头结束的节点相对箭头开始的节点的本地时钟偏移值。以线性无关环:节点1->节点2->节点4为例,节点1向节点2发送探测报文,节点2向节点1发送响应报文,节点2向节点4发送探测报文,节点4向节点2发送响应报文,节点4向节点1发送探测报文,节点1向节点4发送响应报文。
本申请中通过探测报文和响应报文可以确定具有指向关系的两个节点间的时钟偏移关系,然后通过该时钟偏移关系来确定两个节点的本地时钟偏移值。
具有指向关系的两个节点用第一节点和第二节点来表示,这两个节点中,第一节点指向第二节点,则第一节点向第二节点发送探测报文,第二节点向第一节点发送响应报文。第一节点根据多个探测报文的发送时间和接收时间,以及多个响应报文的发送时间和接收时间,确定主节点与第二节点之间的时钟偏移关系;根据时钟偏移关系确定第二节点相对第一节点的本地时钟偏移值,第一节点为主节点或目标从节点。
时钟偏移关系是通过第一节点与第二节点之间的多个上边界数据和多个下边界数据确定的,每个上边界数据是第二节点接收探测报文的第一时间与第一节点发送探测报文的第二时间的第一时间差,每个下边界数据是第二节点发送响应报文的第三时间与第一节点接收响应报文的第四时间的第二时间差,响应报文与探测报文对应;根据时钟偏移关系确定第一节点相对第二节点的时钟偏移值,该处的第一节点可以为主节点或目标从节点。本申请实施例中的第一节点和第二节点中可以有一个为主节点,一个为从节点,也可以两个都是从节点。
下面结合附图介绍本申请实施例中确定时钟偏移关系的过程。如图4所示,该过程包括:
201、第一节点向第二节点发送探测报文,对应地,该第二节点接收该探测报文。
第二节点接收该探测报文的时间为第一时间,第一节点发送该探测报文的时间为第二时间。第二节点接收到该探测报文的第一时间也可以通过时间戳的方式记录。
202、第二节点发送响应报文,对应地,第一节点接收该响应报文。
该响应报文中包含上述第一时间、第二时间和第三时间,该第三时间是该响应报文的发送时间。该第一时间、第二时间和第三时间可以携带在响应报文的套接字选项(SO_TIMESTAMPING)中,在接收响应报文时可以通过读取该套接字选项获取这些时间。
203、第一节点根据第一时间和第二时间确定第一时间差,以及根据第三时间和第四时间确定第二时间差。
第四时间是第一节点接收到该响应报文的时间。该第一时间差为第一时间与第二时间的时间差,该第二时间差为第三时间与第四时间的时间差。
该第一时间差为上边界数据,该第二时间差为下边界数据。
第一节点与第二节点之间一次可以发送多个探测报文,针对每个探测报文第二节点都会回复一个响应报文。如图5所示,第一节点一次发送探测报文1、探测报文2,…,探测报文N,第二节点会回复响应报文1、响应报文2,…,响应报文N,其中,探测报文1与响应报文1对应,探测报文2与响应报文2对应,探测报文N与响应报文N对应,探测报文与响应报文之间的对应关系可以通过标识来建立,如:探测报文1和响应报文1中具有相同的标识。
204、第一节点根据多个上边界数据和多个下边界数据确定第二节点相对于第一节点的时钟偏移关系。
该步骤204可以参阅图6进行理解。如图6所示,因为第一时间差是探测报文的接收时间减去发送时间,所以该第一时间差为正值,而第二时间差是响应报文的发送时间减去接收时间,所以,该第二时间差为负值。第一时间差与第二时间差通常会对称分布在坐标系中。图6中位于y轴正半轴的每个点表示一个上边界数据,位于y轴下半轴的每个点表示一个下边界数据。由图6可见,上边界数据的趋势和下边界数据的趋势都是线性分布的,利用上边界数据的趋势和下边界数据的趋势,在居中位置确定出该第一节点相对第二节点的时钟偏移关系。该时钟偏移关系可以通过如下关系式来表示:y=b+kx,其中,b表示截距,k表示斜率,x表示时间长度,例如:1秒,0.5秒,或其他时间,y表示与时间长度x相对应的时钟偏移值。
205、第一节点根据时钟偏移关系确定本地时钟偏移值。
因为y=b+kx中,b和k都是已知量,x是根据需求设置的输入量,在x已知的情况下,可以计算得到本地时钟偏移值y。
本申请实施例中,通过上边界数据和下边界数据可以确定两个节点之间的时钟偏移关系,进而确定出两个节点的本地时钟偏移值。两个节点之间的时钟偏移值用于确定全局时钟偏移值,进而提高了时钟同步的精度。
另外,需要说明的是,本申请时钟同步的过程是持续在进行的,两个节点之间的探测报文和响应报文也是持续发送的,所以,本申请会根据最新的探测报文和响应报文中的时间确定最新的上边界数据和下边界数据,进而更新上述时钟偏移关系。因为上述时钟偏移关系的确定需要用到大量的上边界数据和下边界数据,所以,该过程也可以理解为是机器学习的过程,通过大量数据得到线性关系式,并且还可以根据最新的上边界数据和下边界数据更新该线性关系式。
考虑到网络传输时可能会出现传输异常,所以有的探测报文可能不适合参与确定时钟偏移关系,所以本申请实施例还提供了相应的过滤方案。
可选地,该探测报文的过滤过程包括:第一节点距离发送所述多个探测报文之后的第一预设时间间隔内,发送多个跟随报文,所述多个跟随报文和所述多个探测报文一一对应;也可以描述为:每个探测报文的发送时间与所述探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内。第一节点从所述多个探测报文中确定至少一个目标探测报文,所述第二节点接收所述至少一个目标探测报文的接收时间,与接收所述至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内。第一节点根据所述至少一个目标探测报文的发送时间和接收时间,以及所述至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定所述第一节点与所述第二节点之间的时钟偏移关系。第一节点根据所述时钟偏移关系确定所述第二节点相对所述第一节点的所述本地时钟偏移值。该第二预设时间间隔可以小于或等于该第一预设时间间隔。
该过滤过程也可以描述为:第一节点距离一起发送的多个探测报文之后的第一预设时间间隔,针对每个探测报文发送一个跟随报文,如图7所示,针对探测报文1在间隔S秒后发送了一个跟随报文1,针对探测报文2在间隔S秒后发送了一个跟随报文2,…,针对探测报文N在间隔S秒后发送了一个跟随报文N。其中,探测报文与跟随报文的对应关系可以通过具有相同标识来关联。
第一节点根据第二节点接收到第一探测报文和第一跟随报文的时间间隔,确定对应的第一探测报文是否用于参与确定时钟偏移关系,第一探测报文为多个探测报文中的任意一个,第一跟随报文与第一探测报文对应。第一跟随报文也可以对应一个第一响应报文,该第一响应报文中可以包含第二节点接收到第一跟随报文的时间,这样,第一节点就可以根据第二节点接收到第一跟随报文的时间,以及第二节点接收到第一探测报文的时间确定出第二节点接收到第一探测报文和第一跟随报文的时间间隔。
若时间间隔位于包含预设时间间隔的时间范围内,则第一节点确定第一探测报文用于参与确定时钟偏移关系。若预设时间间隔用于例如S秒来表示,该包含预设时间间隔的时间范围可以表示为[S-a,S+a],其中,a可以是预先设定的一个值。若该时间间隔位于该[S-a,S+a]范围内,则该第一探测报文有效,可以用于参与时钟偏移关系的确定。
若时间间隔位于包含预设时间间隔的时间范围之外,则第一节点过滤掉第一探测报文。若该时间间隔位于该[S-a,S+a]范围之外,则该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。
本申请不限于上述过滤条件,还可以是第一节点距离发送多个探测报文之后的预设时间间隔,针对每个探测报文发送一个跟随报文;然后根据第三时间差与第一时间差的差值确定对应的第一探测报文是否用于参与确定时钟偏移关系,第三时间差为第二节点接收到第一跟随报文的第五时间与第一节点发送该第一跟随报文的第六时间的差值,第一探测报文为多个探测报文中的任意一个,第一跟随报文与第一探测报文对应。第一跟随报文也可以对应一个第一响应报文,该第一响应报文中可以包含第二节点接收到第一跟随报文的时间第五时间。
若第三时间差与第一时间差的差值位于一个阈值范围内,则第一节点确定第一探测报文用于参与确定时钟偏移关系。
若第三时间差与第一时间差的差值位于该阈值范围之外,则该第一探测报文无效,不能用于参与时钟偏移关系的确定,第一节点需要将该第一探测报文过滤掉。
该种可能的实现方式中,可以通过比较第一探测报文从一节点传输到另一节点的时间差与第一跟随报文从一节点传输到另一节点的时间差的方式来确定该第一探测报文是否有效,若第三时间差与第一时间差的差值位于阈值范围内,如:位于[-a,a]之内,则表示网络正常,该第一探测报文有效,可以参与时钟偏移关系的确定,若第三时间差与第一时间差的差值位于阈值范围之外,如:位于[-a,a]之外,则表示网络异常,该第一探测报文无效,不能用于参与时钟偏移关系的确定,需要将该第一探测报文过滤掉。该a可以是预先设置的一个较小的值。
若探测报文是成组发送的,例如:一组会发送100个探测报文,如果这一组中有超过预设数量的探测报文无效,也可以放弃这一组探测报文。如果这一组中有低于预设数量的探测报文无效,则可以过滤掉无效的探测报文,其余报文可以用于参与时钟偏移关系的确定。
通过上述方案可以得到第二节点相对于第一节点的本地时钟偏移值,上述线性无关环上具有指向关系的两个节点都可以得到一个本地时钟偏移值,这样分布式系统中的主节点就可以得到多个本地时钟偏移值。然后主节点修正多个本地时钟偏移值,以得到修正后的多个本地时钟偏移值,修正后的多个本地时钟偏移值之和等于0,修正后的多个本地时钟偏移值中包括第一从节点相对主节点的第二全局时钟偏移值,第一从节点与主节点具有直接指向关系,目标从节点为第一从节点,则第二全局时钟偏移值为第一全局时钟偏移值。
也可以是根据第一从节点与主节点之间的时钟偏移关系,以及第二从节点与第一从节点之间的时钟偏移关系,确定第二从节点与主节点之间的时钟偏移关系,第二从节点与主节点之间没有直接指向关系;根据第二从节点与主节点之间的时钟偏移关系,确定第二从节点相对主节点的第三全局时钟偏移值,目标从节点为第二从节点,则第三全局时钟偏移值为第一全局时钟偏移值。
该修正过程也可以描述为然后该主节点以每个线性无关环所包括的至少三个节点对的本地时钟偏移值之和等于0为目标,修正多个时钟偏移值,以得到修正后的多个本地时钟偏移值,修正后的多个本地时钟偏移值包括与主节点有直接指向关系的第一从节点的全局时钟偏移值;针对与主节点没有直接指向关系的第二从节点,使用与主节点有直接指向关系的第一从节点的时钟偏移关系,以及第一从节点与第二从节点的时钟偏移关系,确定第二从节点相对主节点的全局时钟偏移值,第一全局时钟偏移值包含于与主节点有直接指向关系的第一从节点的全局时钟偏移值,以及第二从节点相对主节点的全局时钟偏移值中。本申请实施例中的第一从节点和第二从节点与第一节点和第二节点可以是相同的节点,这里用第一从节点和第二从节点做区分只是为了表达该场景下这两个节点不是主节点。
例如上述图3所示的线性无关环上的节点1可以得到节点2相对于节点1的时钟偏移值1,以及节点3相对于节点1的时钟偏移值2,节点2可以得到节点3相对于节点2的时钟偏移值3,以及节点4相对于节点2的时钟偏移值4,节点3可以得到节点4相对于节点3的时钟偏移值5,以及节点5相对于节点3的时钟偏移值6,节点4可以得到节点1相对于节点4的时钟偏移值7,以及节点5相对于节点4的时钟偏移值8,节点5可以得到节点1相对于节点5的时钟偏移值9,以及节点2相对于节点5的时钟偏移值10。
需要说明的是,该处所列举的时钟偏移值1至时钟偏移值10都为本地时钟偏移值。
上述节点与时钟偏移值之间的关系可以参阅表1进行理解。
表1:节点对的指向关系与时钟偏移值的对应关系表
节点对的指向关系 时钟偏移值
节点1->节点2 时钟偏移值1
节点1->节点3 时钟偏移值2
节点2->节点3 时钟偏移值3
节点2->节点4 时钟偏移值4
节点3->节点4 时钟偏移值5
节点3->节点5 时钟偏移值6
节点4->节点1 时钟偏移值7
节点4->节点5 时钟偏移值8
节点5->节点1 时钟偏移值9
节点5->节点2 时钟偏移值10
在上述图3所示的场景示例中,主节点(节点1)可以获取表1中的10个时钟偏移值。然后将属于同一个线性无关环上的三个时钟偏移值写在一行,图3中有5个线性无关环,则可以写成一个5行3列的矩阵。该5行3列的时钟偏移值与线性无关环的对应关系可以参阅表2进行理解。
表2:5行3列的时钟偏移值与线性无关环的对应关系
线性无关环 第一列 第二列 第三列
节点1->节点2->节点4->节点1 时钟偏移值1 时钟偏移值4 时钟偏移值7
节点1->节点3->节点5->节点1 时钟偏移值2 时钟偏移值6 时钟偏移值9
节点1->节点3->节点4->节点1 时钟偏移值2 时钟偏移值5 时钟偏移值7
节点2->节点3->节点5->节点2 时钟偏移值3 时钟偏移值6 时钟偏移值10
节点2->节点4->节点5->节点2 时钟偏移值4 时钟偏移值8 时钟偏移值10
采用最小范式解的计算方法,该矩阵以每一行上表1中第一列、第二列和第三列的三个时钟偏移值之和等于0为目标进行计算,得到修正后的10个时钟偏移值。修正后的10个时钟偏移值可以参阅表3进行理解。
表3:节点对的指向关系与修正后的时钟偏移值的对应关系表
在该场景中,节点1是主节点,因此,时钟偏移值7’的相反值就是节点4(从节点)相对于节点1(主节点)的全局时钟偏移值,时钟偏移值9’的相反值就是节点5(从节点)相对于节点1(主节点)的全局时钟偏移值。时钟偏移值1’为节点2(从节点)相对于节点1(主节点)的全局时钟偏移值,时钟偏移值2’为节点3(从节点)相对于节点1(主节点)的全局时钟偏移值。
该场景中,作为从节点的节点2、节点3、节点4和节点5都与作为主节点的节点1有直接指向关系,若还存在一个节点6,该节点6位于节点5->节点2->节点6->节点5的线性无关环中,该节点6与节点1的全局时钟偏移值可以通过节点6->节点5的时钟偏移关系以及节点5->节点1的时钟偏移关系来确定出节点6相对于节点1的时钟偏移关系。然后根据该节点6相对于节点1的时钟偏移关系确定出该节点6相对于节点1的全局时钟偏移值。该种与主节点没有直接指向关系的节点6借助与主节点有直接指向关系的节点5来确定时钟偏移关系的过程也可以称为“流言传播”。这里只是列举节点6来表示“流言传播”,在分布式系统种包括的节点数量很多的情况下,可能需要通过多个间接关系才能关联到与主节点有直接关系的从节点上。无论需要借助一个还是借助多个间接关系来实上述过程,“流言传播”的原理都是相同的。
为了便于理解,下面以分布式系统中包括节点A、节点B和节点C,这三个节点形成一个线性无关环为例,描述上述修正多个时钟偏移值的过程。该分布式系统所包括的三个节点,节点A相对于节点B的本地时钟偏移值A=10,节点B对于节点C的本地时钟偏移值B=5,节点C相对于节点A的本地时钟偏移值C=-14,为了使本地时钟偏移值A+本地时钟偏移值B+本地时钟偏移值C=0,可以采用均摊误差的方式,如:该线性无关环的误差为10+5+(-14)=1,三个节点均摊,则该均摊误差=1/3,那么修正后的本地时钟偏移值为:本地时钟偏移值A’=10+1/3,本地时钟偏移值B’=5+1/3,本地时钟偏移值C’=(-14)+1/3。
可选地,上述步骤104可以包括:从处理器的寄存器中获取时钟基准值,时钟基准值是目标从节点的网卡设备通过与处理器之间的物理链路同步到处理器的寄存器的。
本申请实施例中,网卡设备(network adapter)将获取到的时钟基准值及时同步给处理器,这样,在通过软件方式实现时钟同步时,处理器运行用于时钟同步的程序,就可以从处理器的寄存器中获取该时钟基准值,不需要再从网卡时钟设备获取该时钟基准值,从而提高了时钟同步的速度。
本申请实施例提供的分布式系统的节点在软件和硬件上都有改进,相应内容可以参阅图8进行理解。如图8所示,节点300包括硬件、内核态(kernel space)以及用户态(userspace)。业务软件301运行在用户态,业务软件301包括时钟基准值获取模块302和基于机器学习的时钟同步模块303。本实施例涉及到的硬件包括处理器304和网卡设备306,处理器304中包括处理器时钟单元305,处理器时钟单元305可以为处理器304的片上存储器,比如寄存器,用于存储处理器时钟。网卡设备306中包括网卡时钟单元307,网卡时钟单元307可以为网卡设备306的存储器,用于存储网卡设备306的物理时钟。处理器时钟单元305处理器304和网卡设备306分别还包括用于实现各自功能的处理电路、接口电路等。业务软件301处于用户态,时钟基准值获取模块302和时钟同步模块303可以通过内核与处理器304和网卡设备306交换信息。例如,时钟基准值获取模块302可以通过系统调用(system call)、库函数或shell脚本等方式来访问内核态,进而通过内核态的组件(如硬件驱动等)来与硬件交换信息,比如获取处理器时钟单元305中的时钟作为时钟基准值。本申请实施例提供的节点300,在处理器时钟单元305和网卡时钟单元307之间建立物理链路,并实时将网卡设备物理时钟的频率和基准值送到处理器时钟单元305。
网卡设备306用于发送上述实施例中的探测报文,以及跟随报文,并接收响应报文,该网卡设备306具备打时间戳的功能。网卡设备306可以将通过上述实施例中的第一时间、第二时间、第三时间和第四时间传递给基于机器学习的时钟同步模块303,然后基于机器学习的时钟同步模块303可以执行上述实施例中的第一时间差和第二时间差的计算,根据得到的多个上边界数据和下边界数据得到两个节点之间的时钟偏移关系,进而计算出两个节点的本地时钟偏移值。从节点上的网卡设备306还用于将时钟偏移值发送给主节点,以及接收主节点发送的全局时钟偏移值。网卡时钟单元307用于获取本地时钟,也就是该节点的时钟基准值。网卡时钟单元307将该时钟基准值同步给处理器时钟单元305。时钟基准值获取模块302可以从处理器304获取该节点的时钟基准值。进而时钟基准值获取模块302可以根据时钟基准值和全局时钟偏移值计算出同步时钟。
上述实施例是从一个分布式系统的角度进行描述的,如图9所示,本申请实施例中的主时钟源设备和从时钟源设备可以从卫星获取卫星时钟,不同分布式系统中的主时钟源设备和从时钟源设备都可以从卫星获取卫星时钟,这样就可以实现全球时钟同步。
以上描述了分布式系统,以及时钟同步方法,下面结合附图介绍本申请实施例提供的时钟同步装置。
如图10所示,本申请实施例提供的分布式系统中的时钟同步装置40的一实施例,该分布式系统包括多个节点,多个节点包括主节点和多个从节点,该时钟同步装置40包括:
接收单元401,用于获取主节点发送的全局时钟偏移值,全局时钟偏移值指示目标从节点相对主节点的时钟偏移,全局时钟偏移值是根据多个本地时钟偏移值确定的,多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移。
获取单元402,用于获取时钟基准值,时钟基准值指示目标从节点的本地时钟。
处理单元403,用于根据时钟基准值和第一全局时钟偏移值进行时钟同步。
本申请实施例中,从节点可以根据主节点发送的全局时钟偏移值进行时钟同步,因为该全局时钟偏移值是主节点通过全局误差均摊得到的,这样相对于分布式系统中每个节点只能根据本地时钟偏移值做时钟同步,本申请有利于提高每个节点时钟同步的精度,本申请的时钟同步精度可以达到1微秒(us)。
可选地,获取单元402,用于在运行用于时钟同步的程序时,从处理器的寄存器中获取时钟基准值,时钟基准值是目标从节点的网卡设备通过与处理器之间的物理链路同步到寄存器的。
可选地,多个本地时钟偏移值包括另一节点相对目标从节点的本地时钟偏移值,发送单元404,用于向另一节点发送多个探测报文。
接收单元401,用于接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应。
处理单元403,用于根据多个探测报文的发送时间和接收时间,以及多个响应报文的发送时间和接收时间,确定目标从节点与另一节点之间的时钟偏移关系;根据时钟偏移关系确定另一节点相对目标从节点的本地时钟偏移值。
可选地,多个本地时钟偏移值包括另一节点相对目标从节点的本地时钟偏移值,发送单元404,还用于向另一节点发送多个探测报文。
接收单元401,用于接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应。
发送单元404,还用于发送多个跟随报文,所述多个跟随报文和所述多个探测报文一一对应,每个探测报文的发送时间与所述探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内。
处理单元403,还用于从多个探测报文中确定至少一个目标探测报文,另一节点接收至少一个目标探测报文的接收时间,与接收至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;根据至少一个目标探测报文的发送时间和接收时间,以及至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定目标从节点与另一节点之间的时钟偏移关系;根据时钟偏移关系确定另一节点相对目标从节点的本地时钟偏移值。
以上所提供的时钟同步装置40的相关内容可以参阅前述时钟同步方法实施例部分目标从节点的相关内容进行理解,此处不再重复赘述。
如图11所示,本申请实施例提供的分布式系统中的时钟同步装置50,该分布式系统包括多个节点,多个节点包括主节点和多个从节点,该时钟同步装置的一实施例包括:
获取单元501,用于获取多个本地时钟偏移值,多个本地时钟偏移值中的每个本地时钟偏移值指示分布式系统中两个节点之间的时钟偏移。
处理单元502,用于根据获取单元的多个本地时钟偏移值确定多个从节点中的目标从节点相对主节点的第一全局时钟偏移值。
发送单元503,用于向目标从节点发送第一全局时钟偏移值,第一全局时钟偏移值用于目标从节点进行时钟同步。
本申请提供的方案,可以结合两两节点之间的多个时钟偏移值确定每个从节点与主节点的全局时钟偏移值,这样相对于分布式系统中每个节点只能根据本地时钟偏移值做时钟同步,本申请通过主节点确定全局时钟偏移值可以实现全局的误差均摊,有利于提高每个节点时钟同步的精度,本申请的时钟同步精度可以达到1微秒(us)。
可选地,分布式系统的拓扑图中包括至少一个线性无关环,每个线性无关环中包括按照顺时针或逆时针的指向关系关联的至少三个节点,至少三个节点中每两个具有指向关系的节点具有一个本地时钟偏移值,至少三个节点包括主节点,或者,至少三个节点都为从节点。
可选地,多个本地时钟偏移值包括另一节点相对主节点的本地时钟偏移值,发送单元503,还用于向另一节点发送多个探测报文。
获取单元501,还用于接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应。
处理单元502,还用于根据多个探测报文的发送时间和接收时间,以及多个响应报文的发送时间和接收时间,确定主节点与另一节点之间的时钟偏移关系;根据时钟偏移关系确定另一节点相对主节点的本地时钟偏移值。
可选地,多个本地时钟偏移值包括另一节点相对主节点的本地时钟偏移值,发送单元503,还用于向另一节点发送多个探测报文。
获取单元501,还用于接收另一节点发送的多个探测报文对应的多个响应报文,多个探测报文和多个响应报文一一对应。
发送单元503,还用于发送多个跟随报文,多个跟随报文和多个探测报文一一对应,每个探测报文的发送时间与探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内。
处理单元502,还用于从多个探测报文中确定至少一个目标探测报文,另一节点接收至少一个目标探测报文的接收时间,与接收至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;根据至少一个目标探测报文的发送时间和接收时间,以及至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定主节点与另一节点之间的时钟偏移关系;根据时钟偏移关系确定另一节点相对主节点的本地时钟偏移值。
可选地,处理单元502,用于修正多个本地时钟偏移值,以得到修正后的多个本地时钟偏移值,修正后的多个本地时钟偏移值之和等于0,修正后的多个本地时钟偏移值中包括第一从节点相对主节点的第二全局时钟偏移值,第一从节点与主节点具有直接指向关系,目标从节点为第一从节点,则第二全局时钟偏移值为第一全局时钟偏移值。
处理单元502,用于根据第一从节点与主节点之间的时钟偏移关系,以及第二从节点与第一从节点之间的时钟偏移关系,确定第二从节点与主节点之间的时钟偏移关系,第一从节点与主节点具有直接指向关系,第二从节点与主节点之间没有直接指向关系;根据第二从节点与主节点之间的时钟偏移关系,确定第二从节点相对主节点的第三全局时钟偏移值,目标从节点为第二从节点,则第一全局时钟偏移值为第三全局时钟偏移值。
可选地,主节点的时钟源来自于卫星时钟。
以上所提供的时钟同步装置50的相关内容可以参阅前述时钟同步方法实施例部分主节点的相关内容进行理解,此处不再重复赘述。
图12所示,为本申请的实施例提供的上述实施例中所涉及的计算机设备60的一种可能的逻辑结构示意图,该计算机设备60可以为时钟同步装置。计算机设备60包括:处理器601、通信接口602、存储器603以及总线604。处理器601、通信接口602以及存储器603通过总线604相互连接。在本申请的实施例中,处理器601用于对时钟同步装置60的动作进行控制管理,例如,处理器601用于执行图2至图8中与确定相关的步骤,例如:步骤102、104、105、203至205。通信接口602用于支持计算机设备60进行通信,例如:通信接口602可以执行上述方法实施例中接与接收或发送相关的步骤。存储器603,用于存储数据库服务器的程序代码和数据。
其中,处理器601可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线604可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
参见图13,本申请实施例还提供一种分布式系统,包括:包括硬件层707和运行在硬件层707之上的虚拟机监控器(VMM)701,以及多个虚拟机702。其中,一个虚拟机可以作为分布式数据库系统中的主节点。其他虚拟机为从节点。
具体的,虚拟机702是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层707:虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如包括处理器704(例如CPU)和存储器705,还可以包括网卡703(例如RDMA网卡)、输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。
虚拟机702基于VMM,以及硬件层707提供的硬件资源,运行可执行程序,以实现上述图2至图8相关的实施例中时钟同步装置的部分或全部功能。为了简洁,在此不再赘述。
进一步地,该分布式数据库系统还可以包括宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);也有可能是由VMM和1个特权虚拟机的结合。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(如VCPU)、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。虚拟机702的VCPU通过执行存储在其对应的虚拟内存中的可执行程序,以实现或者执行本发明上述各方法实施例中所描述的方法步骤。例如,实现上述图2至图8相关的实施例中时钟同步装置的部分或全部功能。
在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图2至图8部分实施例所描述的时钟同步方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图2至图8部分实施例所描述的时钟同步方法。
在本申请的另一实施例中,还提供一种芯片系统,该芯片系统包括处理器,用于支持注入时序数据的装置或查询时序数据的装置实现上述图2至图8部分实施例所描述的时钟同步方法。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于时钟同步装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以权利要求的保护范围为准。

Claims (24)

1.一种分布式系统中的时钟同步方法,所述分布式系统包括多个节点,所述多个节点包括主节点和多个从节点,其特征在于,所述方法包括:
所述多个从节点中的目标从节点获取所述主节点发送的全局时钟偏移值,所述全局时钟偏移值指示所述目标从节点相对所述主节点的时钟偏移,所述全局时钟偏移值是根据多个本地时钟偏移值确定的,所述多个本地时钟偏移值中的每个本地时钟偏移值指示所述分布式系统中两个节点之间的时钟偏移,所述全局时钟偏移值是所述主节点对所述多个本地时钟偏移值做过误差均摊后得到的;
所述目标从节点获取时钟基准值,所述时钟基准值指示所述目标从节点的本地时钟;
所述目标从节点根据所述时钟基准值和所述全局时钟偏移值进行时钟同步。
2.根据权利要求1所述的方法,其特征在于,所述目标从节点获取时钟基准值包括:
从处理器的寄存器中获取所述时钟基准值,所述时钟基准值是所述目标从节点的网卡设备通过与所述处理器之间的物理链路同步到所述寄存器的。
3.根据权利要求1或2所述的方法,其特征在于,所述多个本地时钟偏移值包括另一节点相对所述目标从节点的本地时钟偏移值,所述方法还包括:
所述目标从节点向所述另一节点发送多个探测报文;
所述目标从节点接收所述另一节点发送的所述多个探测报文对应的多个响应报文,所述多个探测报文和所述多个响应报文一一对应;
所述目标从节点根据所述多个探测报文的发送时间和接收时间,以及所述多个响应报文的发送时间和接收时间,确定所述目标从节点与所述另一节点之间的时钟偏移关系;
所述目标从节点根据所述时钟偏移关系确定所述另一节点相对所述目标从节点的所述本地时钟偏移值。
4.根据权利要求1或2所述的方法,其特征在于,所述多个本地时钟偏移值包括另一节点相对所述目标从节点的本地时钟偏移值,所述方法还包括:
所述目标从节点向所述另一节点发送多个探测报文;
所述目标从节点接收所述另一节点发送的所述多个探测报文对应的多个响应报文,所述多个探测报文和所述多个响应报文一一对应;
所述目标从节点发送多个跟随报文,所述多个跟随报文和所述多个探测报文一一对应,每个探测报文的发送时间与所述探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内;
所述目标从节点从所述多个探测报文中确定至少一个目标探测报文,所述另一节点接收所述至少一个目标探测报文的接收时间,与接收所述至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;
所述目标从节点根据所述至少一个目标探测报文的发送时间和接收时间,以及所述至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定所述目标从节点与所述另一节点之间的时钟偏移关系;
所述目标从节点根据所述时钟偏移关系确定所述另一节点相对所述目标从节点的所述本地时钟偏移值。
5.一种分布式系统中的时钟同步方法,所述分布式系统包括多个节点,所述多个节点包括主节点和多个从节点,其特征在于,包括:
所述主节点获取多个本地时钟偏移值,所述多个本地时钟偏移值中的每个本地时钟偏移值指示所述分布式系统中两个节点之间的时钟偏移;
所述主节点根据所述多个本地时钟偏移值确定所述多个从节点中的目标从节点相对所述主节点的第一全局时钟偏移值,所述第一全局时钟偏移值是所述主节点对所述多个本地时钟偏移值做过误差均摊后得到的;
所述主节点向所述目标从节点发送所述第一全局时钟偏移值,所述第一全局时钟偏移值用于所述目标从节点进行时钟同步。
6.根据权利要求5所述的方法,其特征在于,所述分布式系统的拓扑图中包括至少一个线性无关环,每个线性无关环中包括按照顺时针或逆时针的指向关系关联的至少三个节点,所述至少三个节点中每两个具有指向关系的节点具有一个本地时钟偏移值,所述至少三个节点包括所述主节点,或者,所述至少三个节点都为从节点。
7.根据权利要求5或6所述的方法,其特征在于,所述多个本地时钟偏移值包括另一节点相对所述主节点的本地时钟偏移值,所述方法还包括:
所述主节点向所述另一节点发送多个探测报文;
所述主节点接收所述另一节点发送的所述多个探测报文对应的多个响应报文,所述多个探测报文和所述多个响应报文一一对应;
所述主节点根据所述多个探测报文的发送时间和接收时间,以及所述多个响应报文的发送时间和接收时间,确定所述主节点与所述另一节点之间的时钟偏移关系;
所述主节点根据所述时钟偏移关系确定所述另一节点相对所述主节点的所述本地时钟偏移值。
8.根据权利要求5或6所述的方法,其特征在于,所述多个本地时钟偏移值包括另一节点相对所述主节点的本地时钟偏移值,所述方法还包括:
所述主节点向所述另一节点发送多个探测报文;
所述主节点接收所述另一节点发送的所述多个探测报文对应的多个响应报文,所述多个探测报文和所述多个响应报文一一对应;
所述主节点发送多个跟随报文,所述多个跟随报文和所述多个探测报文一一对应,每个探测报文的发送时间与所述探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内;
所述主节点从所述多个探测报文中确定至少一个目标探测报文,所述另一节点接收所述至少一个目标探测报文的接收时间,与接收所述至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;
所述主节点根据所述至少一个目标探测报文的发送时间和接收时间,以及所述至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定所述主节点与所述另一节点之间的时钟偏移关系;
所述主节点根据所述时钟偏移关系确定所述另一节点相对所述主节点的所述本地时钟偏移值。
9.根据权利要求7所述的方法,其特征在于,所述主节点根据所述多个本地时钟偏移值确定所述多个从节点中的目标从节点相对所述主节点的第一全局时钟偏移值,包括:
所述主节点修正所述多个本地时钟偏移值,以得到修正后的多个本地时钟偏移值,所述修正后的多个本地时钟偏移值之和等于0,所述修正后的多个本地时钟偏移值中包括第一从节点相对所述主节点的第二全局时钟偏移值,所述第一从节点与所述主节点具有直接指向关系,所述目标从节点为所述第一从节点,则所述第二全局时钟偏移值为所述第一全局时钟偏移值。
10.根据权利要求7所述的方法,其特征在于,所述主节点根据所述多个本地时钟偏移值确定所述多个从节点中的目标从节点相对所述主节点的第一全局时钟偏移值,包括:
所述主节点根据第一从节点与所述主节点之间的时钟偏移关系,以及第二从节点与所述第一从节点之间的时钟偏移关系,确定第二从节点与所述主节点之间的时钟偏移关系,所述第一从节点与所述主节点具有直接指向关系,所述第二从节点与所述主节点之间没有直接指向关系;
所述主节点根据所述第二从节点与所述主节点之间的时钟偏移关系,确定所述第二从节点相对所述主节点的第三全局时钟偏移值,所述目标从节点为所述第二从节点,则所述第三全局时钟偏移值为所述第一全局时钟偏移值。
11.根据权利要求5或6所述的方法,其特征在于,所述主节点的时钟源来自于卫星时钟。
12.一种分布式系统,其特征在于,包括:多个节点,所述多个节点包括主节点和多个从节点;
所述主节点用于:获取多个本地时钟偏移值,所述多个本地时钟偏移值中的每个本地时钟偏移值指示所述分布式系统中两个节点之间的时钟偏移;根据所述多个本地时钟偏移值确定所述多个从节点中的目标从节点相对所述主节点的第一全局时钟偏移值;向所述目标从节点发送所述第一全局时钟偏移值,所述第一全局时钟偏移值是所述主节点对所述多个本地时钟偏移值做过误差均摊后得到的;
所述目标从节点用于:接收所述主节点发送的所述目标从节点相对所述主节点的第一全局时钟偏移值;获取时钟基准值,所述时钟基准值指示所述目标从节点的本地时钟;根据所述时钟基准值和所述第一全局时钟偏移值进行时钟同步。
13.根据权利要求12所述的分布式系统,其特征在于,所述目标从节点用于:从处理器的寄存器中获取所述时钟基准值,所述时钟基准值是所述目标从节点的网卡设备通过与所述处理器之间的物理链路同步到所述寄存器的。
14.根据权利要求12或13所述的分布式系统,其特征在于,所述分布式系统的拓扑图中包括至少一个线性无关环,每个线性无关环中包括按照顺时针或逆时针的指向关系关联的至少三个节点,所述至少三个节点中每两个具有指向关系的节点具有一个本地时钟偏移值,所述至少三个节点包括所述主节点,或者,所述至少三个节点都为从节点。
15.根据权利要求12或13所述的分布式系统,其特征在于,
所述两个节点中的一节点用于:
向另一节点发送多个探测报文;
接收所述另一节点发送的所述多个探测报文对应的多个响应报文,所述多个探测报文和所述多个响应报文一一对应;
根据所述多个探测报文的发送时间和接收时间,以及所述多个响应报文的发送时间和接收时间,确定所述一节点与所述另一节点之间的时钟偏移关系;
根据所述时钟偏移关系确定所述另一节点相对所述一节点的所述本地时钟偏移值,所述一节点为所述主节点或所述目标从节点。
16.根据权利要求12或13所述的分布式系统,其特征在于,
所述两个节点中的一节点用于:
向另一节点发送多个探测报文;
接收所述另一节点发送的所述多个探测报文对应的多个响应报文,所述多个探测报文和所述多个响应报文一一对应;
发送多个跟随报文,所述多个跟随报文和所述多个探测报文一一对应,每个探测报文的发送时间与所述探测报文对应的跟随报文的发送时间的间隔在第一预设时间间隔内;
从所述多个探测报文中确定至少一个目标探测报文,所述另一节点接收所述至少一个目标探测报文的接收时间,与接收所述至少一个目标探测报文对应的跟随报文的接收时间之间的间隔在第二预设时间间隔内;
根据所述至少一个目标探测报文的发送时间和接收时间,以及所述至少一个目标探测报文对应的响应报文的发送时间和接收时间,确定所述一节点与所述另一节点之间的时钟偏移关系;
根据所述时钟偏移关系确定所述另一节点相对所述一节点的所述本地时钟偏移值。
17.根据权利要求15所述的分布式系统,其特征在于,
所述主节点用于:
修正所述多个本地时钟偏移值,以得到修正后的多个本地时钟偏移值,所述修正后的多个本地时钟偏移值之和等于0,所述修正后的多个本地时钟偏移值中包括第一从节点相对所述主节点的第二全局时钟偏移值,所述第一从节点与所述主节点具有直接指向关系,所述目标从节点为所述第一从节点,则所述第二全局时钟偏移值为所述第一全局时钟偏移值。
18.根据权利要求15所述的分布式系统,其特征在于,
所述主节点用于:
根据第一从节点与所述主节点之间的时钟偏移关系,以及第二从节点与所述第一从节点之间的时钟偏移关系,确定第二从节点与所述主节点之间的时钟偏移关系,所述第一从节点与所述主节点具有直接指向关系,所述第二从节点与所述主节点之间没有直接指向关系;
根据所述第二从节点与所述主节点之间的时钟偏移关系,确定所述第二从节点相对所述主节点的第三全局时钟偏移值,所述目标从节点为所述第二从节点,则所述第三全局时钟偏移值为所述第一全局时钟偏移值。
19.一种分布式系统中的时钟同步装置,其特征在于,所述分布式系统包括多个节点,所述多个节点包括主节点和多个从节点,所述时钟同步装置包括:
接收单元,用于获取所述主节点发送的全局时钟偏移值,所述全局时钟偏移值指示目标从节点相对所述主节点的时钟偏移,所述全局时钟偏移值是根据多个本地时钟偏移值确定的,所述多个本地时钟偏移值中的每个本地时钟偏移值指示所述分布式系统中两个节点之间的时钟偏移,所述全局时钟偏移值是所述主节点对所述多个本地时钟偏移值做过误差均摊后得到的;
获取单元,用于获取时钟基准值,所述时钟基准值指示所述目标从节点的本地时钟;
处理单元,用于根据所述获取单元获取的时钟基准值和所述接收单元接收的全局时钟偏移值进行时钟同步。
20.一种分布式系统中的时钟同步装置,其特征在于,所述分布式系统包括多个节点,所述多个节点包括主节点和多个从节点,所述时钟同步装置包括:
获取单元,用于获取多个本地时钟偏移值,所述多个本地时钟偏移值中的每个本地时钟偏移值指示所述分布式系统中两个节点之间的时钟偏移;
处理单元,用于根据所述获取单元的多个本地时钟偏移值确定所述多个从节点中的目标从节点相对所述主节点的第一全局时钟偏移值,所述第一全局时钟偏移值是所述主节点对所述多个本地时钟偏移值做过误差均摊后得到的;
发送单元,用于向所述目标从节点发送所述处理单元得到的第一全局时钟偏移值,所述第一全局时钟偏移值用于所述目标从节点进行时钟同步。
21.一种时钟同步装置,其特征在于,所述时钟同步装置包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求1至4中任一项所述的方法的步骤。
22.一种时钟同步装置,其特征在于,所述时钟同步装置包括至少一个处理器、存储器及存储在所述存储器上并可被所述至少一个处理器执行的指令,其特征在于,所述至少一个处理器执行所述指令,以实现权利要求5至11中任一项所述的方法的步骤。
23.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至4中任一项所述的方法。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求5至11中任一项所述的方法。
CN202010906862.6A 2020-08-31 2020-08-31 一种分布式系统中的时钟同步方法、装置及系统 Active CN114124276B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010906862.6A CN114124276B (zh) 2020-08-31 2020-08-31 一种分布式系统中的时钟同步方法、装置及系统
PCT/CN2021/099640 WO2022041936A1 (zh) 2020-08-31 2021-06-11 一种分布式系统中的时钟同步方法、装置及系统
EP21859780.5A EP4199385A4 (en) 2020-08-31 2021-06-11 CLOCK SYNCHRONIZATION METHOD AND APPARATUS IN A DISTRIBUTED SYSTEM AND SYSTEM
US18/175,365 US20230213962A1 (en) 2020-08-31 2023-02-27 Clock synchronization method, apparatus, and system in distributed system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010906862.6A CN114124276B (zh) 2020-08-31 2020-08-31 一种分布式系统中的时钟同步方法、装置及系统

Publications (2)

Publication Number Publication Date
CN114124276A CN114124276A (zh) 2022-03-01
CN114124276B true CN114124276B (zh) 2023-07-18

Family

ID=80354479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010906862.6A Active CN114124276B (zh) 2020-08-31 2020-08-31 一种分布式系统中的时钟同步方法、装置及系统

Country Status (4)

Country Link
US (1) US20230213962A1 (zh)
EP (1) EP4199385A4 (zh)
CN (1) CN114124276B (zh)
WO (1) WO2022041936A1 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105680975A (zh) * 2016-03-07 2016-06-15 浙江大学 一种主从结构多节点网络的时间同步方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907685A (en) * 1995-08-04 1999-05-25 Microsoft Corporation System and method for synchronizing clocks in distributed computer nodes
WO2006044139A2 (en) * 2004-10-14 2006-04-27 Motorola, Inc. System and method for time synchronizing nodes in an automotive network using input capture
US8036247B2 (en) * 2007-01-05 2011-10-11 Frank Paul R System and method of synchronizing real time clock values in arbitrary distributed systems
US8995473B2 (en) * 2012-04-20 2015-03-31 Telefonaktiebolaget L M Ericsson (Publ) Ring based precise time data network clock phase adjustments
CN104158647A (zh) * 2014-08-26 2014-11-19 太原理工大学 一种无线传感网络时钟同步方法
CN106301653B (zh) * 2016-08-17 2019-05-14 中国航空工业集团公司西安飞行自动控制研究所 一种分布实时系统的分布节点时钟校准方法
CN106685564B (zh) * 2016-12-28 2018-10-02 深圳市英特瑞半导体科技有限公司 主时钟节点的相差测量方法及装置和校准方法及装置
EP3382918B1 (en) * 2017-03-30 2022-09-28 ADVA Optical Networking SE System and method of clock management in a packet data network
CN110505683B (zh) * 2019-09-23 2021-06-08 重庆邮电大学 一种面向平均一致性时钟同步的频率偏移估计方法
CN111585683B (zh) * 2020-05-11 2021-11-23 上海交通大学 一种面向时间敏感网络的高可靠时钟同步系统及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105680975A (zh) * 2016-03-07 2016-06-15 浙江大学 一种主从结构多节点网络的时间同步方法

Also Published As

Publication number Publication date
CN114124276A (zh) 2022-03-01
US20230213962A1 (en) 2023-07-06
EP4199385A4 (en) 2024-02-21
EP4199385A1 (en) 2023-06-21
WO2022041936A1 (zh) 2022-03-03

Similar Documents

Publication Publication Date Title
US11789938B1 (en) Ensuring globally consistent transactions
CN110932839B (zh) 一种网卡、时间同步方法、设备及计算机存储介质
EP3073381A2 (en) Virtual intelligent platform management interface (ipmi) satellite controller and method
US7921317B2 (en) Method and apparatus for synchronizing central processing units in a multiprocessor apparatus
US20200021443A1 (en) Method and timer for providing security-protected time information
CN111061338B (zh) 一种基板管理控制器时序的更新方法、系统及设备
CN103634092A (zh) Cpu集群中的高精度定时器
US9459652B1 (en) Virtual reference clock for virtual machines
CN107014381B (zh) Pld、dsp、组合导航系统、数据处理方法和装置
WO2013181690A1 (en) Synchronisation of a system of distributed computers
US7624336B2 (en) Selection of status data from synchronous redundant devices
CN105224459A (zh) 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法
CN108075851B (zh) 用于同步时钟的设备和方法
CN107315449B (zh) 计算机设备、读取时间的方法和写入时间的方法
CN114124276B (zh) 一种分布式系统中的时钟同步方法、装置及系统
CN116614194A (zh) 车辆时间同步方法、装置、车辆、存储介质和程序产品
US20140019945A1 (en) Software instrumentation apparatus and method
CN109274451B (zh) 一种时间获取方法、装置和设备
CN104597456A (zh) 一种gnss信号仿真系统的多板卡同步控制方法
EP3803603B1 (en) Software-trace message sink peripheral
CN102045156B (zh) 一种多模块数字信号同步处理方法及装置
US12019466B2 (en) Virtual precision time protocol clock devices for virtual nodes
CN111782271A (zh) 一种软硬件交互方法及装置、存储介质
Paulitsch Fault-tolerant clock synchronization for embedded distributed multi-cluster systems
CN115827263A (zh) 任务同步方法及其装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant