服务器时间同步方法、装置、计算机设备和存储介质与流程

文档序号:25582900发布日期:2021-06-22 16:26阅读:211来源:国知局
服务器时间同步方法、装置、计算机设备和存储介质与流程

本申请涉及通信技术领域,特别是涉及一种服务器时间同步方法、装置、计算机设备和存储介质。



背景技术:

随着通信技术的发展,出现了服务器时间同步技术,时间同步就是通过对本地时钟的某些操作,达到为分布式系统提供一个统一时间标度的过程。其中,分布式系统是指建立在网络之上的软件系统。在对记录数据的提交时刻有严格要求的软件系统中,必须保证提交时间的准确性。例如,证券交易系统,所以对承载有上述软件系统的、跨城的服务器的时间同步至关重要。

然而,目前的服务器同步方法,存在精度低的问题。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高服务器同步精度的服务器时间同步方法、装置、计算机设备和存储介质。

一种服务器时间同步方法,所述方法包括:接收时间同步指令;响应于所述时间同步指令,获取当前时间段对应的第一时间偏差集合,所述第一时间偏差集合包括多个目标时间偏差,所述目标时间偏差为主服务器与从服务器之间的时间偏差,所述目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;对所述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于所述目标时间偏差的第一时间排序以及排序阈值确定所述第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整。

在其中一个实施例中,所述目标时间偏差的得到步骤包括:接收主服务器发送的同步消息,所述同步消息的发送时间为第一时间;记录接收所述同步消息的第二时间;向所述主服务器发送延时请求消息,记录所述延时请求消息对应的第三时间,所述第三时间为发送所述延时请求消息的时间;接收所述主服务器返回的第四时间,所述第四时间是所述主服务器接收所述延时请求消息的时间;获取所述第一时间与所述第二时间之间的第一时间差异、以及所述第三时间与所述第四时间之间的第二时间差异;基于所述第一时间差异以及所述第二时间差异得到所述从服务器与所述主服务器之间的目标时间偏差。

在其中一个实施例中,所述基于所述第一时间差异以及所述第二时间差异得到所述从服务器与所述主服务器之间的目标时间偏差包括:获取所述主服务器到所述从服务器的第一路径延时;所述第一路径延时为所述主服务器发送所述同步消息到所述从服务器的延时时长;获取所述从服务器到所述主服务器的第二路径延时;所述第二路径延时为所述从服务器发送所述延时请求消息到所述主服务器的延时时长;根据所述第一路径延时、所述第二路径延时、所述第一时间差异和所述第二时间差异得到所述从服务器与所述主服务器之间的目标时间偏差。

在其中一个实施例中,所述方法还包括:当所述第一时间偏差集合中目标时间偏差的数量小于数量阈值时,则从所述第一时间偏差集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差;基于所述第一调整时间偏差对所述从服务器的时间进行调整;当所述第一时间偏差集合中目标时间偏差的数量大于数量阈值时,则进入对所述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序的步骤。

在其中一个实施例中,所述第一时间排序为所述目标时间偏差从小到大排列的时间排序;所述基于所述目标时间偏差的第一时间排序以及排序阈值确定所述第一时间偏差集合中存在链路抖动的目标时间偏差包括:获取所述第一时间偏差集合中第一时间排序大于排序阈值对应的目标时间偏差,作为抖动时间偏差;将所述抖动时间偏差作为所述第一时间偏差集合中存在链路抖动的目标时间偏差;所述基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整包括:从滤除后的第一时间偏差集合中选取最大的目标时间偏差,作为第二调整时间偏差;基于所述第二调整时间偏差对所述从服务器的时间进行调整。

在其中一个实施例中,得到所述目标排序阈值的步骤包括:获取多个前向时间段分别对应的第二调整时间偏差,作为参考时间偏差;按照时间顺序对参考时间偏差进行排序,得到参考时间偏差序列;获取所述参考时间偏差序列的变化趋势;获取预设排序阈值,根据与变化趋势相反的方向对所述预设排序阈值进行调整,得到所述目标排序阈值。

在其中一个实施例中,所述基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整之后还包括:获取交易订单;所述交易订单携带有第一时间戳;向主服务器发送所述交易订单;所述交易订单携带有时间戳获取请求;接收所述主服务器响应于所述时间戳获取请求返回的第二时间戳;当所述第一时间戳和所述第二时间戳的差值大于时间差值阈值时,向维护终端发送所述从服务器对应的异常提示消息。

一种服务器时间同步装置,所述装置包括:时间同步指令接收模块,用于接收时间同步指令;时间同步指令响应模块,用于响应于所述时间同步指令,获取当前时间段对应的第一时间偏差集合,所述第一时间偏差集合包括多个目标时间偏差,所述目标时间偏差为主服务器与从服务器之间的时间偏差,所述目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;第一时间排序得到模块,用于对所述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;第一时间偏差集合得到模块,用于基于所述目标时间偏差的第一时间排序以及排序阈值确定所述第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;服务器的时间调整模块,用于基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整。

在其中一个实施例中,服务器时间同步装置还包括:同步消息接收模块,用于接收主服务器发送的同步消息,所述同步消息的发送时间为第一时间;第二时间记录模块,用于记录接收所述同步消息的第二时间;第三时间记录模块,用于向所述主服务器发送延时请求消息,记录所述延时请求消息对应的第三时间,所述第三时间为发送所述延时请求消息的时间;第一时间差异及第二时间差异获取模块,用于获取所述第一时间与所述第二时间之间的第一时间差异、以及所述第三时间与所述第四时间之间的第二时间差异;目标时间偏差得到模块,用于基于所述第一时间差异以及所述第二时间差异得到所述从服务器与所述主服务器之间的目标时间偏差。

在其中一个实施例中,目标时间偏差得到模块用于获取所述主服务器到所述从服务器的第一路径延时;所述第一路径延时为所述主服务器发送所述同步消息到所述从服务器的延时时长;获取所述从服务器到所述主服务器的第二路径延时;所述第二路径延时为所述从服务器发送所述延时请求消息到所述主服务器的延时时长;根据所述第一路径延时、所述第二路径延时、所述第一时间差异和所述第二时间差异得到所述从服务器与所述主服务器之间的目标时间偏差。

在其中一个实施例中,服务器时间同步装置还包括:第一调整时间偏差确定模块,用于当所述第一时间偏差集合中目标时间偏差的数量小于数量阈值时,则从所述第一时间偏差集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差;从服务器的时间调整模块,用于基于所述第一调整时间偏差对所述从服务器的时间进行调整;第一时间排序得到模块,用于当所述第一时间偏差集合中目标时间偏差的数量大于数量阈值时,则进入对所述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序的步骤。

在其中一个实施例中,第一时间偏差集合得到模块用于获取所述第一时间偏差集合中第一时间排序大于排序阈值对应的目标时间偏差,作为抖动时间偏差;将所述抖动时间偏差作为所述第一时间偏差集合中存在链路抖动的目标时间偏差;所述基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整包括:从滤除后的第一时间偏差集合中选取最大的目标时间偏差,作为第二调整时间偏差;基于所述第二调整时间偏差对所述从服务器的时间进行调整。

在其中一个实施例中,服务器时间同步装置包括:第二调整时间偏差获取模块,用于获取多个前向时间段分别对应的第二调整时间偏差,作为参考时间偏差;参考时间偏差序列得到模块,用于按照时间顺序对参考时间偏差进行排序,得到参考时间偏差序列;参考时间偏差序列的变化趋势获取模块,用于获取所述参考时间偏差序列的变化趋势;目标排序阈值得到模块,用于获取预设排序阈值,根据与变化趋势相反的方向对所述预设排序阈值进行调整,得到所述目标排序阈值。

在其中一个实施例中,服务器时间同步装置还包括:交易订单获取模块,用于获取交易订单;所述交易订单携带有第一时间戳;交易订单发送模块,用于向主服务器发送所述交易订单;所述交易订单携带有时间戳获取请求;第二时间戳接收模块,用于接收所述主服务器响应于所述时间戳获取请求返回的第二时间戳;异常提示消息发送模块,用于当所述第一时间戳和所述第二时间戳的差值大于时间差值阈值时,向维护终端发送所述从服务器对应的异常提示消息。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收时间同步指令;响应于所述时间同步指令,获取当前时间段对应的第一时间偏差集合,所述第一时间偏差集合包括多个目标时间偏差,所述目标时间偏差为主服务器与从服务器之间的时间偏差,所述目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;对所述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于所述目标时间偏差的第一时间排序以及排序阈值确定所述第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收时间同步指令;响应于所述时间同步指令,获取当前时间段对应的第一时间偏差集合,所述第一时间偏差集合包括多个目标时间偏差,所述目标时间偏差为主服务器与从服务器之间的时间偏差,所述目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;对所述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于所述目标时间偏差的第一时间排序以及排序阈值确定所述第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合对所述从服务器的时间进行调整。

上述服务器时间同步方法、装置、计算机设备和存储介质,通过从服务器接收时间同步指令;响应于上述时间同步指令,获取当前时间段对应的第一时间偏差集合,其中,第一时间偏差集合包括多个目标时间偏差,目标时间偏差为主服务器与从服务器之间的时间偏差,并且目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于目标时间偏差的第一时间排序以及排序阈值确定第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合对从服务器的时间进行调整。通过滤除掉存在链路抖动的目标时间偏差,利用滤除掉存在链路抖动的目标时间偏差的时间偏差集合中的目标时间偏差对从服务器进行调整实现时间同步,可以有效提高服务器时间同步的精度。

附图说明

图1为一个实施例中服务器时间同步方法的应用环境图;

图2为一个实施例中服务器时间同步方法的流程示意图;

图3为一个实施例中目标时间偏差的得到步骤的流程示意图;

图4为一个实施例中基于第一时间差异以及第二时间差异得到从服务器与主服务器之间的目标时间偏差方法的流程示意图;

图5为另一个实施例中服务器时间同步方法的步骤流程示意图;

图6为一个实施例中得到目标排序阈值的步骤流程示意图;

图7为另一个实施例中服务器时间同步方法的流程示意图;

图8为一个实施例中服务器时间同步方法的时序示意图;

图9为一个实施例中服务器时间同步装置的结构框图;

图10为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的服务器时间同步方法,可以应用于如图1所示的应用环境中,具体应用到一种服务器时间同步系统中。该服务器时间同步系统包括第一服务器102和第二服务器104,其中,第一服务器102通过网络与第二服务器104进行通信。第一服务器102可以作为主服务器,第二服务器104可以作为从服务器。第二服务器104执行一种服务器时间同步方法,具体的,第二服务器104接收时间同步指令,响应于时间同步指令,获取当前时间段对应的第一时间偏差集合,其中,第一时间偏差集合包括多个目标时间偏差,目标时间偏差为第一服务器102与第二服务器104之间的时间偏差,目标时间偏差是基于第一服务器102与第二服务器104之间的交互消息的发送时间以及接收时间的差异得到的;对上述第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于目标时间偏差的第一时间排序以及排序阈值确定第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合对第二服务器104的时间进行调整,第一服务器102的时间可以保持不变,以减少第一服务器102与第二服务器104之间的时间偏差。其中,第一服务器102和第二服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种服务器时间同步方法,以该方法应用于图1中的第二服务器为例进行说明,包括以下步骤:

步骤202,接收时间同步指令。

其中,时间同步指令是指能够触发服务器和服务器之间的时间进行同步的指令。可以通过接收该指令,开始进行服务器时间的同步。

具体地,当从服务器的时间需要与主服务器的时间进行同步时,在从服务器上需要通过接收手动或者自动触发的时间同步指令来完成从服务器与主服务器之间的时间同步。

在一个实施例中,从服务器通过自带的接收时间同步指令的脚本程序,在从服务器开始工作时,自动触发上述脚本程序,通过触发后的脚本程序接收时间同步指令。

在一个实施例中,从服务器通过接收用户对时间同步指令对应的按钮的启动操作,接收时间同步指令。

步骤204,响应于时间同步指令,获取当前时间段对应的第一时间偏差集合,第一时间偏差集合包括多个目标时间偏差,目标时间偏差为主服务器与从服务器之间的时间偏差,目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的。

其中,目标时间偏差是指主服务器系统时间与从服务器系统时间之间的差异。交互消息是指主服务器与从服务器相互之间传输的消息。例如,同步消息或者延时请求消息等。

具体的,在从服务器接收到时间同步指令后,响应于时间同步指令时,获取多个交互消息对应的多个发送时间与对应的多个接收时间之间的差异,利用上述差异得到多个交互消息对应的多个目标时间偏差,多个目标时间偏差组成了第一时间偏差集合。例如,利用主服务器发送同步消息到从服务器的时间与从服务器接收该同步消息的时间之间的差异,以及,从服务器发送延时请求消息的时间与主服务器发送延时请求消息的回复消息时间之间的差异得到目标时间偏差,多个上述目标时间偏差组成当前时间段对应的第一时间偏差集合。可以理解的,主服务器发送同步消息以及从服务器发送延时请求消息可以是多组,通过发送的多组的同步消息以及延时请求消息,得到多组消息发送时间以及对应的消息接收时间之间的差异,通过多组消息发送时间以及对应的消息接收时间之间的差异得到的多个目标时间偏差,通过多个目标时间偏差获取到第一时间偏差集合。

在一个实施例中,从服务器响应于时间同步指令时,获取主服务器发送的对应于主服务器发送同步消息的时间点,记为t1;从服务器本端接收到主服务器发送的同步消息的时间点,记为t2,从服务器本端向主服务器发送延时请求消息的时间点,记为t3;主服务器接收到延时请求消息的时间点,记为t4,通过本端接收到主服务器发送的同步消息的时间与获取主服务器发送的对应于主服务器发送同步消息的时间之间的差异,记为t2-t1,以及,主服务器接收到延时请求消息的时间与本端向主服务器发送延时请求消息的时间之间的差异,记为t4-t3,得到目标时间偏差。若目标时间偏差记为offset,则目标时间偏差offset可以表示为:offset=[t2-t1-(t4-t3)]/2;主服务器和从服务器之间可以通过多次发送和相应的多次接收交互消息,从服务器可以获取到当前时间段对应的第一时间偏差集合中的多个上述offset。

步骤206,对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序。

其中,时间排序是指按照时间长度进行的排序。排序可以根据时间长度从小到大排序,也可以根据时间长度从大到小排序。例如,目标时间偏差记为offset,offset的时间长度分别为30s、60s、90s以及120s,时间排序可以为按照时间长度从小到大{30s,60s,90s,120s},也可以为按照时间长度从大到小{120s,90s,60s,30s}。其中,s表示秒,可以作为时间长度的单位名称。

具体的,在从服务器获取到第一时间偏差集合后,对该第一时间偏差集合中的目标时间偏差进行排序得到排序后的第一时间偏差集合。

步骤208,基于目标时间偏差的第一时间排序以及排序阈值确定第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合。

其中,排序阈值是指时间排序的临界值,大于该临界值为存在链路抖动的目标时间偏差,小于等于该临界值为不存在链路抖动或者存在链路抖动在可以接受范围内的目标时间偏差。或者,小于该临界值为存在链路抖动的目标时间偏差,大于等于该临界值为不存在链路抖动或者存在链路抖动在可以接受范围内的目标时间偏差。

具体的,从服务器对第一时间偏差集合进行时间排序之后,对存在链路抖动的目标时间偏差进行筛除,以便于得到滤除后的第一时间偏差集合。

在一个实施例中,进行时间排序后的第一时间偏差集合,排序阈值为80%,假设第一时间偏差集合为目标时间偏差值从小到大顺序排序,即{30s,60s,90s,120s,150s,180s,210s,240s,270s,300s},假如大于该排序阈值为存在链路抖动的目标时间偏差,则将占80%以上排序位置的滤除掉,上述排序中为1到10的顺序,80%排序位置的为240s,则大于此排序位置的目标时间偏差值将会被滤除掉,即该第一时间偏差集合滤除掉270s和300s。

步骤210,基于滤除后的第一时间偏差集合对从服务器的时间进行调整。

具体的,在从服务器对第一时间偏差集合进行滤除后,利用滤除后的第一时间偏差集合中的目标时间偏差对从服务器的时间进行调整。可以利用第一时间偏差集合中的目标时间偏差的平均值、最大值、中位数或者最小值等对从服务器的时间进行调整。

在一个实施例中,利用滤除后的第一时间偏差集合中的最大值对从服务器的时间进行调整。例如,滤除后的第一时间偏差集合为{30s,60s,90s,120s,150s,180s,210s,240s},则利用第一时间偏差集合中的最大值240s调整从服务器,在从服务器的系统时间的基础上增加240s,调整后的从服务器时间可以达到与主服务器同步。

上述服务器时间同步方法中,通过从服务器接收时间同步指令;响应于上述时间同步指令,获取当前时间段对应的第一时间偏差集合,其中,第一时间偏差集合包括多个目标时间偏差,目标时间偏差为主服务器与从服务器之间的时间偏差,并且目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于目标时间偏差的第一时间排序以及排序阈值确定第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合对从服务器的时间进行调整。通过滤除掉存在链路抖动的目标时间偏差,利用滤除掉存在链路抖动的目标时间偏差的时间偏差集合中的目标时间偏差对从服务器进行调整实现时间同步,可以有效提高服务器时间同步的精度。

在一个实施例中,如图3所示,目标时间偏差的得到步骤包括:

步骤302,接收主服务器发送的同步消息,同步消息的发送时间为第一时间。

其中,同步消息是指以同步传输方式传输的消息,同步传输方式是指以固定的时钟节拍发送数据信号的传输方式。

具体的,当从服务器需要进行时间同步时,需要首先得到主服务器与从服务器之间的目标时间偏差,在得到时间偏差的过程中首先需要得到计算目标时间偏差的其中一个参数,即同步消息的发送时间。

在一个实施例中,主服务器以一定的时间间隔向从服务器发送同步消息,在主服务器侧记录同步消息的发送时间,同时主服务器将同步消息的发送时间进行数据封装后发送给从服务器,从服务器接收到同步消息的发送时间后,记录同步消息的发送时间。例如,同步消息的发送时间表示为t1,同步消息表示为sync消息,主服务器将t1嵌入到follow_up报文中发送给从服务器,从服务器接收主服务器sync消息的发送时间t1。其中,follow_up报文表示跟随报文,同步消息的发送时间t1可以封装到该报文中进行传送。

步骤304,记录接收同步消息的第二时间。

具体的,在主服务器向从服务器发送同步消息后,从服务器会相应接收到主服务器发送的同步消息,从服务器记录下本端接收同步消息的第二时间。例如,可以将第二时间表示为t2。

步骤306,向主服务器发送延时请求消息,记录延时请求消息对应的第三时间,第三时间为发送延时请求消息的时间。

其中,延时请求消息是指延时时间的请求消息,是从服务器发送给主服务器的请求消息。

具体的,从服务器在接收到同步消息之后,会向主服务器发送延时请求消息,在从服务器本端记录下发送延时请求消息的时间。例如,记录下的第三时间表示为t3。

步骤308,接收主服务器返回的第四时间,第四时间是主服务器接收延时请求消息的时间。

具体的,主服务器接收到从服务器发送的延时请求消息,记录下接收时间,并将该接收时间发送给从服务器。

在一个实施例中,从服务器接收主服务器返回的封装的第四时间的消息。例如,记录下的第四时间表示为t4。从服务器可以通过消息接收模块接收到携带第四时间t4的消息。

步骤310,获取第一时间与第二时间之间的第一时间差异、以及第三时间与第四时间之间的第二时间差异。

具体的,假设第一时间表示为t1,第二时间表示为t2,第三时间表示为t3,第四时间表示为t4,第一时间差异表示为α,第二时间差异表示为β,则第一时间差异表示为α表示为:

α=t2-t1;

第二时间差异表示为β表示为:

β=t4-t3。

步骤312,基于第一时间差异以及第二时间差异得到从服务器与主服务器之间的目标时间偏差。

具体的,目标时间偏差可以通过第一时间差异和第二时间差异的平均差异得到。假设目标时间偏差表示为offset,则目标时间偏差offset可以表示为:

offset=(α+β)/2。

本实施例中,通过主服务器和从服务器进行消息交互过程中产生的四个时间得到目标时间偏差,能够达到精确确定目标时间偏差的目的。

在一个实施例中,如图4所示,基于第一时间差异以及第二时间差异得到从服务器与主服务器之间的目标时间偏差包括:

步骤402,获取主服务器到从服务器的第一路径延时;第一路径延时为主服务器发送同步消息到从服务器的延时时长。

具体的,在主服务器与从服务器进行消息交互过程中,主服务器到从服务器的传输延时和从服务器到主服务器的传输延时会因为各种因素影响,存在传输时间不同的情况,需要考虑路径的延时时长。

在一个实施例中,第一路径延时为第一时间差异与目标时间偏差的差值。例如,第一时间差异表示为α,第一路径延时表示为delay1,目标时间偏差表示为offset,则第一路径延时delay1=α-offset。

步骤404,获取从服务器到主服务器的第二路径延时;第二路径延时为从服务器发送延时请求消息到主服务器的延时时长。

具体的,在从服务器与主服务器进行消息交互过程中,从服务器到主服务器的传输延时会因为各种因素影响,需要考虑路径的延时时长。

在一个实施例中,可以通过第二时间差异与目标时间偏差的累计值得到第二路径延时。例如,第二时间差异表示为β,第二路径延时表示为delay2,目标时间偏差表示为offset,则第二路径延时delay2=β+offset。

步骤406,根据第一路径延时、第二路径延时、第一时间差异和第二时间差异得到从服务器与主服务器之间的目标时间偏差。

具体的,假设从服务器与主服务器之间的通信链路和主服务器与从服务器之间的通信链路存在延时抖动,则第一路径延时与第二路径延时之间会存在差值,假设第一路径延时与第二路径延时之间存在的差值表示为δ,则δ可以表示为:

δ=delay1-delay2;

其中,delay1=α-offset,delay2=β+offset;

则offset=(α-β-δ)/2

在一个实施例中,假设第一路径延时与第二路径延时之间不存在差值,即δ=0,则目标时间偏差可以直接通过第一时间差异α和第二时间差异β得到。目标时间偏差可以表示为:

offset=(α-β)/2

本实施例中,通过第一路径延时和第二路径延时以及第一时间差异和第二时间差异之间的函数关系,能够达到在通信链路存在延时抖动的情况下精确得到目标时间偏差的目的。

在一个实施例中,如图5所示,服务器时间同步方法还包括:

步骤502,当第一时间偏差集合中目标时间偏差的数量小于数量阈值时,则从第一时间偏差集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差。

其中,数量阈值是指数量临界值,第一时间偏差集合中目标时间偏差的数量小于该值与大于等于该值对应的选取目标时间偏差的方法不同。

具体的,当第一时间偏差集合中目标时间偏差的数量小于数量阈值时,通过在第一时间偏差集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差。

在一个实施例中,也可以通过获取预设时间段内的第一时间偏差集合,在集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差。例如,获取距离当前时间段1小时内的目标时间偏差组成的第一时间偏差集合,在集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差。

步骤504,基于第一调整时间偏差对从服务器的时间进行调整。

具体的,在从服务器确定第一调整时间偏差后,利用该第一调整时间偏差对从服务器的时间进行调整。例如,第一调整时间偏差为+60s,从服务器当前时间为11:00时,则从服务器调整后的时间为从服务器的当前时间与偏差之间的累计值,即11:00+60s=11:01时,可以理解的,第一调整时间偏差可以为负值,可以通过从服务器上的时间与第一调整时间偏差的累计值得到调整后的从服务器的时间。

步骤506,当第一时间偏差集合中目标时间偏差的数量大于数量阈值时,则进入对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序的步骤。

具体的,当第一时间偏差集合中目标时间偏差的数量大于数量阈值时,则对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;基于目标时间偏差的第一时间排序以及排序阈值确定第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;基于滤除后的第一时间偏差集合中的目标时间偏差对从服务器的时间进行调整。

本实施例中,通过设置数量阈值,能够达到在第一时间偏差集合中目标时间偏差的数量大于该数量阈值和小于该数量阈值的两种情况下,实现不同的从服务器时间调整方法的目的。

在一个实施例中,第一时间排序为目标时间偏差从小到大排列的时间排序;基于目标时间偏差的第一时间排序以及排序阈值,确定第一时间偏差集合中存在链路抖动的目标时间偏差,基于滤除后的第一时间偏差集合对从服务器的时间进行调整包括:

获取第一时间偏差集合中第一时间排序大于排序阈值对应的目标时间偏差,作为抖动时间偏差。

其中,抖动时间偏差是指存在延时抖动的时间偏差。如果使用该偏差对服务器进行时间同步,会使服务器时间同步的精确度降低。

具体的,在第一时间偏差集合中的目标时间偏差以从小到大的时间顺序排列,筛选出大于排序阈值的目标时间偏差,作为抖动时间偏差。例如,第一时间偏差集合为{30s,60s,90s,120s,150s,180s,210s,240s,270s,300s},假设排序阈值为80%,大于80%的排序会被筛选出来作为抖动时间偏差,则上述集合筛选出来的目标时间偏差为{270s,300s}。

将抖动时间偏差作为第一时间偏差集合中存在链路抖动的目标时间偏差。

具体的,在从服务器筛选出抖动时间偏差之后,会将该抖动时间偏差作为存在链路抖动的目标时间偏差。例如,筛选出来的是目标时间偏差为{270s,300s},则将270s和300s作为存在链路抖动的目标时间偏差。

从滤除后的第一时间偏差集合中选取最大的目标时间偏差,作为第二调整时间偏差;

具体的,在对第一时间偏差集合中存在链路抖动的目标时间偏差进行滤除后,在滤除后的第一时间偏差集合中选取最大的目标时间偏差,作为第二调整时间偏差。例如,滤除后的第一时间偏差集合为{30s,60s,90s,120s,150s,180s,210s,240s},则在其中选取出最大的目标时间偏差240s作为第二调整时间偏差。基于第二调整时间偏差对从服务器的时间进行调整。

具体的,在从服务器得到第二调整时间偏差之后,使用该调整时间偏差对从服务器的时间进行调整。例如,第二调整时间偏差为+240s,从服务器的时间为11:00时,调整后的从服务器的时间为11:00时+240s=11:04时。

本实施例中,通过对目标时间偏差从小到大排列的时间排序,同时设置排序阈值对第一时间偏差集合进行滤除,并在滤除后的第一时间偏差集合中选取最大的目标时间偏差,作为第二调整时间偏差对从服务器进行时间调整,能够达到对从服务器精确调整时间的目的。

在一个实施例中,如图6所示,得到目标排序阈值的步骤包括:

步骤602,获取多个前向时间段分别对应的第二调整时间偏差,作为参考时间偏差。

其中,前向时间段是指当前时间段之间的时间段。

具体的,为了提高时间调整精度,可以通过获取当前时间段之前的多个前向时间段对应的第二调整时间偏差,作为参考时间偏差。例如,三个前项时间段对应的第一时间偏差集合分别为{30s,60s,90s,120s,150s,180s,210s,240s,270s,300s}、{20s,50s,80s,110s,140s,170s,200s,230s,260s,290s}和{10s,40s,70s,100s,130s,160s,190s,220s,250s,280s},则对应的第二调整时间偏差分别为240s、220s和230s,可以将240s、230s和220s作为参考时间偏差。

步骤604,按照时间顺序对参考时间偏差进行排序,得到参考时间偏差序列。

具体的,在得到参考时间偏差之后,按照获取上述参考时间偏差的前项时间段的时间顺序对得到的参考时间偏差进行排序。例如,得到的参考时间偏差分别为240s、230s和220s,按照得到参考时间偏差的时间进行排序后的参考时间偏差序列为{240s,230s,220s}。

步骤606,获取参考时间偏差序列的变化趋势。

其中,变化趋势是指参考时间偏差序列中参考时间偏差的大小排列顺序呈现出来的整体趋势。例如,获取到的参考时间偏差序列为{240s,230s,220s},则变化趋势为逐渐变小。

具体的,在从服务器获取到参考时间偏差序列后,可以通过将得到的参考时间偏差序列输入到数据分析模型中,通过模型分析中的曲线图直观的获取到参考时间偏差序列的变化趋势。

步骤608,获取预设排序阈值,根据与变化趋势相反的方向对预设排序阈值进行调整,得到目标排序阈值。

其中,目标排序阈值是指经过对参考时间偏差序列的变化趋势进行分析后得到的排序阈值。该排序阈值和预设排序阈值有可能相同,也有可能比预设排序阈值大或者比预设排序阈值小。

具体的,从服务器可以根据参考时间偏差序列的变化趋势对预设排序阈值进行调整,以提高服务器时间同步的精度。

在一个实施例中,从服务器从存储有预设排序阈值的存储区在获取到预设排序阈值以及参考时间偏差序列的变化趋势后,通过变化趋势向相反方向调整预设排序阈值。例如,假设预设排序阈值为80%,参考时间偏差序列的变化趋势是逐渐变小,证明参考时间偏差越来越小,则将预设排序阈值调高,例如可以将预设排序阈值从80%调整为90%,将调整后的预设排序阈值90%作为目标排序阈值。

在一个实施例中,从服务器从存储有预设排序阈值的存储区在获取到预设排序阈值以及参考时间偏差序列的变化趋势后,通过变化趋势向相反方向调整预设排序阈值。例如,预设排序阈值为80%,参考时间偏差序列的变化趋势是逐渐变大,证明参考时间偏差越来越大,则将预设排序阈值调低,例如可以预设排序阈值从80%调整为70%,将调整后的预设排序阈值70%作为目标排序阈值。

本实施例中,通过参考时间偏差序列的变化趋势分析调整预设排序阈值,能够达到根据参考时间偏差序列的变化趋势自适应地调整预设排序阈值的目的。

在一个实施例中,如图7所示,基于滤除后的第一时间偏差集合对从服务器的时间进行调整之后还包括:

步骤702,获取交易订单;交易订单携带有第一时间戳。

其中,时间戳是指时间信息。

具体的,在从服务器上获取到携带有第一时间戳的交易订单,第一时间戳是从服务器根据本端操作系统上的时间对交易订单添加的时间信息。

在一个实施例中,从服务器通过本端中的下单系统获取到用户需要的交易订单,例如,证券系统中的交易订单。

步骤704,向主服务器发送交易订单;交易订单携带有时间戳获取请求。

其中,时间戳获取请求是指能够获取到时间戳的请求。

具体的,在从服务器上获取到携带有第一时间戳的交易订单,将该交易订单发送给主服务器,交易订单携带有时间戳获取请求。

在一个实施例中,从服务器将交易订单加密后,传输给主服务器。例如,使用md5加密算法对交易订单进行加密后发送给主服务器。通过将交易订单加密可以对交易订单的安全性和完整性进行验证。

步骤706,接收主服务器响应于时间戳获取请求返回的第二时间戳。

具体的,在主服务器接收到从服务器发送的交易订单的同时,会获取到该交易订单上携带的时间戳获取请求。根据该时间戳获取请求,主服务器将接收到的交易订单打上本端的时间戳即第二时间戳后,将第二时间戳返回给从服务器。

步骤708,当第一时间戳和第二时间戳的差值大于时间差值阈值时,向维护终端发送从服务器对应的异常提示消息。

其中,时间差值阈值是指两个时间戳之间时间差的临界值。大于该临界值和小于等于该临界值,从服务器的响应有所不同。

具体的,当第一时间戳和第二时间戳的差值大于时间差值阈值时,说明在主服务器和从服务器之间的传输链路出现了性能或者被占用等的异常,需要将该异常通过异常提示消息的方式发送到维护终端上,以便于主服务器和从服务器之间的传输链路能够得到及时的维护。例如,假设差值阈值为10ms,当第一时间戳和第二时间戳的差值为15ms时,由于该差值已经大于作为差值阈值的10ms,此时,主服务器和从服务器之间的传输链路是需要维护的,从服务器会将异常提示消息发送给维护终端。

本实施例中,从服务器发送交易订单给主服务器,通过交易订单在从服务器侧的时间戳和在主服务器上的时间戳之间的差值,与时间差值阈值之间的比较,能够达到精确判断传输链路异常的情况,减少因传输链路异常而带来的对时间同步精确度的影响。

在一个实施例中,如图8所示主服务器发送sync消息(同步消息)到从服务器,并在主服务器端记录下sync消息发送时间t1,当从服务器接收到sync消息时,在从服务器端记录下接收到sync消息的时间t2;同时,主服务器会将记录下的时间t1嵌入到follow_up消息(跟随消息)中,发送给从服务器。从服务器也会发送delay_req消息(延时请求消息)给主服务器,并记录下发送delay_req消息的时间t3,主服务器接收到delay_req消息后,记录下接收到delay_req消息的时间t4,并将时间t4嵌入到delay_resp消息(延时请求回应消息)发送给从服务器。在主服务器与从服务器消息交互完成之后,在从服务器端存储有四个时间戳,分别为t1、t2、t3和t4。假设从服务器与主服务器之间的时间偏差表示为offset,主服务器到从服务器之间的路径延时为delay1,从服务器到主服务器之间的路径延时为delay2,路径延时抖动标识为δ,上述函数存在有以下函数关系:

t2-t1=offset+delay1;

t4-t3=delay2-offset;

delay1-delay2=δ;

offset=[t2-t1-(t4-t3)-δ]/2;假设主服务器到从服务器之间的路径延时delay1与从服务器到主服务器之间的路径延时delay2相等,则δ的值为0,从服务器与主服务器之间的时间偏差表示为offset=[t2-t1-(t4-t3)]/2。

在一个实施例中,从服务器和主服务器进行多次消息交互,在每次交互过程中,在从服务器中会计算出来一个offset,可以利用该offset对从服务器进行时间同步,并且将每次得到的offset保存到数据库中。为了节省内存空间,可以保存最近的1至3小时左右得到的多个offset。

在一个实施例中,可以将得到的offset进行数据分析,确定进行服务器时间同步的offset。例如可以将得到的offset组成的集合中的每个offset按照从小到大的顺序进行排序,滤除掉大于排序阈值的offset。例如,offset组成的集合中有10个offset,排序阈值为80%,则滤除到排序中排在第九和第十的offset值。假设排序之后的offset组成的集合为{10s,20s,30s,40s,50s,60s,70s,80s,90s,100s},在排序阈值为80%的情况下,最后得到的offset集合为{10s,20s,30s,40s,50s,60s,70s,80s},在该集合中选择最大值作为从服务器和主服务器之间的offset,利用该最大值对从服务器进行时间同步。例如,上述offset集合{10s,20s,30s,40s,50s,60s,70s,80s}中选择80s对从服务器进行同步。如果实时获取到的offset大于滤除后offset集合中的最大值,则仍然利用offset集合中的最大值对从服务器进行同步,并将实时获取到的offset记录在数据库中,继续进行新一轮的offset排序。

应该理解的是,虽然图2-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图9所示,提供了一种服务器时间同步装置900,包括:时间同步指令接收模块902、时间同步指令响应模块904、第一时间排序得到模块906、第一时间偏差集合得到模块908和服务器的时间调整模块910,其中:时间同步指令接收模块902,用于接收时间同步指令;时间同步指令响应模块904,用于响应于时间同步指令,获取当前时间段对应的第一时间偏差集合,第一时间偏差集合包括多个目标时间偏差,目标时间偏差为主服务器与从服务器之间的时间偏差,目标时间偏差是基于主服务器与从服务器之间的交互消息的发送时间以及接收时间的差异得到的;第一时间排序得到模块906,用于对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序;第一时间偏差集合得到模块908,用于基于目标时间偏差的第一时间排序以及排序阈值确定第一时间偏差集合中存在链路抖动的目标时间偏差,对存在链路抖动的目标时间偏差进行滤除,得到滤除后的第一时间偏差集合;服务器的时间调整模块910,用于基于滤除后的第一时间偏差集合对从服务器的时间进行调整。

在一个实施例中,服务器时间同步装置还包括:同步消息接收模块,用于接收主服务器发送的同步消息,同步消息的发送时间为第一时间;第二时间记录模块,用于记录接收同步消息的第二时间;第三时间记录模块,用于向主服务器发送延时请求消息,记录延时请求消息对应的第三时间,第三时间为发送延时请求消息的时间;第一时间差异及第二时间差异获取模块,用于获取第一时间与第二时间之间的第一时间差异、以及第三时间与第四时间之间的第二时间差异;目标时间偏差得到模块,用于基于第一时间差异以及第二时间差异得到从服务器与主服务器之间的目标时间偏差。

在一个实施例中,目标时间偏差得到模块用于获取主服务器到从服务器的第一路径延时;第一路径延时为主服务器发送同步消息到从服务器的延时时长;获取从服务器到主服务器的第二路径延时;第二路径延时为从服务器发送延时请求消息到主服务器的延时时长;根据第一路径延时、第二路径延时、第一时间差异和第二时间差异得到从服务器与主服务器之间的目标时间偏差。

在一个实施例中,服务器时间同步装置还包括:第一调整时间偏差确定模块,用于当第一时间偏差集合中目标时间偏差的数量小于数量阈值时,则从第一时间偏差集合中选取距离当前时间段最近的目标时间偏差,作为第一调整时间偏差;从服务器的时间调整模块,用于基于第一调整时间偏差对从服务器的时间进行调整;第一时间排序得到模块,用于当第一时间偏差集合中目标时间偏差的数量大于数量阈值时,则进入对第一时间偏差集合中的目标时间偏差进行排序,得到各个目标时间偏差的第一时间排序的步骤。

在一个实施例中,第一时间偏差集合得到模块908用于获取第一时间偏差集合中第一时间排序大于排序阈值对应的目标时间偏差,作为抖动时间偏差;将抖动时间偏差作为第一时间偏差集合中存在链路抖动的目标时间偏差;基于滤除后的第一时间偏差集合对从服务器的时间进行调整包括:从滤除后的第一时间偏差集合中选取最大的目标时间偏差,作为第二调整时间偏差;基于第二调整时间偏差对从服务器的时间进行调整。

在一个实施例中,服务器时间同步装置包括:第二调整时间偏差获取模块,用于获取多个前向时间段分别对应的第二调整时间偏差,作为参考时间偏差;参考时间偏差序列得到模块,用于按照时间顺序对参考时间偏差进行排序,得到参考时间偏差序列;参考时间偏差序列的变化趋势获取模块,用于获取参考时间偏差序列的变化趋势;目标排序阈值得到模块,用于获取预设排序阈值,根据与变化趋势相反的方向对预设排序阈值进行调整,得到目标排序阈值。

在一个实施例中,服务器时间同步装置还包括:交易订单获取模块,用于获取交易订单;交易订单携带有第一时间戳;交易订单发送模块,用于向主服务器发送交易订单;交易订单携带有时间戳获取请求;第二时间戳接收模块,用于接收主服务器响应于时间戳获取请求返回的第二时间戳;异常提示消息发送模块,用于当第一时间戳和第二时间戳的差值大于时间差值阈值时,向维护终端发送从服务器对应的异常提示消息。

关于服务器时间同步装置的具体限定可以参见上文中对于服务器时间同步方法的限定,在此不再赘述。上述服务器时间同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储服务器时间同步数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种服务器时间同步方法。

本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1