掌桥专利:专业的专利平台
掌桥专利
首页

读时间戳的获取方法和装置、电子设备和存储介质

文献发布时间:2023-06-19 11:35:49


读时间戳的获取方法和装置、电子设备和存储介质

技术领域

本申请涉及数据处理领域,尤其涉及一种读时间戳的获取方法和装置、电子设备和存储介质。

背景技术

对于分布式数据库,分布式事务需要具备弹性特性。在分布式事务场景中,为了保证数据可见性的正确性,需要在全局范围内计算全局最小的活跃读时间戳。相关技术中计算全局最小的活跃读时间戳的方式为:GTS(Global Transaction Service,全局事务服务)分别获取每个DS(Data Server,数据服务器)的最小活跃读时间戳,然后合并计算全局最小的活跃读时间戳。而对于每个DS,每个DS上最小的活跃读时间戳的计算方式为:遍历当前处于活跃状态的业务端连接,选择其中最小的读时间戳。

在分布式系统中,在高性能场景下,由于DS通过多连接方式到GTS获取逻辑时间,这样无法保证多个连接上请求的响应逻辑时间的大小顺序和响应达到的顺序一致,即,小的逻辑时间先到、大的逻辑时间后到。因此,DS从GTS获取的逻辑时间存在乱序问题。

分布式系统中的逻辑时间只能单调递增,不允许出现回退。针对上述乱序问题,相关技术中采用的方式为:如果后面到达的逻辑时间比本DS的最小活跃读时间戳小,重新获取一次逻辑时间。

然而,上述乱序问题属于正常现象,出现概率较高。重新获取逻辑时间的方案需要增加至少一次网络交互开销,这样会导致SQL(Structured Query Language,结构化查询语言)耗时大幅增加。

发明内容

本申请提供了一种读时间戳的获取方法和装置、电子设备和存储介质,以至少解决相关技术中重新获取逻辑时间的方式存在耗时大幅增加的问题。

根据本申请实施例的一个方面,提供了一种读时间戳的获取方法,包括:通过数据服务器从目标服务端获取目标校准时间戳,其中,所述目标服务端为用于提供全局事务服务的服务端;将所述数据服务器在获取到所述目标校准时间戳之后接收到的业务时间戳调整为不小于所述目标校准时间戳;扫描所述数据服务器上处于活跃状态的业务端连接,得到所述数据服务器的最小活跃读时间戳;将所述最小活跃读时间戳发送给所述目标服务端,其中,所述最小活跃读时间戳用于所述目标服务端计算全局最小活跃读时间戳。

可选地,通过所述数据服务器从所述目标服务端获取所述目标校准时间戳包括:通过所述数据服务器按照目标周期定时向所述目标服务端发送目标请求消息,其中,所述目标请求消息用于请求获取所述目标服务端的逻辑时间,所述目标周期为所述目标服务端计算所述全局最小活跃读时间戳的周期;通过所述数据服务器接收所述目标服务端响应所述目标请求消息返回的所述目标校准时间戳。

可选地,将所述数据服务器在获取到所述目标校准时间戳之后接收到的业务时间戳调整为不小于所述目标校准时间戳包括:通过所述数据服务器接收到所述目标服务端发送的目标业务的业务时间戳;在所述目标业务的业务时间戳小于所述目标校准时间戳的情况下,将所述目标业务的业务时间戳调整为所述目标校准时间戳。

可选地,在通过所述数据服务器接收到所述目标服务端发送的所述目标业务的业务时间戳之后,所述方法还包括:在所述目标业务的业务时间戳大于或者等于所述目标校准时间戳的情况下,保持所述目标业务的业务时间戳。

可选地,扫描所述数据服务器上处于活跃状态的业务端连接,得到所述数据服务器的所述最小活跃读时间戳包括:扫描所述数据服务器的活跃业务列表,得到所述最小活跃读时间戳,其中,所述活跃业务列表用于记录连接到所述数据服务器上的、处于活跃状态的所述业务端的读时间戳。

可选地,在将所述最小活跃读时间戳发送给所述目标服务端之后,所述方法还包括:接收所述目标服务端返回的所述全局最小活跃读时间戳;按照所述全局最小活跃读时间戳删除目标数据库中的历史版本数据,其中,所述历史版本数据为根据所述全局最小活跃读时间戳确定的、对所有请求均不可见的版本数据。

可选地,在将所述最小活跃读时间戳发送给所述目标服务端之后,所述方法还包括:通过所述目标服务端接收多个所述数据服务器中发送的多个所述最小活跃读时间戳,其中,多个所述数据服务器与多个所述最小活跃读时间戳一一对应;将多个所述最小活跃读时间戳中的最小值,确定为所述全局最小活跃读时间戳。

根据本申请实施例的另一个方面,还提供了一种读时间戳的获取装置,包括:获取单元,用于通过数据服务器从目标服务端获取目标校准时间戳,其中,所述目标服务端为用于提供全局事务服务的服务端;调整单元,用于将所述数据服务器在获取到所述目标校准时间戳之后接收到的业务时间戳调整为不小于所述目标校准时间戳;扫描单元,用于扫描所述数据服务器上处于活跃状态的业务端连接,得到所述数据服务器的最小活跃读时间戳;发送单元,用于将所述最小活跃读时间戳发送给所述目标服务端,其中,所述最小活跃读时间戳用于所述目标服务端计算全局最小活跃读时间戳。

可选地,所述获取单元包括:发送模块,用于通过所述数据服务器按照目标周期定时向所述目标服务端发送目标请求消息,其中,所述目标请求消息用于请求获取所述目标服务端的逻辑时间,所述目标周期为所述目标服务端计算所述全局最小活跃读时间戳的周期;第一接收模块,用于通过所述数据服务器接收所述目标服务端响应所述目标请求消息返回的所述目标校准时间戳。

可选地,所述调整单元包括:第二接收模块,用于通过所述数据服务器接收到所述目标服务端发送的目标业务的业务时间戳;调整模块,用于在所述目标业务的业务时间戳小于所述目标校准时间戳的情况下,将所述目标业务的业务时间戳调整为所述目标校准时间戳。

可选地,所述装置还包括:保持单元,用于在通过所述数据服务器接收到所述目标服务端发送的所述目标业务的业务时间戳之后,在所述目标业务的业务时间戳大于或者等于目标校准时间戳的情况下,保持所述目标业务的业务时间戳。

可选地,所述扫描单元包括:扫描模块,用于扫描所述数据服务器的活跃业务列表,得到所述最小活跃读时间戳,其中,所述活跃业务列表用于记录连接到所述数据服务器上的、处于活跃状态的所述业务端的读时间戳。

可选地,所述装置还包括:第一接收单元,用于在将所述最小活跃读时间戳发送给所述目标服务端之后,接收所述目标服务端返回的所述全局最小活跃读时间戳;删除单元,用于按照所述全局最小活跃读时间戳删除目标数据库中的历史版本数据,其中,所述历史版本数据为根据所述全局最小活跃读时间戳确定的、对所有请求均不可见的版本数据。

可选地,所述装置还包括:第二接收单元,用于在将所述最小活跃读时间戳发送给所述目标服务端之后,通过所述目标服务端接收多个所述数据服务器中发送的多个所述最小活跃读时间戳,其中,多个所述数据服务器与多个所述最小活跃读时间戳一一对应;确定单元,用于将多个所述最小活跃读时间戳中的最小值,确定为所述全局最小活跃读时间戳。

根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法。

根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法。

在本申请实施例中,采用在DS粒度上进行时间校准的方式,通过数据服务器(即,DS)从目标服务端(如,GTS)获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端;将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳;扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳;将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳,由于在DS粒度上进行时间校准,并将校准之后获取得到的时间戳调整为不小于校准时间,从而可以实现在不增加任何同步开销的同时进行高效计算全局最小活跃读时间戳的目的,达到了减少计算耗时、提高计算效率的技术效果,进而解决了相关技术中重新获取逻辑时间的方式存在耗时大幅增加的问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是根据本申请实施例的一种可选的读时间戳的获取方法的硬件环境的示意图;

图2是根据本申请实施例的一种可选的读时间戳的获取方法的流程示意图;

图3是根据本申请实施例的一种可选的读时间戳的获取方法的示意图;

图4是根据本申请实施例的另一种可选的读时间戳的获取方法的流程示意图;

图5是根据本申请实施例的一种可选的读时间戳的获取装置的结构框图;

图6是根据本申请实施例的一种可选的电子设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本申请实施例的一个方面,提供了一种读时间戳的获取方法。可选地,在本实施例中,上述读时间戳的获取方法可以应用于如图1所示的由GTS 102、DS 104和DD(Database,数据库) 106所构成的硬件环境中。如图1所示,GTS 102与DS 104进行连接,可用于提供全局事务管理服务,以保证在例如微服务架构下的高性能事务一致性;DS 104与DD 106相连,可以用于提供数据(例如,业务数据、事务数据等)的存储服务。

GTS 102、DS 104和DD 106可以通过网络或者其他方式进行连接。上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。

本申请实施例的读时间戳的获取方法可以由DS 104来执行,也可以由DS 104和GTS 102共同执行,还可以是由GTS 102、DS 104和DD 106共同执行。以由DS 104来执行本实施例中的读时间戳的获取方法为例,图2是根据本申请实施例的一种可选的读时间戳的获取方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:

步骤S202,通过数据服务器从目标服务端获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端。

本实施例中的读时间戳的获取方法可以应用于在分布式系统中计算全局最小活跃时间戳的场景。上述分布式系统可以但不限于为:基于SQL的分布式系统等,本实施例中对此不作限定。

分布式系统可以包括:目标服务端(例如,GTS)、多个数据服务器(即,DS)以及多个数据库(即,DS)。目标服务端通过多连接方式分别与每个数据服务器相连,可以用于提供全局事务服务。对于多个数据服务器中的任一个,该数据服务器可以通过多条连接与目标服务端相连,每条连接均可以用于获取逻辑时间,即,业务时间戳。通过多条连接获取逻辑时间,可以在报文传输时间不变的情况下,减少请求的发送等待时间。

在计算全局最小活跃时间戳时,数据服务器需要获取本数据服务端的最小活跃读时间戳。在获取本数据服务端的最小活跃读时间戳以前,数据服务端可以首先从目标服务端获取一个逻辑时间戳,获取的逻辑时间戳可以作为目标校准时间戳(correct_ts)。

获取的目标校准时间戳的方式可以有多种,可以是数据服务器通过请求-响应的方式获取该目标校准时间戳,也可以是通过目标服务端主动推送的方式获取该目标校准时间戳,本实施例中对此不作限定。

步骤S204,将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳。

如果数据服务器在获取到目标校准时间戳之后从目标服务端获取逻辑时间,那么,获取的逻辑时间不会小于目标校准时间戳。如果数据服务器在获取到目标校准时间戳之前从目标服务端请求逻辑时间、在获取到目标校准时间戳之前获取到请求的逻辑时间,则获取到的逻辑时间可能小于目标校准时间戳。

为了避免出现乱序问题,可以将后续数据服务器从目标服务端接收到的、申请逻辑时间的响应中的逻辑时间调整为不小于目标校准时间戳,即,大于或者等于目标校准时间戳。

步骤S206,扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳。

在得到目标校准时间戳之后,数据服务器可以扫描数据服务器上处于活跃状态的业务端连接。处于活跃状态的连接可以由一个或多个,对应地,数据服务器可以依次扫描(遍历)连接到本数据服务器的、处于活跃状态的各个业务端,确定各个业务端的读时间戳。

如果处于活跃状态的业务端的数量为一个,则该业务端的读时间戳即为该数据服务器的最小活跃读时间戳。如果处于活跃状态的业务端的数量为多个,则可以获取到多个读时间戳。多个读时间戳中的最小值,即为该数据服务器的最小活跃读时间戳。

步骤S208,将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳。

在确定出本数据服务器的最小活跃读时间戳之后,数据服务器可以将最小活跃读时间戳发送给目标服务端,以便目标服务端根据各个数据服务器的最小活跃读时间戳计算全局最小活跃读时间戳。

在本实施例中,由于将获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳。对应地,获取的数据服务器的最小活跃读时间戳不会大于目标校准时间戳,那么,获取到目标校准时间戳之后接收到的业务时间戳不会小于最小活跃读时间戳。因此,可以解决获取的逻辑时间乱序的问题。

在基于全局时间戳进行可见性判断的架构中,一个请求对某个事务的可见性判断,主要因子是这个请求的读时间戳,和数据的提交时间戳。如果读时间戳大于这个数据的提交时间戳,则对这个数据可见,也意味着对这个数据的上一个版本不可见。将业务时间戳调大,并不会对业务数据的读取造成影响,也就是说,不会造成与原本对请求不可见的业务数据再次对请求可见(因为当前确定的全局最小活跃读时间戳不会比之前确定的全局最小活跃读时间戳小)。

通过上述读时间戳的获取方式,计算的全局最小活跃读时间戳符合外部一致性要求,即,业务侧一条SQL返回结果R1之后,再次发送的SQL读取到的数据一定不会读到R1之前版本的数据。

并且,通过获取一个校准逻辑时间,并将其后到达的业务时间戳校准到不早于校准逻辑时间(例如,correct_ts),相当于把此时在路径上的逻辑时间(即,已经从GTS获取到、但DS还未接收到的时间戳请求应答)校准了一下(即,向后拨动了时间),也符合外部一致性要求。

通过上述步骤S202至步骤S208,通过数据服务器从目标服务端获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端;将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳;扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳;将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳,解决了相关技术中重新获取逻辑时间的方式存在耗时大幅增加的问题,减少了计算耗时,提高了计算效率。

作为一种可选的实施例,通过数据服务器从目标服务端获取目标校准时间戳包括:

S11,通过数据服务器按照目标周期定时向目标服务端发送目标请求消息,其中,目标请求消息用于请求获取目标服务端的逻辑时间,目标周期为目标服务端计算全局最小活跃读时间戳的周期;

S12,通过数据服务器接收目标服务端响应目标请求消息返回的目标校准时间戳。

在本实施例中,可以通过定时在DS粒度上进行时间校准,在不增加任何同步开销的情况下解决乱序问题,即,在定时计算DS最小活跃读时间戳时,先从GTS获取一个逻辑时间戳。

数据服务器可以启动校准任务,该校准任务可以触发定时(例如,500ms)从GTS获取一次校准时间戳(逻辑时间)。可选地,数据服务器可以定时向目标服务端发送目标请求消息,该目标请求消息用于请求获取目标服务端的逻辑时间。定时的周期可以是目标周期,该目标周期为目标服务端计算全局最小活跃读时间戳的周期。发送目标请求消息的连接与获取业务逻辑时间的连接可以是不同的连接。

目标服务端在接收到目标请求消息之后,可以向数据服务器发送一次逻辑时间。数据服务器接收到目标服务端返回的逻辑时间之后,可以将其确定为上述目标校准时间戳。

通过本实施例,通过定时从GTS获取一次校准时间戳,以在DS粒度上进行时间校准,可以提高时间校准的效率,同时GTS被动触发发送校准时间戳,而无需占用较多的资源,可以减少时间校准对于GTS上资源的占用。

作为一种可选的实施例,将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳包括:

S21,通过数据服务器接收到目标服务端发送的目标业务的业务时间戳;

S22,在目标业务的业务时间戳小于目标校准时间戳的情况下,将目标业务的业务时间戳调整为目标校准时间戳。

在获取到目标校准时间戳之后,数据服务器可以接收到目标服务端返回的业务时间戳。例如,数据服务器可以接收到目标服务端发送的目标业务的业务时间戳,该业务时间戳可以是目标服务端通过用于获取业务时间戳的多条连接中的任一个发送的。

数据服务器可以比较目标校准时间戳和目标业务的业务时间戳。如果目标业务的业务时间戳小于目标校准时间戳,可以将其调整到不小于目标校准时间戳。例如,可以调整为目标校准时间戳,即,将目标校准时间戳赋值给目标业务的业务时间戳。

通过本实施例,通过将校准逻辑时间戳赋值给比校准逻辑时间小的业务时间戳,可以保证业务时间戳校准的合理性。

作为一种可选的实施例,在通过数据服务器接收到目标服务端发送的目标业务的业务时间戳之后,上述方法还包括:

S31,在目标业务的业务时间戳大于或者等于目标校准时间戳的情况下,保持目标业务的业务时间戳。

如果目标业务的业务时间戳大于或者等于目标校准时间戳,那么,上述最小活跃读时间戳不会大于目标业务的业务时间戳。在此情况下,数据服务器可以不对目标业务的业务时间戳进行处理,而是保持目标业务的业务时间戳。

通过本实施例,通过保持不小于校准逻辑时间的业务时间戳,可以简化业务时间戳校准的流程,提高业务时间戳校准的合理性。

作为一种可选的实施例,扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳包括:

S41,扫描数据服务器的活跃业务列表,得到最小活跃读时间戳,其中,活跃业务列表用于记录连接到数据服务器上的、处于活跃状态的业务端的读时间戳。

数据服务器可以遍历当前处于活跃状态的业务端连接,选择其中最小的读时间戳作为最小活跃读时间戳。例如,数据服务器上可以通过目标数据结构保存数据服务器上处于活跃状态的业务端的信息,例如,业务端的读时间戳。该目标数据结构可以但不限于为:活跃业务列表。

数据服务器可以扫描数据服务器的活跃业务列表,确定数据服务器上处于活跃状态的各个业务端的读时间戳,并从中选取出最小的读时间戳作为该数据服务器的最小活跃读时间戳。

通过本实施例,通过活跃业务列表记录连接到数据服务器上的、处于活跃状态的业务端的读时间戳,可以提高业务端扫描的便捷性。

作为一种可选的实施例,在将最小活跃读时间戳发送给目标服务端之后,上述方法还包括:

S51,通过目标服务端接收多个数据服务器中发送的多个最小活跃读时间戳,其中,多个数据服务器与多个最小活跃读时间戳一一对应;

S52,将多个最小活跃读时间戳中的最小值,确定为全局最小活跃读时间戳。

目标服务端可以与多个数据服务器连接,并分别从各个数据服务器接收其发送的最小活跃读时间戳,从而得到多个最小活跃读时间戳,多个最小活跃读时间戳与多个数据服务器一一对应。可选地,目标服务端可以周期性地(例如,每500ms)接收多个数据服务器中发送的多个最小活跃读时间戳。

目标服务端可以根据配置信息确定所需接收到的最小活跃读时间戳的数量。该配置信息可以用于指示连接到目标服务端的各个数据服务器,从而可以确定需要从哪些数据服务器接收最小活跃读时间戳。在接收到多个最小活跃读时间戳之后,目标服务端可以从中选取出其中的最小值,作为全局最小活跃读时间戳。

通过本实施例,通过从多个数据服务器获取多个最小活跃读时间戳,进而选取出其中的最小值作为全局最小活跃读时间戳,可以提高全局最小活跃读时间戳计算的准确性。

作为一种可选的实施例,在将最小活跃读时间戳发送给目标服务端之后,上述方法还包括:

S61,接收目标服务端返回的全局最小活跃读时间戳;

S62,按照全局最小活跃读时间戳删除目标数据库中的历史版本数据,其中,历史版本数据为根据全局最小活跃读时间戳确定的、对所有请求均不可见的版本数据。

数据服务端可以接收目标服务端返回的全局最小活跃读时间戳,全局最小活跃读时间戳可以用于进行冗余老版本数据的清理,即,可以根据全局最小读活跃时间戳确定数据库中需要清理的历史版本数据。对老版本数据进行删除的前提是:这个版本的数据对所有请求都不可见,即,当删除一个数据的老版本,要保证这个数据对所有请求不可见。

如果一个版本数据对所有请求不可见,那么,该版本数据的提交时间戳小于所有请求的读时间戳,即小于全局最小活跃读时间戳,并且该版本数据不是提交时间戳小于全局最小活跃读时间戳的最新版本数据。比如,小于全局最小活跃读时间戳的最大提交时间戳对应于第一版本数据,而提交时间戳小于第一版本数据的提交时间戳的版本数据(属于同一业务的业务数据,或者说,属于同一事务的事务数据)可以认为是历史版本数据。

在确定出待清理的历史版本数据之后,数据服务器可以控制数据库删除所需清理的历史版本数据。可选地,确定待清理的历史版本数据、以及删除待清理的历史数据的操作也可以是由各个数据库执行的。各个数据服务器也可以仅确定由本数据服务器所负责的业务的老版本数据,比如,本数据服务器所负责的、处于活跃状态的业务端所对应的老版本数据。

需要说明的是,清理历史版本数据的方式可以根据需要进行配置,例如,一个数据服务器可以负责一个或多个数据库中的全部或者部分历史版本数据的清理,本实施例中对此不作具体限定。

通过本实施例,根据全局最小活跃读时间戳进行历史版本数据的清理,可以提高数据库存储空间的利用效率。

下面结合可选示例对本申请实施例中的读时间戳的获取方法进行解释说明。在本示例中,目标服务端为GTS。

本示例中的读时间戳的获取方法是一种基于时间校准获取全局最小时间戳的方案,在定时计算DS最小活跃读时间戳时,先从GTS获取一个逻辑时间戳,即,correct_ts;如果后续申请逻辑时间的响应中的逻辑时间小于correct_ts,则将其赋值为correct_ts,否则响应中的逻辑时间不变。

DS上有两类任务,一类是正常的业务请求,对应于图3中可以用于获取业务时间戳的多条连接,该任务可以去获取业务时间戳,此任务可以称为获取业务时间戳的任务;一类是按照一定周期(例如,默认500ms)定时计算并上报DS最小活跃读时间戳的任务,对应于图3中获取校准时间戳和上报DS最小活跃读时间戳的连接,该任务可以称为校准任务。

如图4所示,本可选示例中的读时间戳的获取方法的流程可以包括以下步骤:

步骤S402,启动DS的校准任务,定时从GTS获取一次校准时间戳(逻辑时间戳)。

步骤S404,DS的校准任务把校准时间记录到获取业务时间戳的任务上;

步骤S406,当业务时间戳返回后,和当前的校准时间戳进行比较,如果比校准时间戳小,则赋值为校准时间戳,否则不做处理;

步骤S408,DS的校准任务在完成步骤S404之后,扫描当前业务端的连接,计算所有处于活跃状态的读时间戳的最小值;

步骤S410,DS的校准任务返回本周期内、本DS的最小活跃读时间戳;

步骤S412,GTS计算全局最小活跃读时间戳。

通过本示例,通过逻辑时间校准的方式,高效的计算全局最小活跃读时间戳,从而进行分布式数据库的冗余老版本数据删除,且不增加任何同步开销。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

根据本申请实施例的另一个方面,还提供了一种用于实施上述读时间戳的获取方法的读时间戳的获取装置。图5是根据本申请实施例的一种可选的读时间戳的获取装置的结构框图,如图5所示,该装置可以包括:

获取单元502,用于通过数据服务器从目标服务端获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端;

调整单元504,与获取单元502相连,用于将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳;

扫描单元506,与调整单元504相连,用于扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳;

发送单元508,与扫描单元506相连,用于将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳。

需要说明的是,该实施例中的获取单元502可以用于执行上述步骤S202,该实施例中的调整单元504可以用于执行上述步骤S204,该实施例中的扫描单元506可以用于执行上述步骤S206,该实施例中的发送单元508可以用于执行上述步骤S208。

通过上述模块,通过数据服务器从目标服务端获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端;将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳;扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳;将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳,解决了相关技术中重新获取逻辑时间的方式存在耗时大幅增加的问题,减少了计算耗时,提高了计算效率。

作为一种可选的实施例,获取单元502包括:

发送模块,用于通过数据服务器按照目标周期定时向目标服务端发送目标请求消息,其中,目标请求消息用于请求获取目标服务端的逻辑时间,目标周期为目标服务端计算全局最小活跃读时间戳的周期;

第一接收模块,用于通过数据服务器接收目标服务端响应目标请求消息返回的目标校准时间戳。

作为一种可选的实施例,调整单元504包括:

第二接收模块,用于通过数据服务器接收到目标服务端发送的目标业务的业务时间戳;

调整模块,用于在目标业务的业务时间戳小于目标校准时间戳的情况下,将目标业务的业务时间戳调整为目标校准时间戳。

作为一种可选的实施例,上述装置还包括:

保持单元,用于在通过数据服务器接收到目标服务端发送的目标业务的业务时间戳之后,在目标业务的业务时间戳大于或者等于目标校准时间戳的情况下,保持目标业务的业务时间戳。

作为一种可选的实施例,扫描单元506包括:

扫描模块,用于扫描数据服务器的活跃业务列表,得到最小活跃读时间戳,其中,活跃业务列表用于记录连接到数据服务器上的、处于活跃状态的业务端的读时间戳。

作为一种可选的实施例,上述装置还包括:

第一接收单元,用于在将最小活跃读时间戳发送给目标服务端之后,接收目标服务端返回的全局最小活跃读时间戳;

删除单元,用于按照全局最小活跃读时间戳删除目标数据库中的历史版本数据,其中,历史版本数据为根据全局最小活跃读时间戳确定的、对所有请求均不可见的版本数据。

作为一种可选的实施例,上述装置还包括:

第二接收单元,用于在将最小活跃读时间戳发送给目标服务端之后,通过目标服务端接收多个数据服务器中发送的多个最小活跃读时间戳,其中,多个数据服务器与多个最小活跃读时间戳一一对应;

确定单元,用于将多个最小活跃读时间戳中的最小值,确定为全局最小活跃读时间戳。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

根据本申请实施例的又一个方面,还提供了一种用于实施上述读时间戳的获取方法的电子设备,该电子设备可以是服务器、终端、或者其组合。

图6是根据本申请实施例的一种可选的电子设备的结构框图,如图6所示,包括处理器602、通信接口604、存储器606和通信总线608,其中,处理器602、通信接口604和存储器606通过通信总线608完成相互间的通信,其中,

存储器606,用于存储计算机程序;

处理器602,用于执行存储器606上所存放的计算机程序时,实现如下步骤:

S1,通过数据服务器从目标服务端获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端;

S2,将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳;

S3,扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳;

S4,将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳。

可选地,在本实施例中,上述的通信总线可以是PCI (Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA (Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。

作为一种示例,存储器606中可以但不限于包括上述读时间戳的获取装置中的获取单元502、调整单元504、扫描单元506以及发送单元508。此外,还可以包括但不限于上述读时间戳的获取装置中的其他模块单元,本示例中不再赘述。

上述处理器可以是通用处理器,可以包含但不限于:CPU (Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP (DigitalSignal Processing,数字信号处理器)、ASIC (Application Specific IntegratedCircuit,专用集成电路)、FPGA (Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图6所示的结构仅为示意,实施上述读时间戳的获取方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图6其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示的不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。

根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项读时间戳的获取方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

S1,通过数据服务器从目标服务端获取目标校准时间戳,其中,目标服务端为用于提供全局事务服务的服务端;

S2,将数据服务器在获取到目标校准时间戳之后接收到的业务时间戳调整为不小于目标校准时间戳;

S3,扫描数据服务器上处于活跃状态的业务端连接,得到数据服务器的最小活跃读时间戳;

S4,将最小活跃读时间戳发送给目标服务端,其中,最小活跃读时间戳用于目标服务端计算全局最小活跃读时间戳。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 读时间戳的获取方法和装置、电子设备和存储介质
  • 一种时间戳获取方法、装置、电子设备及存储介质
技术分类

06120112981309