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