CN101981527B - 对异步分布式***中的时钟进行同步 - Google Patents
对异步分布式***中的时钟进行同步 Download PDFInfo
- Publication number
- CN101981527B CN101981527B CN2009801118154A CN200980111815A CN101981527B CN 101981527 B CN101981527 B CN 101981527B CN 2009801118154 A CN2009801118154 A CN 2009801118154A CN 200980111815 A CN200980111815 A CN 200980111815A CN 101981527 B CN101981527 B CN 101981527B
- Authority
- CN
- China
- Prior art keywords
- computer system
- time
- clock
- observed
- message
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000005540 biological transmission Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 9
- 230000014509 gene expression Effects 0.000 claims description 7
- 238000011002 quantification Methods 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 abstract description 7
- 230000009471 action Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 208000004350 Strabismus Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/14—Time supervision arrangements, e.g. real time clock
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
- G06F21/725—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits operating on a secure reference time value
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0664—Clock or time synchronisation among packet nodes using timestamps unidirectional timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明涉及用于对异步分布式***中的时钟进行同步的方法和***。本发明的各实施例便于创建跨诸如常见异步(分布式)***内的各个成员等一组对等节点(观察者)的不稳定且实际的公共时间(一天中的时间)基准。可以在不参考公共主机的情况下,经由跟踪并累积节点(观察者)对之间的最坏情况相对时间偏移来创建一类伪同步***。如此,给定对一个节点的观察,合作节点可以基本上确保另一个节点将观察到的一天中的时间的下限。因此,本发明的各实施例可被应用来在不使用公共的外部一天中的时间时钟实体的情况下提供跨这样的异步***的最坏情况(即,最大偏差)当前时间的一致(基本上安全)的视图。
Description
技术领域
本发明涉及对异步分布式***中的时钟进行同步。
背景技术
背景和相关技术
计算机***和相关技术影响社会的许多方面。的确,计算机***处理信息的能力已转变了人们生活和工作的方式。计算机***现在通常执行在计算机***出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机***彼此耦合并耦合到其他电子设备以形成计算机***和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机***和/或多个不同的计算环境上。
网络实际上已变得如此丰富,以致简单的启用网络的计算***可以通过通常被称为“因特网”的网络聚集而与散布在全球的数百万个其他计算***中的任何一个进行通信。这样的计算***可以包括台式计算机、膝上型计算机或平板个人计算机;个人数字助理(PDA);电话;或能够通过数字网络通信的任何其他计算机或设备。
为通过网络进行通信,一个计算***(在本文中称为“发送计算***”)构造或以其他方式访问电子消息,并通过网络将该电子消息传送到另一计算***(在本文中称为“接收计算***”)。在电子消息是电子邮件或即时消息时,该电子消息可由人类用户阅读,或改为由在接收计算***上运行的应用程序读取。该电子消息可由在发送计算***上运行的应用程序在可能的人类用户的帮助的情况下来构造。
在分布式计算环境内,多个不同节点可以互操作以执行所需计算操作。计算操作的适当执行通常可取决于彼此具有对时间的某种共同理解的各个不同节点。许多***利用通常被分发给所有节点的、各节点可进行参考来获得绝对时间的“主”时钟。然而,将时钟同步到绝对时间需要同步协议和高连接性。通过参考主时钟的时钟同步还造成潜在瓶颈点和故障的中心点。在诸如因特网等一些网络上,高连接性实际上是不可能的,因为计算机***频繁地连接并断开该网络。
一些对等***使用与公共的一天中的时间时钟源的周期性同步来实现伪同步行为。因此,这些***也具有必须存在且在某些时刻(例如,新成员加入)可用的公共时间主机,以便拥有可信且安全的***。
发明内容本发明涉及用于对异步分布式***中的时钟进行同步的方法和***。在一些实施例中,确定观察计算机***所声称的在一不同的被观察计算机***处的时间与该被观察计算机***处的实际(本地)时间之间的偏差。观察计算机***参与同被观察计算机***的一个或多个消息交换。
消息交换包括观察计算机***记录在发送消息时该观察计算机***处的时钟的发送时间。消息交换包括观察计算机***向被观察计算机***发送一个或多个消息。消息交换包括观察计算机***随后从被观察计算机***接收响应于该消息的相关消息。该相关消息包含来自被观察计算机***的时间(其本地时间)。消息交换包括观察计算机***记录在接收到该相关消息时该观察计算机***处的(本地)时钟的接收时间。消息交换包括观察计算机***记录在接收到该相关消息时被观察计算机***的本地时间。
观察计算机***基于所记录的发送消息的时间与包括在相关消息中的来自被观察计算机***的时间之差、时钟量程约束、以及时钟漂移约束来计算被观察计算机***处的时间相对于观察计算机***的本地时间的下限。观察计算机***基于所记录的接收到相关消息的本地时间与包括在该相关消息中的来自被观察计算机***的时间之差、时钟量程约束、以及时钟漂移约束来计算被观察计算机***处的时间相对于观察计算机***的时间的上限。
观察计算机***计算上限和下限之差。观察计算机***通过使计算得到的差除以平均因子(如计算得到的差除以2)来计算观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的最大偏差。后续消息交换可被用来进一步细化下限和上限。观察计算机***可以基于下限和上限来计算指示一事件在被观察计算机***处发生的时间范围。
在其他实施例中,计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差。计算机***访问时钟量程约束。时钟量程约束指示异步分布式***的计算机***间的时钟量化之间的最大差。计算机***访问漂移率约束。漂移率约束指示异步分布式***的每一计算机***在指定时间段内的最大时钟漂移。
计算机***访问最大往返约束。最大往返约束指示在异步分布式***的任何两个计算机***之间进行的请求/回复消息交换的最大时间量。计算机***基于时钟量程约束、漂移率约束、以及最大往返约束来计算异步***的不同计算机***的时钟之间的最大偏差。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
在随后的描述中阐述,并且部分地将从本说明书中显而易见,或可以通过本发明的实施来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。
附图说明
为了描述可以获得本发明的上文所列举的及其他优点和特征的方式,将通过参考附图中所示的本发明的各具体实施例来呈现上文简要描述的本发明的更具体的描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中:
图1示出示例异步分布式***,它便于对异步分布式***中的时钟进行同步。
图2是用于确定观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的偏差的示例方法的流程图。
图3是用于指示一事件在被观察计算机***处的发生时间的示例方法的流程图。
图4是用于计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差的示例方法的流程图。
图5示出便于计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差的示例计算机体系结构。
具体实施方式
本发明涉及用于对异步分布式***中的时钟进行同步的方法和***。在一些实施例中,确定观察计算机***所声称的一不同的被观察计算机***处的时间与被观察计算机***处的实际(本地)时间之间的偏差。观察计算机***参与同被观察计算机***的一个或多个消息交换。
消息交换包括观察计算机***记录在发送消息时该观察计算机***处的时钟的发送时间。消息交换包括观察计算机***向被观察计算机***发送一个或多个消息。消息交换包括观察计算机***随后从被观察计算机***接收响应于该消息的相关消息。该相关消息包含来自被观察计算机***的时间(其本地时间)。消息交换包括观察计算机***记录在接收到该相关消息时该观察计算机***处的(本地)时钟的接收时间。消息交换包括观察计算机***记录在接收到该相关消息时被观察计算机***的本地时间。
观察计算机***基于所记录的发送消息的时间与包括在相关消息中的来自被观察计算机***的时间之差、时钟量程约束、以及时钟漂移约束来计算被观察计算机***处的时间相对于观察计算机***的本地时间的下限。观察计算机***基于所记录的接收到相关消息的本地时间与包括在该相关消息中的来自被观察计算机***的时间之差、时钟量程约束、以及时钟漂移约束来计算被观察计算机***处的时间相对于观察计算机***的时间的上限。
观察计算机***计算上限和下限之差。观察计算机***通过使计算得到的差除以平均因子(如计算得到的差除以2)来计算观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的最大偏差。后续消息交换可被用来进一步细化下限和上限。观察计算机***可以基于下限和上限来计算指示一事件在被观察计算机***处发生的时间范围。
在其他实施例中,计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差。计算机***访问时钟量程约束。时钟量程约束指示异步分布式***的计算机***间的时钟量化之间的最大差。计算机***访问漂移率约束。漂移率约束指示异步分布式***的每一计算机***在指定时间段内的最大时钟漂移。
计算机***访问最大往返约束。最大往返约束指示在异步分布式***的任何两个计算机***之间进行的请求/回复消息交换的最大时间量。计算机***基于时钟量程约束、漂移率约束、以及最大往返约束来计算异步***的不同计算机***的时钟之间的最大偏差。
本发明的各实施例可以包括或利用含有计算机硬件的专用或通用计算机,这将在以下做出进一步讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机***访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介质:物理存储介质和传输介质。
物理存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机***和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上面各项的组合也应该包括在计算机可读介质的范围内。
此外,在到达各种计算机***组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动转移到物理存储介质(或者相反)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机***RAM和/或计算机***处的较不易失性的物理存储介质。由此,应当理解,物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机***组件中。
计算机可执行指令包括例如使通用计算机、专用计算机或专用处理设备执行某一功能或一组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解的是,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机***配置的网络计算环境中实践,这些计算机***配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器***、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机***两者都执行任务的分布式***环境中实践。在分布式***环境中,程序模块可以位于本地和远程存储器存储设备中。
在本说明书及所附权利要求书中,量化被定义为不是连续的,即在一定持续时间内(例如,1秒)保持一个值并随后变成新值。
在本说明书及所附权利要求书中,漂移被定义为一个时钟与另一时钟相比不以完全相同的速度运行。因此,在某一时间量之后,一个时钟可能“漂离”另一时钟。时钟可在不同的方向上漂移(例如,相对于另一时钟落后或超前)并能以不同的速度漂移。在不同的时刻,个别的时钟的漂移还可响应于环境改变(如周围温度、电池电量等)而变化。
一般而言,异步***内的时钟可以顺应一个或多个约束。例如,实际的计算机时钟可能被限于以非常接近同一速度(由它们本地时钟值的前进来测量)来度过时间。因此,可以用最坏情况的方式来补偿时钟的机械制造中的不精密性(相对很小并且可能无关紧要)。因此,本发明的各实施例利用考虑这些约束的算法,使得主观察者可以与其他观察者合作来建立关于从主观察者的观点来看的在给定时间其他观察者的时钟值的相对强的界限(即使主观察者不能直接观察到其他时钟)。
因此,本发明的各实施例可被实现来在不使用公共的外部一天中的时间(time-of-day)时钟实体的情况下提供跨异步***的最差情况(例如,最大偏差)当前时间的相对一致(安全)的视图。异步分布式***中的计算机***不依赖公共时间主机,并且因此实际上是“无主机”的。
在一些实施例中,主观察者(例如,节点)可以观察单个时钟(它的时钟)的值,并且一组对等观察者(以主观察者相同的形式)可以向其他观察者传递异步非瞬时消息,从而通过观察者间通信路径引入不确定的延迟。
本发明的一些示例的描述基于以下符号来提供:
1.t0、t1、t2……是公共时间线中的具体事件指示。
2.(t1-t0)描述两个事件(t1和t0)之间的确切持续时间。
3.如果事件t0在另一事件t1之前发生,则:t0<t1
4.X(t0)是在事件t0发生时观察到的时钟X的值。
3.(X(t1)-X(t0))是两个事件(t1和t0)之间的由时钟X测量的持续时间值(时间跨度)。
5.OX定义时钟X的观察者。
6.“OX.发送(OY,{内容})”表示OX向O发送具有指定内容的消息(例如,请求)的事件。
7.“OX.接收(OY,{内容})”表示OX向从OY接收具有指定内容的消息(例如,回复)的事件。
因此,在以下异步分布式***约束下:
A.时钟的值单调递增:
如果t0<t1,则X(t0)<=X(t1)
B.时钟量程Q存在上限,使得对于任何时钟X:
如果t0+Q<t1,则X(t0)<X(t1)
C.时钟漂移D存在上限,使得对于任何时钟X和事件t0<t1:
如果t0<t1,则(1-D)*(X(t1)-X(t0))<=(t1-t0)+Q
D.以及
如果t0<t1,则(t1-t0)<=((1+D)*(X(t1)-X(t0)))+Q
利用所描述的符号并且在具有所描述的约束的异步分布式***中,可以发生以下消息交换序列:
t0:OX观察到X(t0)
t1:OX.发送(OY,{X(t0)})
t2:OY接收(OX,{X(t0)})
t3:OY观察到Y(t3)
t4:OY.发送(OX,{X(t0),Y(t3)}
t5:OX.接收(OY,{X(t0),Y(t3)}
t6:OX观察到X(t6)
该消息交换序列是请求/回复操作的序列,其中OX向OY查询OY的当前本地时钟值,从而记录它这样做的时间(t0)和它得到回复的时间(t6)。OX现在知道Y在X的本地时钟具有值X(t0)时的时间与在X的本地时钟具有值X(t6)时的时间之间的某一点具有值Y(t3)。虽然可以使用消息的组合来表示全局次序,但OX和OY中的每一个可以根据它们自己的独立时间线来操作。
在没有漂移的完美本地时钟的情况下,OX可以确立与时钟Y在t6之后的任何时刻t的值有关的以下界限:
Y(t)>=X(t)-(X(t6)-Y(t3))
Y(t)<=X(t)+(Y(t3)-X(t0))
考虑量化,OX可以确立与时钟Y在t6之后的任何时刻t的值有关的以下界限:
Y(t)>=X(t)-(X(t6)-Y(t3)+2Q)
Y(t)<=X(t)+(Y(t3)-X(t0)+2Q)
Q项表示时钟是量化的。为了理解量化对每一界限添加了两个Q项,假定作出了观察,使得X(t0)=0,Y(t3)=1以及X(t6)=2。这将暗示着时钟处于不确定度为2的同步中。为了找到实际的不确定度,可以考虑这三个时钟中的每一个的可导致这一观察的边界情况:
前三列指示观察的时间相对于时钟变成给定时间的时间。例如,在第二列,“2-Δ”指示在Y将其值从1变成2的事件之前的事件的时间。第四列是列1和2之差,并且第五列是列2和3之差。
取来自最后两列的最大值并令Δ逼近0,可发现在任一方向上的最大不确定度都是2。将这一不确定度与观察到的不确定度相比较,量化引入了量为2的可能误差。根据观察对这些值的改变同等地影响观察到的结果和可能的边界情况,这可一般化到任何X(t0)、Y(t3)以及X(t6)。因此,量化引入等于2Q的误差项。
考虑量化和时钟漂移,OX可以确立与时钟Y在t6之后的任何时刻t的值有关的以下界限:
Y(t)>=X(t)-(X(t6)-Y(t3)+2Q)-2D(X(t)-(X(t6)+X(t0))/2+2Q)
Y(t)<=X(t)+(Y(t3)-X(t0)+2Q)+2D(X(t)-(X(t6)+X(t0))/2+2Q)
这些值之差是:
(X(t)+(Y(t3)-X(t0)+2Q)+2D(X(t)-(X(t6)+X(t0))/2+2Q))-
(X(t)-(X(t6)-Y(t3)+2Q)-2D(X(t)-(X(t6)+X(t0))/2+2Q))
=X(t)-X(t)+Y(t3)-Y(t3)+X(t6)-X(t0)+4Q+4D(X(t)-(X(t6)+X(t0))/2+2Q)
=X(t6)-X(t0)+4Q+4D(X(t)-(X(t6)+X(t0))/2+2Q)
这暗示最大误差是:
(X(t6)-X(t0))/2+2Q+2D(X(t)-(X(t6)+X(t0))/2+2Q)
在该表达式中,(X(t6)-X(t0))是从OX到OY并返回的请求-回复交互所花的时间。Q取决于时钟的值被更新的频率。最后一项2D(X(t)-(X(t6)+X(t0))/2+2Q)指示界限如何因为可能的时钟漂移而随时间变弱(即,衰减)。
消息交换序列查询可以重复多次并且OX可以选择来自任何查询的最紧上限,并可选择来自任何查询的最紧下限。在选择时,最紧上限和最紧下限不必来自同一查询。通过周期性地重复消息交换序列查询,观察者(在该示例中是OX)可以最小化第三项,因为在任何时刻T都将具有最近的测量。
图1示出异步分布式***100,它便于对异步分布式***100中的时钟进行同步。参考图1,计算机体系结构100包括计算机***101、151以及其他计算机***191。所描绘的计算机***中的每一个及其对应的组件可通过诸如例如局域网(“LAN”)、广域网(“WAN”)、通用串行总线(USB)或甚至因特网等网络(或作为网络的一部分)彼此连接。因此,所描绘的组件中的每一个以及任何其他连接的组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。
异步分布式***100实际上可以是任何类型的异步***,如对等***。
如图所示,计算机***101包括时钟管理模块102和时钟103。一般而言,计算机***101被配置成参与同其他计算机***的请求/回复消息交换序列,并基于与该请求/回复消息交换序列相关联的时间数据来维护被观察计算机***处的所声称的时间。
时钟管理模块102被配置成记录并维护与计算机***101同异步分布式***100的其他计算机***之间的通信相关联的时间数据(例如,时间数据194)。时钟管理模块102可以当在计算机***101处发送和接收消息时记录时钟103处的时间。时钟管理模块102还可以存储从被观察计算机***(例如,计算机***151)接收到的、包含在作为请求/回复消息交换序列的一部分接收到的回复消息中的时间。根据所记录的时间和接收到的时间,时钟管理模块102可以指示指定范围内事件在被观察计算机***处发生的时间。
如图所示,计算机***151包括时钟管理模块152和时钟153。一般而言,计算机***151被配置成参与同其他计算机***的请求/回复消息交换序列,并基于与该请求/回复消息交换序列相关联的时间数据来维护被观察计算机***处的所声称的时间。
时钟管理模块152被配置成记录并维护与计算机***151同异步分布式***100的其他计算机***之间的通信相关联的时间数据。时钟管理模块152可以当在计算机***151处发送和接收消息时记录时钟153处的时间。时钟管理模块152还可以存储从被观察计算机***(例如,计算机***101)接收到的、包含在作为请求/回复消息交换序列的一部分接收到的回复消息中的时间。根据所记录的时间和接收到的时间,时钟管理模块152可以指示指定范围内事件在被观察计算机***处发生的时间。
本发明的各实施例包括观察他们自己的时钟并推断其他时钟的值的范围的各个计算机***。例如,计算机***101可以观察时钟103并可以推断时钟153(以及其他计算机***191处的时钟)的值的范围。类似地,计算机***151可以观察时钟153并可以推断时钟103(以及其他计算机***191处的时钟)的值的范围。其他计算机***191也可以观察它们自己的时钟并推断时钟103和153中的每一个的值的范围。
时钟管理模块还可以用异步分布式***100中的各时钟之间的最大量化差Q(例如,量化192)和异步分布式***100中的每时间段D的最大时钟漂移(例如,漂移193)来配置。
因此,本发明的一些实施例包括利用请求/回复消息交换来确定观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的偏差。请求/回复消息交换可包括请求消息和对应的回复消息。例如,消息交换184包括请求181和回复182。根据所确定的偏差,观察计算机***可以例如推断被观察计算机***处的时钟的值的范围。然而,还可以使用具有更松散相互关系(例如,比明确的请求/回复更松散)的消息。
因此,本发明的一些实施例包括利用在所发送和接收到的消息之间具有较松散相互关系的请求/回复消息交换来确定观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的偏差。例如,一个计算机可以发送多个请求并收回较少数量的对应响应或只收回一个对应响应(例如,由其他消息交换185表示)。此外,来自一个计算机的回复还可以表示从该一个计算机回到另一计算机的请求。因此,消息可以表示请求和回复两者。另外,通常不需要规定要在何时返回对接收到的请求的回复。因此,即使在请求/回复对之间存在强相关的情况下,对何时返回回复也没有约束。例如,在请求/回复184内,没有规定响应于接收到请求181在何时返回回复182的时间约束。
图2是用于确定观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的偏差的示例方法200的流程图,该方法包括。将参考异步分布式***100中的组件和数据来描述方法200。
方法200包括参与同被观察计算机***的一个或多个消息交换的动作(动作201)。例如,计算机***101可以参与同计算机***151的消息交换184。或者,计算机***101可以参与一个或多个其他消息交换185。与消息交换184相比,这些消息交换可以具有请求和回复之间的更松散耦合。在其他实施例中,计算机***101参与其他消息交换185但不参与消息交换184。因此,计算机***101可以参与不包括任何请求/回复消息交换的相关消息的松散耦合消息交换。
参与同被观察计算机***的一个或多个消息交换可包括记录在发送消息时观察计算机***处的时钟的时间的动作(动作202)。例如,时钟管理模块102可以在时间数据194中记录时间条目171。时间条目171记录在计算机***101发送请求181时时钟103处的时间,例如以小时:分钟:秒.毫秒的格式。因此,时间条目181指示请求181是在时钟103指示时间8点时发送的。作为替换或组合,还可以为其他请求(例如,要包括在其他消息交换185中的请求)添加时间条目。参与同被观察计算机***的一个或多个消息交换可包括向被观察计算机***发送消息的动作(动作203),该消息包括所记录的发送时间。例如,计算机***101可以向计算机***151发送请求181。请求181可包括来自时间条目171的信息。作为替换或组合,也可以从计算机***101将一个或多个其他请求(例如,作为其他消息交换185的一部分)发送到计算机***151。
参与同被观察计算机***的一个或多个消息交换可包括随后从被观察计算机***接收响应于该消息的相关消息的动作(动作204),该相关消息包含来自被观察计算机***的时间。例如,计算机***101可以接收来自计算机***151的回复182。回复182包括时间183。时间183指示在时钟153处观察到的时间(例如,发送182回复的时间、处理请求181的时间,等等)。作为替换或组合,也可从计算机***151接收一个或多个其他回复(例如,其他消息交换185中包括的回复)。因此,一个或多个回复可包括指示在时钟153处观察到的时间的时间。
参与同被观察计算机***的一个或多个消息交换可包括记录在接收到相关消息时观察计算机***处的时钟的接收时间的动作(动作205)。例如,时钟管理模块102可以在时间数据194中记录时间条目172。时间条目172记录在计算机***101接收到回复182时时钟103处的时间。因此,时间条目172指示回复182是在时钟103指示时间8点又64毫秒时接收到的。作为替换或组合,时钟管理模块102还可以(在时间数据194中)记录指示何时接收到其他消息交换185包括的其他回复的时间条目。
参与同被观察计算机***的一个或多个消息交换可包括记录来自被观察计算机***的时间的动作(动作206)。例如,时钟管理模块102可以在时间数据194中记录时间条目173。时间条目173记录在时钟153处观察到的计算机***151的时间(例如,接收到请求181、在请求181的处理期间,等等)。时间条目173指示在请求回复交换序列184期间是在8点又43毫秒观察到时钟153的时间。作为替换或组合,时钟管理模块102还可以(在时间数据194中)记录用于其他消息交换185中包括的其他回复中所包含的时间的时间条目。
方法200包括基于所记录的发送消息的时间与来自被观察计算机***的包括在相关消息中的时间之差来计算被观察计算机***处的时间相对于观察计算机***的时间的下限的动作(动作207)。例如,时钟管理模块102可以计算时钟103的时间相对于时钟153的下限161。时钟管理模块102可以实现上述公式来计算关于时钟153的下限161(下限=(发送181-时间183)-(20毫秒+时钟漂移分量))。因此,在接收到回复182并且观察到时钟103读数8:00:00.064的时刻,下限161可以如下计算:
时钟153>=
8:00:00.064
-(8:00:00.064-8:00:00.043+15毫秒)
-2(0.0007)(8:00:00.064-(8:00:00.064+8:00:00.000)/2+15毫秒)
时钟153>=8:00:00.064-(21毫秒+15毫秒)-0.0014(32毫秒+15毫秒)
时钟153>=8:00:00.064-36毫秒-0.07毫秒
时钟153>=8:00:00.027
作为替换或组合,时钟管理模块102还可从与其他消息交换185中的其他请求和其他回复相关的时间条目来计算下限161。
方法200包括基于所记录的接收到相关消息的时间与来自被观察计算机***的包括在该相关消息中的时间之差来计算被观察计算机***处的时间相对于观察计算机***的时间的上限的动作(动作208)。例如,时钟管理模块102可以计算时钟103的时间相对于时钟153的上限162(上限=(接收182-时间183)-(20毫秒+时钟漂移分量))。时钟管理模块102可以实现上述公式来计算关于时钟153的上限161。因此,在接收到回复183并且观察到时钟103读数8:00:00.064的时刻,上限162可以如下计算:
时钟153<=
8:00:00.064
+(8:00:00.043-8:00:00.000+15毫秒)
+2(0.0007)(8:00:00.064-(8:00:00.064+8:00:00.000)/2+15毫秒)
时钟153<=8:00:00.064+(43毫秒+15毫秒)+0.0014(32毫秒+15毫秒)
时钟153<=8:00:00.064+58毫秒+0.07毫秒
时钟153<=8:00:00.123
作为替换或组合,时钟管理模块102还可从与其他消息交换185中的其他请求和其他回复相关的时间条目来计算上限162。
方法200包括计算上限和下限之差的动作(动作209)。例如,时钟管理模块102可以计算上限162和下限161之差。在接收到回复182的时刻并考虑量化192,上限162和下限161之差大约等于123毫秒-27毫秒,即96毫秒。
方法200包括通过将计算得到的差除以平均因子来计算观察计算机***所声称的被观察计算机***处的时间与被观察计算机***处的实际时间之间的最大偏差的动作(动作210)。例如,时钟管理模块102可以将96毫秒除以2来计算得到48毫秒。时钟103与153之间的偏移量的中点是((8:00:00.027+8:00:00.123)/2)-8:00:00.064,这指示时钟153比时钟103大约提前12毫秒。
如上所述,作为消息交换184的替换或与其组合,计算机***101可以参与同计算机***151的其他消息交换。因此,所推断的时间范围的下限和/或上限可以基于这些其他消息交换来进行细化。因此,下限161可以在任何后续发送时间-观察到的时间小于大于-43毫秒时进行细化。例如,如果发送时间是8:01:27.53并且观察到的时间是8:01:27.69,则下限161可被细化成-(16毫秒+20毫秒+时钟漂移分量)。类似地,上限162可以在任何后续接收时间-观察到的时间小于小于21毫秒时进行细化。例如,如果接收时间是8:03:52.07并且观察到的时间是8:03:51.92,则上限162可被细化成(15毫秒+20毫秒+时钟漂移分量)。
下限和上限两者可以指示观察计算机***时钟落后被观察时钟的某一时间量。例如,下限可以是-47毫秒且上限可以是-12毫秒。下限和上限的这一组合指示计算机***时钟落后被观察时钟至少12毫秒并且落后被观察时钟不超过47毫秒。
类似地,下限和上限两者可以指示观察计算机***时钟超前被观察时钟的某一时间量。例如,下限可以是17毫秒且上限可以是82毫秒。下限和上限的这一组合指示计算机***时钟超前被观察时钟至少17毫秒并且超前被观察时钟不超过82毫秒。
在一些实施例中,时钟管理模块被配置成至少在预定义时间间隔上(如,每分钟、每两分钟,等等)启动请求/回复消息交换或其他消息交换。消息交换可以承载在异步分布式***中的各计算机***之间交换的其他(例如,应用程序)消息上。还可以根据其他策略(如越过漂移限度)来启动用于时钟同步的请求/回复或其他消息交换。
在推断了被观察计算机***处的时间之后,观察计算机可以使用所推断的时间来计算一事件在被观察计算机***处发生或可能(即,将要)发生的时间的时间界限。
因此,本发明的各实施例便于两个计算机***之间对时间共同理解,即对时间的度过的安全视图。例如,从最大偏差或时间范围,观察计算机***可以制定被观察计算机***处的时间度过的安全视图。从安全的观点看,观察计算机***可以假定(在计算得到的界限内)过去事件何时在被观察计算机***处发生。例如,计算机***101可以假定事件196何时在计算机***151处发生。同样从安全观点看,两个计算机***可以就一事件要在将来何时发生达成一致。结果,一个计算机***可以假定(在计算得到的界限内)一事件何时将在另一计算机***处发生。
图3是用于指示一事件在被观察计算机***处的发生时间的示例方法的流程图。
方法300包括参与同被观察计算机***的一个或多个消息交换的动作(动作301)。每一消息交换包括记录在发送请求消息时观察计算机***处的时钟的时间的动作(动作302)。每一消息交换包括向被观察计算机***发送一个或多个请求消息的动作(动作303),每一请求消息包括对应的所记录的发送时间。每一消息交换包括随后从被观察计算机***接收响应于请求消息的一个或多个回复消息的动作(动作304),回复消息包含来自被观察计算机***的时间。每一消息交换包括记录在接收到回复消息时观察计算机***处的时钟的时间的动作(动作305)。
例如,计算机***101可以参与消息交换184和其他消息交换185。每一消息交换可包括:发送一个或多个请求(例如,181),记录发送每一请求的时间(例如,171),接收一个或多个回复(例如,182),记录接收到每一回复的时间(例如,172),以及记录包含在来自观察者计算机***的回复(例如,173)中的时间(例如,183)。
方法300包括基于一个或多个消息交换来计算被观察计算机***相对于观察计算机***的时间的时间界限的动作(动作306),该时间界限被配置成在该一个或多个消息交换之后被应用于观察计算机***处的时间以声称被观察计算机***处的指定时间范围。该时间界限包括表示计算得到的时间界限的底部的时间下限和表示计算得到的时间界限的顶部的时间上限。例如,计算机***101可以计算并细化下限161和上限162。
方法300包括观察计算机***在一个或多个消息交换之后接收指示的动作(动作307),该指示选自以下各项:a)过去事件在被观察计算机***处发生的指示以及b)一事件何时将在被观察计算机***处发生的指示。例如,计算机***101可以检测事件196。在接收到事件196之后,时钟管理模块可以在时间数据194中记录时间条目174。时间条目194指示在8:00:28.016时检测到事件196。或者,计算机***101可以接收一事件何时将在计算机***151处发生的指示并记录该事件要在何时发生的时间条目。
方法300包括观察计算机***计算被观察计算机***的时间范围的动作(动作308),该时间范围指示在被观察计算机***处a)过去事件何时发生或b)事件何时将在被观察计算机***处发生,该时间范围是基于在接收到指示时观察计算机***处的时间并基于计算得到的时间界限的下限和上限来计算的。例如,根据时间条目174,时钟管理模块102可以计算指示事件196在计算机***151处何时发生的时间范围。如此,新下限可如下计算:
时钟153>=
8:00:00.064
-(8:00:00.064-8:00:00.043+15毫秒)
-2(0.0007)(8:00:28.016-(8:00:00.064+8:00:00.000)/2+15毫秒)
时钟153>=8:00:00.064-(21毫秒+15毫秒)-0.0014(28,016毫秒-
32毫秒+15毫秒)
时钟153>=8:00:00.064-36毫秒-39.2毫秒
时钟153>=7:59:59.089
并且新上限可如下计算:
时钟153<=
8:00:00.064
+(8:00:00.043-8:00:00.000+15毫秒)
+2(0.0007)(8:00:28.016-(8:00:00.064+8:00:00.000)/2+15毫秒)
时钟153<=8:00:00.064+(43毫秒+15毫秒)+0.0014(32毫秒+15毫秒)
时钟153<=8:00:00.064+58毫秒+39.2毫秒
时钟153<=8:00:00.161
因此,在检测到事件196的时刻并考虑量化192,上限162和下限161之差大约等于161毫秒-(-11毫秒),即172毫秒。时钟管理模块102可以将172毫秒除以2以计算得到86毫秒作为最大偏差。这一新偏差可被用来计算时间186,即事件196在计算机***151处发生的推断时间(在最大偏差内)。时钟103和153之间的偏移量的中点是:
((8:00:27.970+8:00:28.102)/2)-8:00:28.016
8:00:28.066-8:00:28.016=50毫秒,这指示时钟153比时钟103超前50毫秒。
或者,可以计算一事件将要发生的时间的下限和上限。
方法300包括向一个或多个其他计算机***发送包括指示和计算得到的时间范围的事件消息的动作(动作309)。例如,计算机***100可以向其他计算机***191发送包括事件196(或事件196将在何时发生的指示)和时间186的事件消息197。接收到事件消息197的计算机***可以基于事件消息197来作出关于计算机***151的状态的判定。例如,一计算机***可以从计算机***151接收计算机***151在8:00:15.13时在线的指示。该计算机***随后可以接收指示计算机***151离线的事件消息197。因为8:00:28.016±86毫秒在8:00:15.13之后,所以该计算机***可以调整它的关于计算机***151的状态。
情况有可能是最大偏差造成与先前接收到的时间的重叠,从而造成关于哪一事件发生得更早的潜在冲突。例如,如果时间184是8:00:15.47±90.22毫秒,则偏差造成存在着事件196实际上在8:00:15.13之前发生的某种几率。在这种情况下,接收事件消息的计算机***可以参考预定义规则(例如,服务级协定)来解决冲突。
随时间流逝,计算机***可以计算请求/回复(或其他消息)交换的平均完成时间。使用这一平均值和预定义时间间隔,计算机***可以估计时间差的最坏情况误差界限。例如,参考图1,如果请求/回复消息交换的平均完成时间是40毫秒并且预定义时间间隔是30秒,则最坏情况误差界限可以计算为±[(40毫秒/2)+20毫秒+2*((.5分钟/24)*60分钟)*(60秒)]=81.5毫秒。
情况有可能是***如从平均值或甚至从硬件规范中已经知道时钟量程约束、漂移率约束、以及最大往返约束的(至少所估计的)值。最大误差等式可被用来计算(异步分布式***中的各计算机***之间的)观察计算机***所声称的被观察计算机***的时间与被观察计算机处的实际时间的最大偏差。
图5示出便于计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差的示例计算机体系结构500。图4是用于计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差的示例方法400的流程图。方法400将参考计算机体系结构500中的组件和数据来描述。
方法400包括访问时钟量程约束的动作(动作401),时钟量程约束指示异步分布式***的各计算机***之间的时钟量化间的最大差。例如,计算机***501可以访问时钟量程约束511,如硬件规范Q=15毫秒。
方法400包括访问漂移率约束的动作(动作402),漂移率约束指示异步分布式***的每一计算机***在指定时间段内的最大时钟漂移。观察者可以学习指定被观察者的最坏情况漂移或针对这一最坏情况漂移来配置。或者,观察者可被配置成对任何被观察者都假定最坏情况漂移。例如,计算机***501可以访问时钟漂移率约束512,如D<每天1分钟漂移。因此,时钟漂移率约束512可应用于特定被观察者或任何被观察者。
方法400包括访问最大往返约束的动作(动作403),最大往返约束指示在异步分布式***的任何两个计算机***之间发生的请求/回复消息交换的最大时间量。例如,计算机***501可以访问最大往返约束513。往返约束513可以例如根据计算机***101一分钟查询一次计算机***151并且往返时间小于50毫秒来得到。
方法400包括基于时钟量程约束、漂移率约束、以及最大往返约束来计算异步***的不同计算机***的时钟之间的最大偏差的动作。例如,计算机***501可以基于时钟量程约束511、时钟漂移率约束512、以及往返约束513来计算最大时钟偏差514。
最大偏差等式便于观察计算机***了解被观察计算机***处的时间总是处于计算得到的界限内。在一些实施例中,可以使用以下最大偏差等式:
((接收时间-发送时间)/2)+Q+(2D*(T-平均值(发送时间,接收时间)+Q))
或者在预定或指定值的情况下:
(R/2)+Q+(2*D*预定义请求/回复消息交换时间间隔)
因此,根据参考方法400描述的各个约束,最大偏差便于观察计算机***了解被观察计算机***处的时间总是处于(50毫秒/2)+15毫秒+(2*(1分钟/24*60分钟)*(60秒))之内,这是25毫秒+15毫秒+83毫秒=123毫秒。此外,紧接着消息交换序列查询之后,时钟漂移率约束D分量对最大误差的影响接近于0。即,(2*(~0/24*60分钟)*(60秒))=0。因此,紧接着消息交换序列查询之后,观察计算机***可以了解被观察计算机***处的时间大约是25毫秒+15毫秒+0毫秒=40毫秒。
因此,本发明的各实施例便于创建跨诸如常见异步(分布式)***内的各个成员等一组对等节点(观察者)的可信且实际的公共时间(一天中的时间)基准。可以在不参考公共主机的情况下,经由跟踪并累积节点(观察者)对之间的最坏情况相对时间偏移来创建一类伪同步***。可以基于节点对之间的定序的交互来形成直接和间接因果关系。如此,给定对一个节点的观察,合作节点可以基本上确保另一个节点将观察到的一天的时间的下限。因此,本发明的各实施例可被应用来在不使用公共外部一天内的时间时钟实体的情况下提供跨这样的异步***的最坏情况(即,最大偏差)当前时间的一致(基本上安全)的视图。
在不偏离本发明的精神或必要特征的情况下,本发明能以其他具体形式来实现。所描述的实施例在各个方面都只作为说明性的,而不是限制性的。因此,本发明的范围由所附权利要求书而不是由前面的描述指出。在权利要求的等效方案内的含义和范围内的所有更改都将包括在它们的范围内。
Claims (15)
1.一种在包括多个计算机***(101、151、191)的异步分布式***(100)中的观察计算机***(101)处的、用于确定所述观察计算机***(100)所声称的被观察计算机***(151)处的时间与所述被观察计算机***(151)处的实际时间之间的偏差的方法,所述观察计算机***(101)包括处理器和***存储器,所述异步分布式***(100)具有时钟量化约束(192)和漂移率约束(193),所述时钟量化约束(192)指示所述异步分布式***(100)的各计算机***(101、151、191)之间的时钟量化间的最大差,所述漂移率约束(193)指示所述异步分布式***(100)的每一计算机***在指定时间段内的最大时钟偏移,所述方法包括:
参与同所述被观察计算机***(151)的一个或多个消息交换(184、185)的步骤,所述消息交换包括:
记录在发送消息(181)时在所述观察计算机***(101)处的时钟(103)的发送时间(171)的步骤;
将消息(181)发送到所述被观察计算机***(151)的步骤,所述消息(181)包括所记录的发送时间(171);
随后从所述被观察计算机***(151)接收响应于所述消息(181)的相关消息(182)的步骤,所述相关消息(182)包含来自所述被观察计算机***(151)的时间(183);
记录在接收到所述相关消息(182)时在所述观察计算机***(101)处的时钟(103)的接收时间(172)的步骤;以及
记录来自所述被观察计算机***(151)的时间(173)的步骤;
基于所记录的发送所述消息的时间(181)与包括在所述相关消息中的来自所述被观察计算机***的时间(183)之间的差、所述时钟量程约束(192)、以及所述时钟漂移约束(193)来计算所述被观察计算机***处的时间相对于所述观察计算机***的时间的下限(161)的步骤;
基于所记录的接收到所述相关消息的时间(182)与包括在所述相关消息中的来自所述被观察计算机***的时间(183)之间的差、所述时钟量程约束(192)、以及所述时钟漂移约束(193)来计算所述被观察计算机***处的时间相对于所述观察计算机***的时间的上限(162)的步骤;
计算所述上限(162)和所述下限(161)之差的步骤;以及
所述处理器通过将计算得到的差除以平均因子来计算所述观察计算机***所声称的所述被观察计算机***处的时间与所述被观察计算机***处的实际时间之间的最大偏差的步骤。
2.如权利要求1所述的方法,其特征在于,还包括所述观察计算机***使用计算得到的最大偏差来制定所述被观察计算机***处的时间度过的安全视图的步骤。
3.如权利要求1所述的方法,其特征在于,还包括所述观察计算机***和所述被观察计算机***就一事件何时发生达成一致的步骤。
4.如权利要求3所述的方法,其特征在于,所述观察计算机***和所述被观察计算机***就一事件何时发生达成一致的步骤还包括所述观察计算机***检测到过去事件在所述被观察计算机***处发生的步骤。
5.如权利要求3所述的方法,其特征在于,所述观察计算机***和所述被观察计算机***就一事件何时发生达成一致的步骤包括所述观察计算机***和所述被观察计算机***就一事件在将来何时发生达成一致的步骤。
6.如权利要求1所述的方法,其特征在于,还包括:
所述观察计算机***参与同所述被观察计算机***的一个或多个其他消息交换的步骤;以及
所述观察计算机***基于所记录的与所述一个或多个其他消息交换相对应的时间来细化所述下限和所述上限中的一个或多个的步骤。
7.一种在观察计算机***(101)处的用于指示一事件在被观察计算机***(151)处发生的时间的方法,所述观察计算机***包括处理器和***存储器,所述方法包括:
参与同所述被观察计算机***(151)的一个或多个消息交换(184、185)的步骤,每一消息交换包括:
记录在发送请求消息(181)时在所述观察计算机***(101)处的时钟(103)的时间(171)的步骤;
将一个或多个请求消息(181)发送到所述被观察计算机***(151)的步骤,每一请求消息包括对应的所记录的发送时间;
随后从所述被观察计算机***(151)接收响应于所述一个或多个请求消息(181)的一个或多个回复消息(182)的步骤,每一回复消息包含来自所述被观察计算机***的时间(183);以及
记录在接收到回复消息(182)时在所述观察计算机***(101)处的时钟(103)的时间(172)的步骤;
基于所述一个或多个消息交换(184、185)来计算所述被观察计算机***(151)相对于所述观察计算机***(101)的时间的时间界限(161、162)的步骤,所述时间界限(161、162)被配置成在所述一个或多个消息交换(184、185)之后被应用于所述观察计算机***(101)处的时间以声称所述被观察计算机***处的指定时间范围,所述时间界限包括:
表示计算得到的时间界限的底部的时间下限(161);以及
表示计算得到的时间界限的顶部的时间上限(162);
所述处理器在所述一个或多个消息交换(184、185)之后接收指示的步骤,所述指示选自以下各项:a)过去事件在所述被观察计算机***(151)处发生的指示以及b)一事件何时将在所述被观察计算机***(151)处发生的指示;
所述处理器计算所述被观察计算机***(151)的时间范围的步骤,所述时间范围指示在所述被观察计算机***(151)处a)所述事件何时发生或b)所述事件将在何时发生,所述时间范围是基于在接收到所述指示时所述观察计算机***(101)处的时间并基于所述计算得到的时间界限的下限(161)和上限(162)来计算的;以及
向一个或多个其他计算机***(191)发送包括所述指示和所述计算得到的时间范围(186)的事件消息(197)的步骤。
8.如权利要求7所述的方法,其特征在于,所述基于所述一个或多个消息来计算所述被观察计算机***相对于所述观察计算机***的时间的时间界限的步骤包括至少部分地基于在所述一个或多个消息交换中的任一个中所记录的发送请求消息的时间与来自所述被观察计算机***的包括在对应回复消息中的时间之间的最小差来将所述下限设为某一值的步骤。
9.如权利要求8所述的方法,其特征在于,所述将所述下限设为某一值的步骤包括至少部分地基于所述观察计算机***处的时钟的量化与所述被观察计算机***处的时钟的量化之差的指示来将所述下限设为某一值的步骤。
10.如权利要求8所述的方法,其特征在于,所述将所述下限设为某一值的步骤包括至少部分地基于所述观察计算机***处的时钟的时钟漂移和所述被观察计算机***处的时钟的时钟漂移来将所述下限设为某一值的步骤。
11.如权利要求7所述的方法,其特征在于,所述基于所述一个或多个请求/回复消息来计算所述被观察计算机***相对于所述观察计算机***的时间的时间界限的步骤包括至少部分地基于在所述一个或多个请求/回复消息交换中的任一个中所记录的接收到一回复消息的时间与来自所述被观察计算机***的包括在所述回复消息中的时间之间的最小差来将所述上限设为某一值的步骤。
12.如权利要求11所述的方法,其特征在于,所述将所述上限设为某一值的步骤包括至少部分地基于所述观察计算机***处的时钟的量化与所述被观察计算机***处的时钟的量化之差的指示来将所述上限设为某一值的步骤。
13.如权利要求11所述的方法,其特征在于,所述将所述上限设为某一值的步骤包括至少部分地基于所述观察计算机***处的时钟的时钟漂移和所述被观察计算机***处的时钟的时钟漂移来将所述上限设为某一值的步骤。
14.如权利要求7所述的方法,其特征在于,所述异步分布式***是对等***。
15.一种在计算机***(501)处的用于计算包括多个计算机***的异步分布式***的不同计算机***处的时钟之间的最大偏差(514)的方法,所述计算机***包括处理器和***存储器,所述方法包括:
访问时钟量程约束(511)的步骤,所述时钟量程约束指示所述异步分布式***的各计算机***之间的时钟量化间的最大差;
访问漂移率约束(512)的步骤,所述漂移率约束指示所述异步分布式***的每一计算机***在指定时间段内的最大时钟漂移;
访问最大往返约束(513)的步骤,所述最大往返约束指示在所述异步分布式***的任何两个计算机***之间发生请求/回复消息交换的最大时间量;以及
所述处理器基于所述时钟量程约束、所述漂移率约束、以及所述最大往返约束来计算所述异步***的不同计算机***的时钟之间的最大偏差(514)的步骤。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4011808P | 2008-03-27 | 2008-03-27 | |
US60/040,118 | 2008-03-27 | ||
US12/410,677 | 2009-03-25 | ||
US12/410,677 US8073976B2 (en) | 2008-03-27 | 2009-03-25 | Synchronizing clocks in an asynchronous distributed system |
PCT/US2009/038639 WO2009121005A2 (en) | 2008-03-27 | 2009-03-27 | Synchronizing clocks in an asynchronous distributed system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101981527A CN101981527A (zh) | 2011-02-23 |
CN101981527B true CN101981527B (zh) | 2012-12-26 |
Family
ID=41114796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801118154A Expired - Fee Related CN101981527B (zh) | 2008-03-27 | 2009-03-27 | 对异步分布式***中的时钟进行同步 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8073976B2 (zh) |
EP (1) | EP2255264B1 (zh) |
JP (1) | JP5161363B2 (zh) |
KR (1) | KR101566570B1 (zh) |
CN (1) | CN101981527B (zh) |
AU (1) | AU2009228059B2 (zh) |
CA (1) | CA2716494A1 (zh) |
RU (1) | RU2485570C2 (zh) |
WO (1) | WO2009121005A2 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516293B2 (en) * | 2009-11-05 | 2013-08-20 | Novell, Inc. | System and method for implementing a cloud computer |
US8412663B2 (en) * | 2010-06-03 | 2013-04-02 | Drumright Group, Llc. | System and method for temporal correlation of observables based on timing ranges associated with observations |
WO2012150750A1 (ko) * | 2011-05-01 | 2012-11-08 | 엘지전자 주식회사 | 무선통신 시스템에서 동기화 신호를 전송하는 방법 및 장치 |
EP2544387B1 (en) * | 2011-07-04 | 2016-03-16 | Mitsubishi Electric R&D Centre Europe B.V. | Methods and devices for performing synchronization and compensating clock drift among communication devices |
US9473574B2 (en) * | 2011-11-18 | 2016-10-18 | Apple Inc. | Synchronization of devices in a peer-to-peer network environment |
US10271293B2 (en) | 2011-11-18 | 2019-04-23 | Apple Inc. | Group formation within a synchronized hierarchy of peer-to-peer devices |
US9516615B2 (en) | 2011-11-18 | 2016-12-06 | Apple Inc. | Selection of synchronization stations in a peer-to-peer network environment |
US9195516B2 (en) | 2011-12-01 | 2015-11-24 | International Business Machines Corporation | Determining collective barrier operation skew in a parallel computer |
US8924763B2 (en) | 2011-12-15 | 2014-12-30 | International Business Machines Corporation | Synchronizing compute node time bases in a parallel computer |
EP3009897B1 (en) * | 2013-06-12 | 2024-01-03 | Fuji Electric Co., Ltd. | Distribution device, distribution system, and distribution method |
WO2015062631A1 (en) * | 2013-10-29 | 2015-05-07 | Nec Europe Ltd. | Method and system for recording a multiuser web session and replaying a multiuser web session |
US9754002B2 (en) * | 2014-10-07 | 2017-09-05 | Excalibur Ip, Llc | Method and system for providing a synchronization service |
CN104935630B (zh) * | 2015-04-23 | 2018-03-23 | 南京信息工程大学 | 基于http的毫秒级时钟校准方法 |
US10609137B2 (en) * | 2015-08-24 | 2020-03-31 | Microsoft Technology Licensing, Llc | Global logical timestamp |
US10423191B2 (en) * | 2017-01-19 | 2019-09-24 | International Business Machines Corporation | Clock comparator sign control |
US10514465B2 (en) * | 2017-05-16 | 2019-12-24 | General Motors Llc | Updating vehicle clock |
WO2019071438A1 (zh) * | 2017-10-10 | 2019-04-18 | 西门子公司 | 对流程行业中的设备进行状态监测的方法、装置及介质 |
CN115761885B (zh) * | 2022-11-16 | 2023-08-29 | 之江实验室 | 一种共时与跨域异步融合驱动的行为识别方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078243A1 (en) * | 2000-12-15 | 2002-06-20 | International Business Machines Corporation | Method and apparatus for time synchronization in a network data processing system |
US20040215992A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method, apparatus, and computer program product for implementing time synchronization correction in computer systems |
US20050228902A1 (en) * | 2003-12-31 | 2005-10-13 | Lienhart Rainer W | Method and system for synchronizing platform clocks in a distributed wireless platform |
US20060080575A1 (en) * | 2004-10-07 | 2006-04-13 | Daniel Golparian | Hardware-based network packet timestamps: improved network clock synchronization |
CN1960242A (zh) * | 2006-10-17 | 2007-05-09 | 中控科技集团有限公司 | 实现时钟同步的方法、装置、***及分布式*** |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE452231B (sv) * | 1986-03-07 | 1987-11-16 | Philips Norden Ab | Forfarande for synkronisering av klockor ingaende i ett lokalt netverk av busstyp |
US5041966A (en) * | 1987-10-06 | 1991-08-20 | Nec Corporation | Partially distributed method for clock synchronization |
JPH03296684A (ja) * | 1990-04-16 | 1991-12-27 | Toshiba Corp | ネットワークステーションの時刻同期方式 |
US5311516A (en) * | 1992-05-29 | 1994-05-10 | Motorola, Inc. | Paging system using message fragmentation to redistribute traffic |
JPH0738606B2 (ja) * | 1992-10-30 | 1995-04-26 | 日本電気株式会社 | 衛星通信方式 |
US5689688A (en) * | 1993-11-16 | 1997-11-18 | International Business Machines Corporation | Probabilistic anonymous clock synchronization method and apparatus for synchronizing a local time scale with a reference time scale |
US5566180A (en) * | 1994-12-21 | 1996-10-15 | Hewlett-Packard Company | Method for recognizing events and synchronizing clocks |
US5907685A (en) * | 1995-08-04 | 1999-05-25 | Microsoft Corporation | System and method for synchronizing clocks in distributed computer nodes |
US5790805A (en) * | 1996-04-23 | 1998-08-04 | Ncr Corporation | Distributed timer synchronization |
JP3339786B2 (ja) * | 1996-12-02 | 2002-10-28 | オークマ株式会社 | 環状通信路におけるタイマー同期化装置および初期化方法 |
US6128318A (en) * | 1998-01-23 | 2000-10-03 | Philips Electronics North America Corporation | Method for synchronizing a cycle master node to a cycle slave node using synchronization information from an external network or sub-network which is supplied to the cycle slave node |
US6199169B1 (en) * | 1998-03-31 | 2001-03-06 | Compaq Computer Corporation | System and method for synchronizing time across a computer cluster |
US6278710B1 (en) | 1998-09-10 | 2001-08-21 | Agilent Technologies, Inc. | Enhancements to time synchronization in distributed systems |
US6654356B1 (en) * | 1998-10-29 | 2003-11-25 | Agilent Technologies, Inc. | Distributed control system architecture based on synchronized clocks |
DE60041470D1 (de) * | 1999-05-11 | 2009-03-19 | Canon Kk | Verfahren und Vorrichtung zur Synchronisierung zwischen zwei Netzwerken |
US6502141B1 (en) * | 1999-12-14 | 2002-12-31 | International Business Machines Corporation | Method and system for approximate, monotonic time synchronization for a multiple node NUMA system |
US6922417B2 (en) * | 2000-01-28 | 2005-07-26 | Compuware Corporation | Method and system to calculate network latency, and to display the same field of the invention |
US6898642B2 (en) * | 2000-04-17 | 2005-05-24 | International Business Machines Corporation | Synchronous collaboration based on peer-to-peer communication |
US7062528B2 (en) * | 2000-07-14 | 2006-06-13 | Sony Corporation | Method and system for identifying a time specific event |
US7272720B2 (en) * | 2000-09-27 | 2007-09-18 | Fujitsu Limited | Date-and-time management device and signature generation apparatus with date-and-time management function |
EP1198085B1 (en) * | 2000-10-10 | 2011-06-08 | Sony Deutschland GmbH | Cycle synchronization between interconnected sub-networks |
US6957357B2 (en) * | 2000-10-30 | 2005-10-18 | International Business Machines Corporation | Clock synchronization with removal of clock skews through network measurements in derivation of a convext hull |
US6801876B2 (en) * | 2000-12-08 | 2004-10-05 | Caterpillar Inc | Method and apparatus of managing time for a processing system |
US7047435B2 (en) * | 2000-12-19 | 2006-05-16 | Siemens Corporate Research, Inc. | System and method for clock-synchronization in distributed systems |
US7023884B2 (en) * | 2000-12-19 | 2006-04-04 | Lucent Technologies Inc. | Clock offset estimation with bias correction |
US7194556B2 (en) * | 2001-03-30 | 2007-03-20 | Intel Corporation | Method and apparatus for high accuracy distributed time synchronization using processor tick counters |
ATE427521T1 (de) | 2001-07-26 | 2009-04-15 | Freescale Semiconductor Inc | Uhrensynchronisation in einem verteilten system |
US7283568B2 (en) * | 2001-09-11 | 2007-10-16 | Netiq Corporation | Methods, systems and computer program products for synchronizing clocks of nodes on a computer network |
DE10147422A1 (de) * | 2001-09-26 | 2003-04-24 | Siemens Ag | Kommunikationssystem und Verfahren zur Synchronisation eines Kommunikationszyklus |
JP2003108539A (ja) * | 2001-10-02 | 2003-04-11 | Hitachi Kokusai Electric Inc | サーバ及びクライアント間の時刻同期方法 |
US7529653B2 (en) * | 2001-11-09 | 2009-05-05 | Sun Microsystems, Inc. | Message packet logging in a distributed simulation system |
US7231338B2 (en) * | 2001-11-09 | 2007-06-12 | Sun Microsystems, Inc. | Distributed simulation system having phases of a timestep |
US7020722B2 (en) * | 2001-11-09 | 2006-03-28 | Sun Microsystems, Inc. | Synchronization of distributed simulation nodes by keeping timestep schedulers in lockstep |
US20030152110A1 (en) * | 2002-02-08 | 2003-08-14 | Johan Rune | Synchronization of remote network nodes |
US7111195B2 (en) * | 2002-02-25 | 2006-09-19 | General Electric Company | Method and system for external clock to obtain multiple synchronized redundant computers |
US7072432B2 (en) * | 2002-07-05 | 2006-07-04 | Meshnetworks, Inc. | System and method for correcting the clock drift and maintaining the synchronization of low quality clocks in wireless networks |
US7257133B2 (en) * | 2002-09-30 | 2007-08-14 | Lucent Technologies Inc. | Method for estimating offset for clocks at network elements |
US7570669B2 (en) * | 2003-08-08 | 2009-08-04 | Opnet Technologies, Inc. | Synchronizing packet traces |
US7239581B2 (en) * | 2004-08-24 | 2007-07-03 | Symantec Operating Corporation | Systems and methods for synchronizing the internal clocks of a plurality of processor modules |
US7454521B2 (en) * | 2003-10-23 | 2008-11-18 | Microsoft Corporation | Byzantine fault quantifying clock synchronization |
US20070058564A1 (en) * | 2005-07-26 | 2007-03-15 | University Of Maryland | Method and device for managing data flow in a synchronous network |
US7805763B2 (en) * | 2005-09-29 | 2010-09-28 | Motorola Mobility, Inc. | Method for distributing values for networks with mobile nodes |
US7787486B2 (en) * | 2006-11-13 | 2010-08-31 | Honeywell International Inc. | Method and system for achieving low jitter in real-time switched networks |
EP1936867B1 (en) * | 2006-12-22 | 2013-02-20 | Corvil Limited | Delay measurements in network traffic |
-
2009
- 2009-03-25 US US12/410,677 patent/US8073976B2/en not_active Expired - Fee Related
- 2009-03-27 CN CN2009801118154A patent/CN101981527B/zh not_active Expired - Fee Related
- 2009-03-27 KR KR1020107021213A patent/KR101566570B1/ko active IP Right Grant
- 2009-03-27 AU AU2009228059A patent/AU2009228059B2/en not_active Ceased
- 2009-03-27 RU RU2010139412/08A patent/RU2485570C2/ru not_active IP Right Cessation
- 2009-03-27 JP JP2011502110A patent/JP5161363B2/ja not_active Expired - Fee Related
- 2009-03-27 EP EP09725924.6A patent/EP2255264B1/en not_active Not-in-force
- 2009-03-27 CA CA2716494A patent/CA2716494A1/en not_active Abandoned
- 2009-03-27 WO PCT/US2009/038639 patent/WO2009121005A2/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078243A1 (en) * | 2000-12-15 | 2002-06-20 | International Business Machines Corporation | Method and apparatus for time synchronization in a network data processing system |
US20040215992A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Method, apparatus, and computer program product for implementing time synchronization correction in computer systems |
US20050228902A1 (en) * | 2003-12-31 | 2005-10-13 | Lienhart Rainer W | Method and system for synchronizing platform clocks in a distributed wireless platform |
US20060080575A1 (en) * | 2004-10-07 | 2006-04-13 | Daniel Golparian | Hardware-based network packet timestamps: improved network clock synchronization |
CN1960242A (zh) * | 2006-10-17 | 2007-05-09 | 中控科技集团有限公司 | 实现时钟同步的方法、装置、***及分布式*** |
Also Published As
Publication number | Publication date |
---|---|
JP5161363B2 (ja) | 2013-03-13 |
EP2255264B1 (en) | 2015-07-22 |
RU2485570C2 (ru) | 2013-06-20 |
CA2716494A1 (en) | 2009-10-01 |
KR20100127790A (ko) | 2010-12-06 |
EP2255264A4 (en) | 2014-04-09 |
US20090248900A1 (en) | 2009-10-01 |
WO2009121005A2 (en) | 2009-10-01 |
AU2009228059A1 (en) | 2009-10-01 |
AU2009228059B2 (en) | 2014-01-23 |
EP2255264A2 (en) | 2010-12-01 |
KR101566570B1 (ko) | 2015-11-05 |
CN101981527A (zh) | 2011-02-23 |
JP2011529208A (ja) | 2011-12-01 |
US8073976B2 (en) | 2011-12-06 |
RU2010139412A (ru) | 2012-03-27 |
WO2009121005A3 (en) | 2009-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101981527B (zh) | 对异步分布式***中的时钟进行同步 | |
Hawes et al. | The strands project: Long-term autonomy in everyday environments | |
Böse et al. | CISN ShakeAlert: An earthquake early warning demonstration system for California | |
Osborne et al. | Towards real-time information processing of sensor network data using computationally efficient multi-output Gaussian processes | |
Walls et al. | An origin state method for communication constrained cooperative localization with robustness to packet loss | |
Van de Walle et al. | Risk accelerators in disasters: insights from the Typhoon Haiyan response on humanitarian information management and decision support | |
CN112489236A (zh) | 一种考勤数据处理方法、装置、服务器及存储介质 | |
Yüksel et al. | Modelling and analysis of smart grid: A stochastic model checking case study | |
CN110097327A (zh) | 考勤方法及装置 | |
RU2533090C2 (ru) | Система ситуационно-аналитических центров организационной системы | |
Li et al. | Distributed multiple model estimation for jump Markov linear systems with missing measurements | |
Sheard et al. | 5.2. 2 Complexity measures to predict system development project outcomes | |
Selvarajan et al. | Digital Twin and IoT for Smart City Monitoring | |
Xiong et al. | Interoperable wireless sensor network model using multi-agent-based middleware | |
de Figueiredo Cabral | A Machine Learning Approach for Path Loss Estimation in Emerging Wireless Networks | |
Parise et al. | Prophet model for forecasting occupancy presence in indoor spaces using non-intrusive sensors | |
Kaczmarczyk et al. | Data processing platform for indoor localization framework | |
Muesing et al. | Tradeoff Analysis of Space-Based Imaging Algorithms for Distributed Area Collection | |
Babu et al. | Case Study Definition and Implementation | |
Yan et al. | A Measurable Framework for Run-time Data Sampling in Large-scale Datacenter | |
Galanis | Control of communication with autonomous robotic devices through optimal stopping theory | |
DiTomasso et al. | Precept-Assist. a computerized, data-based evaluation system. | |
Quijada | A hybrid simulation methodology to evaluate network centric decision making under extreme events | |
Hawrylak et al. | Analysis methods for sensor networks | |
Page et al. | Business Chair |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150508 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150508 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121226 |