分布式交易系统的时间同步方法和装置转让专利

申请号 : CN201610373765.9

文献号 : CN107453831B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沈孝栋

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请提出一种分布式交易系统的时间同步方法和装置,该方法包括:获取本机的当前时间,并确定当前时间所属的时间段;根据所述时间段,采用对应的预设时间间隔进行时间同步。该方法能够保证分布式系统环境下各应用服务器的日期一致、准确,同时减少对数据库服务器的调用量,节约资源。

权利要求 :

1.一种分布式交易系统的时间同步方法,其特征在于,包括:获取本机的当前时间,并确定当前时间所属的时间段;

根据所述时间段,采用对应的预设时间间隔进行时间同步,所述时间段包括预设的敏感时段和非敏感时段,具体包括:当所述本机的当前时间属于敏感时段时,采用第一预设时间间隔进行时间同步;

当所述本机的当前时间属于非敏感时段时,采用第二预设时间间隔进行时间同步,其中,所述第一预设时间间隔小于第二预设时间间隔。

2.根据权利要求1所述的方法,其特征在于,所述进行时间同步包括:获取用于时间同步的标准服务器时间;

对所述标准服务器时间进行本地化保存。

3.根据权利要求1或2所述的方法,其特征在于,在所述采用对应的预设时间间隔进行时间同步之后,还包括:根据本机同步后的当前时间生成交易数据。

4.根据权利要求1或2所述的方法,其特征在于,还包括:采用第三预设时间间隔对本机的当前时间进行校验。

5.根据权利要求4所述的方法,其特征在于,所述采用第三预设时间间隔对本机的当前时间进行校验包括:每隔第三预设时间间隔提取本机的当前时间;

将所述本机的当前时间上报至相应的监控设备,以对所述本机的当前时间进行校验。

6.一种分布式交易系统的时间同步装置,其特征在于,包括:获取模块,用于获取本机的当前时间,并确定当前时间所属的时间段;

同步模块,用于根据所述时间段,采用对应的预设时间间隔进行时间同步,所述时间段包括预设的敏感时段和非敏感时段,所述同步模块具体用于:当所述本机的当前时间属于敏感时段时,采用第一预设时间间隔进行时间同步;

当所述本机的当前时间属于非敏感时段时,采用第二预设时间间隔进行时间同步,其中,所述第一预设时间间隔小于第二预设时间间隔。

7.根据权利要求6所述的装置,其特征在于,所述同步模块包括:获取单元,用于获取用于时间同步的标准服务器时间;

保存单元,用于对所述标准服务器时间进行本地化保存。

8.根据权利要求6或7所述的装置,其特征在于,还包括:生成模块,用于根据本机同步后的当前时间生成交易数据。

9.根据权利要求6或7所述的装置,其特征在于,还包括:监控模块,用于采用第三预设时间间隔对本机的当前时间进行校验。

10.根据权利要求9所述的装置,其特征在于,所述监控模块包括:提取单元,用于每隔第三预设时间间隔提取本机的当前时间;

上报单元,用于将所述本机的当前时间上报至相应的监控设备,以对所述本机的当前时间进行校验。

说明书 :

分布式交易系统的时间同步方法和装置

技术领域

[0001] 本申请涉及时间同步技术领域,尤其涉及一种分布式交易系统的时间同步方法和装置。

背景技术

[0002] 目前,在金融类的交易系统、账务系统中,账务日期的准确性尤其重要(通常财务日期需要精确到日),账务日期出问题会导致会计核算、清算、利息计算等一系列问题。
[0003] 在传统的单机的金融核心系统中,都使用数据库日期作为交易日期,大部分情况下为了减少对数据库的压力,都会将日期定时捞取放到本机内存中,以便节省对数据库系统的调用压力。
[0004] 随着数据量的增大以及分布式系统的广泛应用,在分布式系统环境下的金融交易系统中,当前常见的有以下两种做法。
[0005] 第一种是分布式系统应用服务器各自采用服务器系统时间作为交易日期,如图1所示,即各个应用服务器通过获取本机系统时间方式作为交易日期,但这种做法存在两个缺点:一是应用服务器可能会出现故障,导致各个应用服务器的系统时间会出现较大差异;二是应用服务器集群难免存在3-5秒级的时间差异,在0点前后敏感期间,会导致日期不一致从而引起业务不可预期的异常。
[0006] 第二种是分布式系统应用服务器都采用统一的数据库时间作为交易日期,如图2所示,即每个应用服务器需要获取交易日期的时候,直接从统一的数据库服务器获取,优点是日期不会有偏差,缺点是数据库压力很大,尤其是在分布式环境下,应用服务器数量越多,业务量越大,数据库被调用获取系统时间的次数越多,数据库服务器的资源会被浪费很大。

发明内容

[0007] 为解决现有技术中的上述问题,本申请的一个目的在于提出一种分布式交易系统的时间同步方法及装置,可以保证分布式系统环境下各应用服务器的日期一致、准确,同时减少对数据库服务器的调用量,节约资源。
[0008] 为达到上述目的,本申请实施例提出的分布式交易系统的时间同步方法,包括:获取本机的当前时间,并确定当前时间所属的时间段;根据所述时间段,采用对应的预设时间间隔进行时间同步。
[0009] 为达到上述目的,本申请实施例提出的分布式交易系统的时间同步装置,包括:获取模块,用于获取本机的当前时间,并确定当前时间所属的时间段;同步模块,用于根据所述时间段,采用对应的预设时间间隔进行时间同步。
[0010] 由以上本申请实施例提供的技术方案可见,通过根据当前时间所属时间段采用对应的预设时间间隔进行时间同步,无需每次交易都访问数据库服务器获取时间,也能保证各应用服务器之间的日期统一,避免秒级差异引起业务的异常,同时在分布式系统环境下即使应用服务器数量多、业务量大,也能够保证各应用服务器的日期一致、准确,同时减少对数据库服务器的调用量,节约资源。
[0011] 本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

[0012] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0013] 图1是第一种现有技术的分布式交易系统进行时间同步的示意图;
[0014] 图2是第二种现有技术的分布式交易系统进行时间同步的示意图;
[0015] 图3是本申请一实施例提出的分布式交易系统的时间同步方法的流程示意图;
[0016] 图4是本申请一实施例的分布式交易系统的时间同步装置的结构示意图;
[0017] 图5是本申请另一实施例的分布式交易系统的时间同步装置的结构示意图;
[0018] 图6是本申请一实施例的分布式交易系统进行时间同步的示意图;
[0019] 图7是本申请一具体实施例的分布式交易系统进行时间同步的流程示意图。

具体实施方式

[0020] 本申请实施例提供一种分布式交易系统的时间同步方法和装置。
[0021] 为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0022] 图3是本申请一实施例提出的分布式交易系统的时间同步方法的流程示意图,在该图所示的实施例中,通过根据时间段采用不同频率进行时间同步,来实现分布式交易系统的时间同步,以解决现有技术应用服务器之间日期差异的问题,也解决对统一数据库服务器访问压力的问题,同时,随着业务量和应用服务器数量增加也不会过度增加数据库的访问压力。如图3所示,该方法包括:
[0023] 步骤101,获取本机的当前时间,并确定当前时间所属的时间段。
[0024] 步骤102,根据所述时间段,采用对应的预设时间间隔进行时间同步。
[0025] 其中,一天可以划分为多个时间段,每个时间段对应不同的预设时间间隔。在不同的时间段采用不同的频率进行时间同步,可以根据每个时间段的不同敏感程度改变更新频率,能够有效避免在较敏感的时间段出现交易时间尤其是日期不同步的问题。
[0026] 由于在分布式环境下的金融类交易系统、账务系统中,交易时间中的日期起主要作用(通常财务日期需要精确到日)。因此以下实施例主要以日期同步为例进行说明。
[0027] 根据本申请的一个实施例,进行时间同步包括:获取用于时间同步的标准服务器时间;对所述标准服务器时间进行本地化保存。其中,所述标准服务器是在分布式系统中各个应用服务器的时间同步源,例如是时间服务器、数据库服务器或者其他用于统一更新时间的设备。本地化保存是指将获取到的标准服务器时间保存在本地的内存或其他存储介质中,以便于本地操作时提取该时间。
[0028] 根据本申请的一个实施例,所述时间段包括预设的敏感时段和非敏感时段,根据所述时间段,采用对应的预设时间间隔进行时间同步,具体包括:当所述本地的当前时间属于敏感时段时,采用第一预设时间间隔进行时间同步;当所述本地的当前时间属于非敏感时段时,采用第二预设时间间隔进行时间同步,其中,所述第一预设时间间隔小于第二预设时间间隔。具体地,敏感时段和非敏感时段可以根据不同系统的实际需求进行设置,例如0点为敏感时间点的系统中,敏感时段可以设置为0点前后,例如23:30-00:30,对应的第一预设时间间隔可以设置为1秒或0.5秒,以尽可能地减少秒级误差导致的各应用服务器日期不统一,而在非敏感时段,例如不涉及日期差异的时段00:30-23:30,对应的第二预设时间间隔也可以设置为5分钟、10分钟等较低的更新频率。金融、交易或财务等系统中的敏感时间点可以是00:00、15:00以及其他可能系统敏感的时间点,敏感时段与非敏感时段可以根据实际需求进行划分,在此不再一一列举。
[0029] 根据本申请的一个实施例,在所述采用对应的预设时间间隔进行时间同步之后,还包括:根据本机同步后的当前时间生成交易数据。应用服务器生成交易数据时可以直接提取本地保存的同步时间作为交易时间,无需每次都到标准服务器去提取,有效降低了标准服务器的访问压力。
[0030] 根据本申请的一个实施例,该方法还包括,采用第三预设时间间隔对本机的当前时间进行校验。
[0031] 根据本申请的一个实施例,采用第三预设时间间隔对本机的当前时间进行校验包括:每隔第三预设时间间隔提取本机的当前时间;将所述本机的当前时间上报至相应的监控设备,以对所述本机的当前时间进行校验。为了防止本地保存的时间有问题,例如长时间没有更新或者本地错误等导致本地保存的当前时间与实际时间差异较大等,可以通过本实施例的监控上报机制进行监控,保障本地时间出问题后能够及时发现。其中,校验的过程可以是将本机的当前时间与数据库服务器或者监测设备保存的时间进行比对,具体校验过程可以通过现有的或未来可能出现的手段进行实现,本申请对此不做限定。
[0032] 本申请的实施例通过根据当前时间所属时间段采用对应的预设时间间隔进行时间同步,无需每次交易都访问数据库服务器获取时间,也能保证各应用服务器之间的日期统一,避免秒级差异引起业务的异常,同时在分布式系统环境下即使应用服务器数量多、业务量大,也能够保证各应用服务器的日期一致、准确,同时减少对数据库服务器的调用量,节约资源。
[0033] 基于同一发明构思,本申请实施例还提供了一种分布式交易系统的时间同步装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于分布式交易系统的时间同步装置解决问题的原理与分布式交易系统的时间同步方法相似,因此分布式交易系统的时间同步装置的实施可以参见分布式交易系统的时间同步装置的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0034] 图4是本申请一实施例的分布式交易系统的时间同步装置的结构示意图。本实施例的装置可以为实现相应功能的逻辑部件构成,也可以为运行有相应功能软件的电子设备。
[0035] 如图4所示,该分布式交易系统的时间同步装置包括:获取模块11和同步模块12。
[0036] 具体地,获取模块11用于获取本机的当前时间,并确定当前时间所属的时间段。
[0037] 同步模块12用于根据所述时间段,采用对应的预设时间间隔进行时间同步。
[0038] 本装置通过根据当前时间所属时间段采用对应的预设时间间隔进行时间同步,无需每次交易都访问数据库服务器获取时间,也能保证各应用服务器之间的日期统一,避免秒级差异引起业务的异常,同时在分布式系统环境下即使应用服务器数量多、业务量大,也能够保证各应用服务器的日期一致、准确,同时减少对数据库服务器的调用量,节约资源。
[0039] 图5所示是本申请另一实施例的分布式交易系统的时间同步装置的结构示意图。如图5所示,该装置包括:获取模块11、同步模块12、获取单元121、保存单元122、生成模块
13、监控模块14、提取单元141和上报单元142。其中,同步模块12包括获取单元121和保存单元122;监控模块14包括提取单元141和上报单元142。
[0040] 具体的,获取单元121,用于获取用于时间同步的标准服务器时间。
[0041] 保存单元122,用于对所述标准服务器时间进行本地化保存。
[0042] 进一步地,所述时间段包括预设的敏感时段和非敏感时段,所述同步模块12具体用于当所述本地的当前时间属于敏感时段时,采用第一预设时间间隔进行时间同步;当所述本地的当前时间属于非敏感时段时,采用第二预设时间间隔进行时间同步,其中,所述第一预设时间间隔小于第二预设时间间隔。
[0043] 生成模块13用于根据本机同步后的当前时间生成交易数据。
[0044] 监控模块14用于采用第三预设时间间隔对本机的当前时间进行校验。
[0045] 进一步地,所述监控模块14包括:
[0046] 提取单元141用于每隔第三预设时间间隔提取本机的当前时间;
[0047] 上报单元142用于将所述本机的当前时间上报至相应的监控设备,以对所述本机的当前时间进行校验。
[0048] 本实施例的装置通过根据当前时间所属时间段采用对应的预设时间间隔进行时间同步,无需每次交易都访问数据库服务器获取时间,也能保证各应用服务器之间的日期统一,避免秒级差异引起业务的异常,同时在分布式系统环境下即使应用服务器数量多、业务量大,也能够保证各应用服务器的日期一致、准确,同时减少对数据库服务器的调用量,节约资源。同时,可以通过监控上报机制对本地时间进行监控,保障本地时间出问题后能够及时发现并更正。
[0049] 在一个具体实施例中,与图1、图2所示的现有技术相比,本申请的具体实施例可通过图6所示的系统完成上述的时间同步过程。应用服务器A-1定期到数据库服务器获取数据库时间并保存至本地,应用服务器A-1中产生交易时直接获取本地保存的时间(日期)作为交易日期,并将本地保存的时间(日期)定时上报至监控端(例如监控服务器)进行监控。
[0050] 其中,数据库时间是指数据库服务器上数据库管理软件提供的时间。对应的,图7是本申请一具体实施例的分布式交易系统的时间同步的流程示意图。其中,应用服务器可以通过交易模块、日期存储模块和定时任务模块来实现本流程,本实施例以数据库服务器为标准服务器进行日期同步为例,如图7所示,包括:
[0051] 步骤201,应用服务器获取本地存储的当前时间,并确定当前时间所属的时间段。
[0052] 实际应用中,应用服务器的本地时间可以是指分布式系统下,应用服务器的系统时间,如Linux服务器的本地时间就是systime。
[0053] 步骤202,根据所述时间段,采用对应的预设时间间隔获取数据库时间。
[0054] 在具体实施例中,上述过程可以通过应用服务器的定时任务模块实现。
[0055] 步骤203,将获取到的数据库时间保存在应用服务器内存中。
[0056] 在具体实施例中,可以通过日期存储模块保存获取到的日期/时间。
[0057] 定时任务模块会按照应用服务器的当前时间点采用不同的时间间隔访问数据库服务器获取数据库日期,存入应用服务器本机内存中。
[0058] 具体地,当所述本地的当前时间属于敏感时段时,可采用第一预设时间间隔进行时间同步;当所述本地的当前时间属于非敏感时段时,可采用第二预设时间间隔进行时间同步,其中,所述第一预设时间间隔小于第二预设时间间隔。
[0059] 其中时段划分与对应的时间间隔例如:23:30-0:30敏感时段每1秒钟一次间隔,其他时间每1-5分钟一次间隔。
[0060] 这样做是基于以下原因:23:30-0:30处于系统日期变更点附近,所以容易出现0点前后秒级问题,即时间相差1秒可能导致日期相差一天,所以建议1秒钟或者更短为一次间隔。其他时间因为离0点很远,所以只需要5分钟或更久为一次间隔,做好校准即可,同时可降低访问数据库服务器的次数。
[0061] 步骤204,获取本机同步后的当前时间作为交易时间。
[0062] 可以由应用服务器的交易模块直接访问本机内存(日期存储模块)获取当前时间作为交易时间,无需访问数据库服务器。
[0063] 步骤205,每隔第三预设时间间隔提取本机的当前时间。
[0064] 步骤206,将所述本机的当前时间上报至相应的监控设备,以对所述本机的当前时间进行校验。
[0065] 步骤207,监控设备进行时间校验,在校验结果异常时报警。
[0066] 需要理解的是,上述获取数据库时间和监控上报的时间间隔可以根据实际需要进行配置和调整。
[0067] 本实施例可以根据当前时间所属时间段采用对应的预设时间间隔进行时间同步,通过在不同时间段采用不同时间间隔,无需每次交易都访问数据库服务器获取时间,也能保证各应用服务器之间的日期统一,避免秒级差异引起业务的异常,同时在分布式系统环境下即使应用服务器数量多、业务量大,也能够保证各应用服务器的日期一致、准确,同时减小对数据库服务器的访问压力,节约资源。同时,可以通过监控上报机制对本地时间进行监控,保障本地时间出问题后能够及时发现并更正。
[0068] 需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0069] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0070] 应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0071] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0072] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0073] 尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。