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

事务请求的处理方法、装置和电子设备

文献发布时间:2023-06-19 12:14:58


事务请求的处理方法、装置和电子设备

技术领域

本发明涉及分布式系统技术领域,尤其是涉及一种事务请求的处理方法、装置和电子设备。

背景技术

在分布式数据库系统中,通常需要对待处理的事务赋予全局事务ID,以实现全局一致性读;对于两阶段的分布式数据库系统,获取全局事务ID的方式通常是即需即取。在每个阶段,针对客户端发出的每个事务请求,均需要该客户端与元数据节点进行网络交互,以获取该事务请求的全局事务ID;针对多个客户端的事务请求,需要经过多次网络交互才可以获得每个事务请求的全局事务ID;当多个客户端向服务端发送大量的事务请求时,会对网络和服务端的元数据节点造成较大的流量和计算压力,导致服务端响应客户端请求的速度较慢,分布式事务的性能较低。

发明内容

有鉴于此,本发明的目的在于提供一种事务请求的处理方法、装置和电子设备,以提高服务端响应客户端请求的速度,进而提高分布式事务的性能。

本发明实施例提供了一种事务请求的处理方法,方法应用于服务器;服务器中预设有可并发执行的多个工作线程;方法包括:获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中,事务请求组合包括第一指定时间周期内接收到的至少一个事务请求;通过第一工作线程,向事务处理节点发送事务处理请求,所述事务处理请求用于处理事务请求组合中的事务请求。

进一步的,服务器中还预设有监听线程;获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程的步骤,包括:通过监听线程,每经过第一指定时间周期的时长,循环执行下述操作:获取第一指定时间周期内接收到的事务请求,将获取到的事务请求确定为事务请求组合;将多个工作线程中,处于空闲状态的一个工作线程确定为第一工作线程,将事务请求组合发送至第一工作线程。

进一步的,获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程的步骤之前,方法还包括:根据第一指定时间周期和初始网络延时时间,确定多个工作线程的初始线程数量。

进一步的,根据第一指定时间周期和初始网络延时时间,确定多个工作线程的初始线程数量的步骤,包括:计算初始网络延时时间与第一指定时间周期的比值,根据比值确定初始线程数;其中,第一指定时间周期小于初始网络延时时间;将初始线程数确定为多个工作线程的初始线程数量。

进一步的,根据比值确定初始线程数的步骤,包括:如果比值为整数,将比值确定为初始线程数;如果比值包括不为零的小数,将比值的整数加一,得到初始线程数。

进一步的,通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于处理事务请求组合中的事务请求的步骤之后,方法还包括:基于当前网络延时时间和正处于处理状态的事务请求的数量,更新多个工作线程的初始线程数量。

进一步的,基于当前网络延时时间和正处于处理状态的事务请求的数量,更新多个工作线程的初始线程数量的步骤,包括:在预设的定时时长内,每经过第二指定时间周期的时长,循环执行下述操作:获取当前网络延时时间和当前正处于处理状态的事务请求的数量;计算当前网络延时时间与第一指定时间周期的比值,根据比值确定目标线程数;比较目标线程数与多个工作线程的初始线程数量大小,得到比较结果;当达到定时时长时,根据比较结果,更新多个工作线程的初始线程数量。

进一步的,根据比较结果,更新多个工作线程的初始线程数量的步骤,包括:如果比较结果均指示目标线程数大于多个工作线程的初始线程数量,且当前正在处理的事务请求的数量满足预设数量,将多个工作线程的初始线程数量增加至目标线程数;如果比较结果均指示目标线程数小于多个工作线程的初始线程数量,将多个工作线程的初始线程数量减少至目标线程数。

进一步的,将多个工作线程的初始线程数量减少至目标线程数的步骤,包括:将多个工作线程中当前工作状态为空闲的工作线程删除,以使更新后的多个工作线程的初始线程数量与目标线程数一致。

进一步的,通过第一工作线程,向事务处理节点发送事务处理请求,事务处理请求用于处理事务请求组合中的事务请求的步骤,包括:通过第一工作线程,采用异步处理的方式将事务请求组合中的至少一个事务请求,发送至事务处理节点,生成每个事务请求对应的响应消息;将每个响应消息返回至响应消息对应的客户端。

进一步的,方法还包括:基于第三指定时间周期,定时获取当前工作线程的线程数量;如果当前工作线程的线程数量大于指定线程数量,将当前工作线程的线程数量减少至指定线程数量;其中,指定线程数量根据服务器的性能预先设置。

本发明实施例还提供了一种事务请求的处理装置,装置设置于服务器;服务器中预设有可并发执行的多个工作线程;装置包括:获取模块,用于获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中,事务请求组合包括指定时间周期内接收到的至少一个事务请求;处理模块,用于通过第一工作线程,向事务处理节点发送事务处理请求,所述事务处理请求用于处理事务请求组合中的事务请求。

本发明实施例还提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现第一方面任一项的事务请求的处理方法。

本发明实施例还提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现第一方面任一项的事务请求的处理方法。

本发明实施例带来了以下有益效果:

本发明提供了一种事务请求的处理方法、装置和电子设备,首先获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中的事务请求组合包括第一指定时间周期内接收到的至少一个事务请求;然后通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于处理事务请求组合中的事务请求。该方式中,事务请求组合可以包括一定时间周期内接收到的所有事务请求,从多个可并发执行的工作线程中为该事务请求组合分配工作线程,进而请求事务处理节点处理事务请求组合中的事务请求。这种批量处理事务请求的方式,可以降低事务处理节点的数据交互量,进而降低网络和节点的流量和计算压力;另外,多个工作线程并发执行,可以降低事务请求处理的延迟,从而提高请求事务处理的效率。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为本发明实施例提供的一种事务请求的处理方法的应用场景示意图;

图2为本发明实施例提供的一种事务请求的处理方法的流程图;

图3为本发明实施例提供的一种具体的事务请求的处理方法的架构图;

图4为本发明实施例提供的一种事务请求的处理装置的结构示意图;

图5为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前在分布式的环境下设计和部署系统时,通常有三个核心的需求,也可以称为CAP定理,即Consistency,Availability和Partition Tolerance;其中,Consistency表示一致性,所有数据节点上的数据具有一致性和正确性;Availability表示可用性,保证每个请求不管成功或者失败都有响应;Partition Tolerance表示分区容忍性,系统中任意信息的丢失或失败不会影响系统继续运作。其次,数据库事务的隔离级别有四种,分别为未提交读、提交读、可重复读、序列化;其中,未提交读表示事务可以读到其他事务未提交的数据;提交读表示在事务处理期间如果其他事务修改了相应的表,那么同一个事务的多个查询语句可能会返回不同的结果;可重复读表示保证事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻一致,不过也可能出现幻影数据,即相同的事务操作,在前后两个时间段读取同一数据结果不同;序列化表示要求所有事务串行执行,不能并发执行。

另外,分布式事务包括两阶段提交,第一阶段为请求阶段(或称prepare阶段),即在请求阶段,协调者将通知事务参与者准备提交或取消事务,然后进入表决过程。在表决过程中,参与者将告知协调者自己的决策:同意(事务参与者本地作业执行成功)或取消(本地作业执行故障)。第二阶段(或称commit阶段),在该阶段,协调者将基于第一个阶段的投票结果进行决策(提交或取消)。当且仅当所有的参与者同意提交事务协调者才通知所有的参与者提交事务,否则协调者将通知所有的参与者取消事务。参与者在接收到协调者发来的消息后将执行响应的操作。

在分布式数据库系统中,通常需要满足一致性和分区容忍性,事务的隔离级别通常是提交读或者可重复读,并且事务是两阶段提交;且在分布式数据库系统中,通常需要对待处理的事务赋予全局事务ID,以实现全局一致性读;对于两阶段的分布式数据库系统,获取全局事务ID的方式通常是即需即取。第一,开启事务;第二,获取全局事务ID(定义为start_ts),并执行SQL(Structured Quer

基于此,本发明实施例提供的一种事务请求的处理方法、装置和电子设备,该技术可以应用于具有分布式数据库系统的服务器等电子设备。

为便于对本实施例进行理解,对本发明实施例所公开的一种事务请求的处理方法进行详细介绍,首先参见图1所示的事务请求的处理方法的应用场景示意图,图中的第一电子设备可以是客户端设备,通常可以包括一个或多个,用于发送事务请求;第二电子设备可以是设置有线程的服务器,用于接收或获取客户端设备发送的事务请求;第三电子设备可以是设置于数据库的元数据节点,用于处理服务器发送的事务请求,并将每个事务请求对应的响应消息发送至第二电子设备,再由第二电子设备将响应消息发送至对应的客户端设备。

如图2所示的一种事务请求的处理方法的流程图,该方法应用于服务器;该服务器中预设有可并发执行的多个工作线程;该方法包括如下步骤:

步骤S202,获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中,事务请求组合包括第一指定时间周期内接收到的至少一个事务请求;

上述事务请求组合通常包括多个客户端发送的多个事务请求;上述多个工作线程可以并发执行,即可以同时对接收到的事务请求进行处理;上述第一工作线程通常是处于空闲状态的一个工作线程。实际实现时,可以每经过第一指定时间周期的时长,批量获取该时间周期内接收到的一个或多个事务请求;每获取到事务请求组合后,可以从多个工作线程中,选择一个空闲的工作线程,作为第一工作线程。

举例说明,当多个工作线程为4个,上述第一指定时间周期为0.5毫秒,每经过0.5毫秒则批量获取事务请求,在第一次获取到事务请求组合后,由于多个工作线程都是空闲状态,则可以直接在多个工作线程中选择一个工作线程作为第一个第一工作线程;当再次经过0.5毫秒后,由于服务器的网络会有延时,假如延时时间为2毫秒,此时第一个第一工作线程处理事务请求的时间经过了0.5毫秒,所以第一个第一工作线程还处于处理事务请求的状态,此时在第二次获取到事务请求组合后可以在剩余的三个工作线程中选择第二个第一工作线程;当再次经过0.5毫秒后,此时第一个第一工作线程处理事务请求的时间经过了1毫秒,第二个第一工作线程处理事务请求的时间经过了0.5毫秒,所以第一个第一工作线程以及第二个第一工作线程都还处于处理事务请求的状态,所以在第三次获取到事务请求组合后还需要从剩余的两个工作线程中选择第三个第一工作线程。当再次经过0.5毫秒后,此时第一个第一工作线程处理事务请求的时间经过了1.5毫秒,第二个第一工作线程处理事务请求的时间经过了1毫秒,第三个第一工作线程处理事务请求的时间经过了0.5毫秒,此时第一个第一工作线程、第二个第一工作线程以及第三个第一工作线程都还处于处理事务请求的状态,此时在第三次获取到事务请求组合后还需要从剩余的一个工作线程中选择第四个第一工作线程。当再次经过0.5毫秒后,此时第一个第一工作线程处理事务请求的时间经过了2毫秒,正好处理完当前的事务请求,处于空闲状态,此时在第四次获取到事务请求组合后可以直接将该工作线程作为下一个第一工作线程。

步骤S204,通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于处理事务请求组合中的事务请求。

上述事务处理节点可以是元数据节点,其中设置有全局事务的唯一标识;可以将每个事务请求分配对应的全局事务ID(也可以称为是时间戳),并通过第一工作线程将事务请求对应的全局事务ID返回至客户端。

例如上述步骤S202的例子,如果预先设置的多个工作线程为4个时,客户端的等待响应时间通常只有网络延时的2毫秒或者2.5毫秒;可以理解,如果上述多个工作线程为3个时,则客户端的等待时间通常为2-3毫秒;如果上述多个工作线程为2个时,则客户端的等待时间通常为2-3.5毫秒;如果上述多个工作线程为1个时,则客户端的等待时间通常为2-4毫秒。上述多个工作线程由于是并发执行,所以当多个工作线程越多时,客户端等待的时间则越少。

本发明实施例提供了一种事务请求的处理方法,首先获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中的事务请求组合包括第一指定时间周期内接收到的至少一个事务请求;然后通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于请求处理事务组合中的事务请求。该方式中,事务请求组合可以包括一定时间周期内接收到的所有事务请求,从多个可并发执行的工作线程中为该事务请求组合分配工作线程,进而请求事务处理节点处理事务请求组合中的事务请求。这种批量处理事务请求的方式,可以降低事务处理节点的数据交互量,进而降低网络和节点的流量和计算压力;另外,多个工作线程并发执行,可以降低事务请求处理的延迟,从而提高请求事务处理的效率。

本发明实施例还提供了另一种事务请求的处理方法,该方法在上述实施例的基础上实现,本实施例重点描述获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程的步骤的具体实现过程,以及该步骤之前的步骤的具体实现过程,该方法包括如下步骤:

步骤301,根据第一指定时间周期和初始网络延时时间,确定多个工作线程的初始线程数量;

上述第一指定时间周期可以根据实际需要进行设置,比如,0.5毫秒、1毫秒等;上述初始网络延迟时间通常是指一个事务请求从用户的终端设备发送到网站服务器,然后再立即从网站服务器返回用户终端设备的来回时间。当然在系统运行过程中,可能也会因为网络的好坏、请求量的大小等原因,改变初始网络延迟时间。比如,初始网络延时时间为2毫秒、3毫秒等。

上述步骤301,一种可能的实施方式:

计算初始网络延时时间与第一指定时间周期的比值,根据比值确定初始线程数;其中,第一指定时间周期小于初始网络延时时间;将初始线程数确定为多个工作线程的初始线程数量。

具体的,如果比值为整数,将比值确定为初始线程数;如果比值包括不为零的小数,将比值的整数加一,得到初始线程数;比如,初始网络延时时间为2毫秒,第一指定时间周期为0.5毫秒,基于第一指定时间周期,定时获取事务请求组合,可以计算2ms/0.5ms=4,即初始线程数为4;再如初始网络延时时间为2.7毫秒,第一指定时间周期为0.5毫秒,基于第一指定时间周期,定时获取事务请求组合,可以计算2.7ms/0.5ms=5.4,对5.4进行向上取整,得到初始线程数为6。

其中,上述服务器中还预设有监听线程;通过该监听线程,每经过第一指定时间周期的时长,循环执行下述步骤302和步骤303的操作:

步骤302,获取第一指定时间周期内接收到的事务请求,将获取到的事务请求确定为事务请求组合;

上述监听线程也可以表示为listener线程;该监听线程具有批处理的功能,即定时批量获取事务请求的功能。具体的,通过监听线程获取第一指定时间周期内接收到的事务请求,将获取到的事务请求确定为事务请求组合;其中接收到的事务请求通常包括多个,可以是多个客户端发送的。相比于按照顺序单独获取每个事务请求的方式,上述批处理的方式能够减少网络交互的次数,降低网络延时,提高分布式事务的性能。

步骤303,将多个工作线程中,处于空闲状态的一个工作线程确定为第一工作线程,将事务请求组合发送至第一工作线程;

由于上述多个工作线程为并发执行,因此在监听线程接收到事务请求组合后,首先需要判断多个工作线程中处于空闲状态的工作线程,如果存在处于空闲状态的工作线程,可以选择一个确定为第一工作线程,将事务请求组合发送至第一工作线程。需要说明的是,相关技术中,如果多个工作线程中不存在处于空闲状态的工作线程,则需要等待,直到出现空闲状态的工作线程,才可以将事务请求组合发送至第一工作线程。因此,上述设置多个工作线程的线程数量的步骤,可以避免出现现有技术中等待的过程,通常在接收到事务请求组合后,至少会有一个空闲状态的工作线程。

步骤304,通过第一工作线程,向事务处理节点请求处理事务请求组合中的事务请求。

上述方式中,根据第一指定时间周期和初始网络延时时间,确定多个工作线程的初始线程数量,其中,确定的多个工作线程的初始线程数量,可以满足在监听线程在获取到事务请求组合后,多个工作线程中始终存处于空闲状态的一个工作线程,避免了处理事务请求需要等待的问题,能够对接收到的事务请求进行及时处理,在保证一致性读功能的前提下,降低了网络延时,提高了服务端响应客户端事务请求的速度,从而降低了对分布式系统性能的侵害。

本发明实施例还提供了另一种事务请求的处理方法,该方法在上述实施例的基础上实现,本实施例主要描述通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于处理事务请求组合中的事务请求的步骤的具体实现过程,以及该步骤之后的步骤的具体实现过程,该方法包括如下步骤:

步骤401,获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中,事务请求组合包括第一指定时间周期内接收到的至少一个事务请求;

步骤402,通过第一工作线程,采用异步处理的方式将事务请求组合中的至少一个事务请求,发送至事务处理节点,生成每个事务请求对应的响应消息;将每个响应消息返回至响应消息对应的客户端。

具体的,第一工作线程接收到事务请求组合后,采用异步处理的方式,首先将事务请求组合中的一个事务请求发送至事务处理节点,在事务处理节点返回响应消息之前,并发的发送事务请求组合中的下一个事务请求至事务处理节点,以使事务处理节点对每个事务请求分配对应的响应消息。最后将每个响应消息先返回至对应的工作线程,然后由该工作线程将响应消息返回至对应的客户端。

由于服务器或者系统在运行时,会受网络、事务请求量等原因的影响,初始的网络延时时间可能会发生变化,比如,初始网络延时时间减少或者增加,此时预先设置的多个工作线程的初始线程数量可能会不适合当前的工作环境,需要对个工作线程的初始线程数量进行更新,具有包括:

步骤403,基于当前网络延时时间和正处于处理状态的事务请求的数量,更新多个工作线程的初始线程数量。

具体的,当当前网络延时时间和正处于处理状态的事务请求的数量都增加时,预先设置的多个工作线程的初始线程数量较少,在监听线程获取到事务请求组合时,不存在空闲状态的工作线程,此时需要等待,会降低服务端响应客户端事务请求的速度,此时可以根据当前网络延时时间增加多个工作线程的线程数量。另外,当当前网络延时时间减少且正处于处理状态的事务请求的数量减少时,可能会存在较多空闲状态的工作线程,此时可以根据网络延时时间减少多个工作线程的线程数量;该方式可以及时释放系统资源和满足业务的需求。

上述步骤403,一种可能的实时方式:

在预设的定时时长内,每经过第二指定时间周期的时长,循环执行下述操作:

(1)获取当前网络延时时间和当前正处于处理状态的事务请求的数量;

(2)计算当前网络延时时间与第一指定时间周期的比值,根据比值确定目标线程数;

(3)比较目标线程数与多个工作线程的初始线程数量大小,得到比较结果;

上述预设的定时时间可以是30秒、1分钟、或者2分钟等;具体可以根据业务需求进行设置,本实施例不做限定。上述第二指定时间周期通常大于第一指定时间周期,比如,1秒、2秒等,同样的,具体可以根据业务需求进行设置,本实施例不做限定。

实际实现时,在服务器正在运行的过程中,没经过第二指定时间周期的时长,获取当前网络延时时间和当前正处于处理状态的事务请求的数量;其中的当前正处于处理状态的事务请求的数量,即当前每个线程正在处理的事务请求的数量;然后计算当前网络延时时间与第一指定时间周期的比值,对比值进行上取整,得到目标线程数;与上述步骤301的实施方式相同,再次不做赘述。最后,比较目标线程数与多个工作线程的初始线程数量大小,得到比较结果;该比较结果通常包括目标线程数大于多个工作线程的初始线程数量、目标线程数小于多个工作线程的初始线程数量、以及目标线程数等于多个工作线程的初始线程数量。

(4)当达到定时时长时,根据比较结果,更新多个工作线程的初始线程数量。

在上述预设的定时时长内,通常会得到多个比较结果,当达到定时时长时可以根据每个比较结果,增加或减少多个工作线程的初始线程数量。

上述步骤(4)中当达到定时时长时,根据比较结果,更新多个工作线程的初始线程数量一种可能的实时方式:

如果比较结果均指示目标线程数大于多个工作线程的初始线程数量,且当前正在处理的事务请求的数量满足预设数量,将多个工作线程的初始线程数量增加至目标线程数;

如果比较结果均指示目标线程数小于多个工作线程的初始线程数量,将多个工作线程的初始线程数量减少至目标线程数。

上述预设数量可以根据业务需要进行设置,比如为0、1、或者其他具体的数量。具体的,当达到定时时长时,如果每个比较结果,都连续指示目标线程数大于多个工作线程的初始线程数量,且当前正在处理的事务请求的数量不为零,则可以增加工作线程的数量,以使多个工作线程的线程数量与目标线程数相同。另外,如果每个比较结果,都连续指示目标线程数大于多个工作线程的初始线程数量,且当前正在处理的事务请求的数量为零,则说明当前只是网络阻塞,并没有事务请求,则不用更新多个工作线程的初始线程数量。

当达到定时时长时,如果每个比较结果,都连续指示目标线程数小于多个工作线程的初始线程数量,则可以减少工作线程的数量,以使多个工作线程的线程数量与目标线程数相同,以及时释放系统资源和满足业务的需求。另外,如果每个比较结果,都连续指示目标线程数等于多个工作线程的初始线程数量,则不更新多个工作线程的线程数量。

上述将多个工作线程的初始线程数量减少至目标线程数的步骤,包括:将多个工作线程中当前工作状态为空闲的工作线程删除,以使更新后的多个工作线程的初始线程数量与目标线程数一致。

当减少多个工作线程中线程数量时,由于部分工作线程处于工作状态,则可以选择当前工作状态为空闲的工作线程进行删除,以使更新后的多个工作线程的初始线程数量与目标线程数一致。

上述方式中,无论网络延时时间是多少,都可以适应性的调整工作线程的线程数量,以满足应用。通过更新并发发送消息的工作线程数量,可以有效的降低并发事务请求延迟,同时在高延迟高吞吐网络中可有效提升性能。该动态调整策略主要是及时释放系统资源和满足业务的需求。另外,该方式在减少网络交互延时,提高了分布式系统的处理事务的性能,特别是对于客户端和事务处理节点网络延时很大的集群,该方案的优点更明显。

另外,上述方法还包括:基于第三指定时间周期,定时获取当前工作线程的线程数量;如果当前工作线程的线程数量大于指定线程数量,将当前工作线程的线程数量减少至指定线程数量;其中,指定线程数量根据服务器的性能预先设置。

上述第三指定时间周期可以与第二指定时间周期相同,或者大于第二指定时间周期。具体的,如果比较结果指示目标线程数等于多个工作线程的线程数量,且当前正在处理的事务请求的数量为零,则进一步获取当前工作线程的线程数量,判断当前工作线程的线程数量是否大于指定线程数量,如果大于指定线程数量,将当前工作线程的线程数量减少至指定线程数量,以满足应用,该方式考虑到了服务器的实际运行能力,设置了指定线程数量,避免了当当前工作线程的线程数量超过指定线程数量时,造成的网络延迟反应速度慢等问题。

本发明实施例提供了一种具体的事务请求处理方法,如图3所示,请求消息对应前述事务请求,组1和组2对应前述的事务请求组合;时间戳请求也对应前述的事务请求;时间戳响应对应前述的响应消息。客户端可以理解为两阶段中的协调者;listener线程对应前述监听线程,主要是实现batch功能,也就是定时批量获取请求;worker线程1和worker线程2对应前述的多个工作线程,主要是实现并发执行的功能。GTS节点是元数据中心。对应前述事务处理节点,即分配全局时间。具体的,listener线程定时获取请求消息,将同一时刻获取的请求消息组成一组,如图中的组1和组2,当获取到一批次请求后,发送至worker线程,具体的可以将组1发送至worker线程1,将组2发送至worker线程2;以通过每个worker线程与GTS节点进行异步交互,得到时间戳响应,最后将每个请求消息对应得响应消息发送至对应的客户端。

对应上述的方法实施例,本发明实施例还提供了一种事务请求的处理装置,该装置设置于服务器;服务器中预设有可并发执行的多个工作线程;如图4所示,该装置包括:

获取模块41,用于获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中,事务请求组合包括指定时间周期内接收到的至少一个事务请求;

处理模块42,用于通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于处理事务请求组合中的事务请求。

本发明实施例提供了一种事务请求的处理装置,首先获取事务请求组合,从多个工作线程中,为事务请求组合分配第一工作线程;其中的事务请求组合包括第一指定时间周期内接收到的至少一个事务请求;然后通过第一工作线程,向事务处理节点发送事务处理请求,该事务处理请求用于处理事务请求组合中的事务请求。该方式中,在到达第一指定时间周期时刻,批量获取至少一个事务请求,通过可以并发执行的多个工作线程,处理事务请求组合中的每个事务请求,在保证一致性读功能的前提下,降低了事务请求的网络延时,提高了服务端响应客户端事务请求的速度,进而提高了分布式事务的性能。

进一步的,上述服务器中还预设有监听线程;上述获取模块还用于:通过监听线程,每经过第一指定时间周期的时长,循环执行下述操作:获取第一指定时间周期内接收到的事务请求,将获取到的事务请求确定为事务请求组合;将多个工作线程中,处于空闲状态的一个工作线程确定为第一工作线程,将事务请求组合发送至第一工作线程。

进一步的,上述装置还包括线程数量确定模块,用于根据第一指定时间周期和初始网络延时时间,确定多个工作线程的初始线程数量。

进一步的,上述线程数量确定模块还用于:计算初始网络延时时间与第一指定时间周期的比值,根据比值确定初始线程数;其中,第一指定时间周期小于初始网络延时时间;将初始线程数确定为多个工作线程的初始线程数量。

进一步的,上述线程数量确定模块还用于:如果上述比值为整数,将比值确定为初始线程数;如果上述比值包括不为零的小数,将比值的整数加一,得到初始线程数。

进一步的,上述装置还包括线程数量更新模块,用于基于当前网络延时时间和正处于处理状态的事务请求的数量,更新多个工作线程的初始线程数量。

进一步的,上述线程数量更新模块还用于:在预设的定时时长内,每经过第二指定时间周期的时长,循环执行下述操作:获取当前网络延时时间和当前正处于处理状态的事务请求的数量;计算当前网络延时时间与第一指定时间周期的比值,根据比值确定目标线程数;比较目标线程数与多个工作线程的初始线程数量大小,得到比较结果;当达到定时时长时,根据比较结果,更新多个工作线程的初始线程数量。

进一步的,上述线程数量更新模块还用于:如果比较结果均指示目标线程数大于多个工作线程的初始线程数量,且当前正在处理的事务请求的数量满足预设数量,将多个工作线程的初始线程数量增加至目标线程数;如果比较结果均指示目标线程数小于多个工作线程的初始线程数量,将多个工作线程的初始线程数量减少至目标线程数。

进一步的,上述线程数量更新模块还用于:将多个工作线程中当前工作状态为空闲的工作线程删除,以使更新后的多个工作线程的初始线程数量与目标线程数一致。

进一步的,上述处理模块还用于:通过第一工作线程,采用异步处理的方式将事务请求组合中的至少一个事务请求,发送至事务处理节点,生成每个事务请求对应的响应消息;将每个响应消息返回至响应消息对应的客户端。

进一步的,上述装置还用于:基于第三指定时间周期,定时获取当前工作线程的线程数量;如果当前工作线程的线程数量大于指定线程数量,将当前工作线程的线程数量减少至指定线程数量;其中,指定线程数量根据服务器的性能预先设置。

本发明实施例提供的事务请求的处理装置,与上述实施例提供的事务请求的处理方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述事务请求的处理方法。

参见图5所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述事务请求的处理方法。

进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。

其中,存储器101可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。

本发明实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述事务请求的处理方法。

本发明实施例所提供的事务请求的处理方法、装置以及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

相关技术
  • 事务请求的处理方法、装置和电子设备
  • 事务请求并行处理方法、装置、设备和介质
技术分类

06120113228979