具体实施方式
现在将参考各实施例讨论本文描述的主题。应当理解的是,讨论这些实施例仅是为了使得本领域技术人员能够更好地理解并且实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离权利要求书的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个实施例可以根据需要,省略、替换或者添加各种过程或组件。
在很多领域的网络系统中,都会有大量设备参与业务执行,那么确保各个设备之间的时间同步和时间精确性是非常重要的。
例如,由于网络延迟、设备硬件工艺等各种原因,设备的本地时间可能会逐渐产生偏差,从而导致各个设备的本地时间是不同步的,这可能会影响正常的业务执行。在这种情况下,需要对设备的本地时间进行同步。
再例如,在一些高并发场景(比如交易场景)中,每次业务执行都需要具有唯一的时间,以便确认与业务相关的唯一标识(Identification,ID)。这样,就需要该时间是高精度的。
无论是进行时间同步还是确认高精度时间,都需要各个设备不间断地从服务器获取相应的时间信息。然而,大量的时间请求可能会在服务器处造成严重的处理排队现象,导致服务器响应缓慢,严重时可能影响各个设备的正常运行。
针对上述问题,本说明书的实施例提供了用于事务处理的技术方案。例如,在服务器处,可以采用RDMA技术,使得关于时间的请求消息和响应消息不经过服务器中的内核网络协议栈,从而避开对内核网络协议栈的竞争,这样能够显著加速对这些消息的处理过程,极大地提高服务器响应速度,由此使得客户端设备高效地完成相应的事务处理。
在本文中,参与业务执行的设备可以被称为客户端设备。服务器可以是能够提供标准时间信息的设备。例如,服务器可以从全球定位系统(Global Positioning System,GPS)卫星获取标准时间信息。
此外,在本文中,内核网络协议栈可以是指传输控制协议/网际协议(Transmission Control Protocol/Internet Protocal,TCP/IP)协议栈,其可以由操作系统内核中的多个函数来实现。
下面将结合具体实施例来描述本说明书的技术方案。
图1是根据一个实施例的用于事务处理的方法的示意性流程图。例如,图1的方法可以由服务器执行。
如图1所示,在步骤102中,可以利用服务器网卡从客户端设备接收请求消息。请求消息可以用于请求服务器时间信息。
在步骤104中,可以基于请求消息来生成响应消息。响应消息可以包括服务器时间信息。
在步骤106中,可以利用服务器网卡向客户端设备发送响应消息,以便客户端设备基于服务器时间信息进行事务处理。
此处,服务器网卡可以实现RDMA技术,使得请求消息和响应消息不经过服务器中的内核网络协议栈。
可见,在该技术方案中,关于时间的请求消息和响应消息不经过服务器中的内核网络协议栈,从而能够避开对内核网络协议栈的竞争,这样能够显著加速对这些消息的处理过程,极大地提高服务器响应速度,由此使得客户端设备高效地完成相应的事务处理。
在一个实施例中,在步骤104中,可以在服务器的上层应用处,基于请求消息来生成响应消息。
例如,可以利用服务器网卡从客户端设备接收请求消息。然后,服务器网卡可以将请求消息直接传递给服务器的上层应用,而不经过服务器中的内核网络协议栈。上层应用可以基于请求消息来生成响应消息,然后将响应消息直接传递给服务器网卡,而不经过内核网络协议栈。
这样,由于请求消息和响应消息是在上层应用和服务器网卡之间直接传递的,而无需经过内核网络协议栈,所以能够显著提高服务器响应速度,有效地减轻服务器侧的处理排队现象,从而能够提高服务质量。
例如,在该实施例中,服务器网卡可以是RDMA网卡或能够实现RDMA技术的智能网卡(Smart Network Interface Card,Smart NIC)。当然,服务器网卡还可以是能够实现RDMA技术的其它类型的网卡,本说明书对此不作限定。
在一个实施例中,服务器网卡可以具有可编程处理功能。例如,服务器网卡可以是智能网卡,其可以具备可编程功能。比如,智能网卡可以通过现场可编程门阵列(Field-Programmable Gate Array,FPGA)来实现可编程功能,从而协助服务器的处理器来执行处理功能。当然,在本说明书的技术方案中,服务器网卡还可以是以其它方式实现的具有可编程处理功能的网卡,本说明书对此不作限定。
在这种情况下,在步骤104中,可以在服务器网卡处,基于请求消息来生成响应消息。
例如,服务器网卡可以从客户端设备接收请求消息,然后服务器网卡基于请求消息来生成响应消息,之后服务器网卡可以直接向客户端设备发送响应消息。
在该实施例中,将消息处理过程卸载到服务器网卡上,例如可以直接使用服务器网卡的硬件资源来对消息进行处理,这样能够进一步提高服务器响应速度,减轻服务器侧的处理排队现象,同时能够极大地减少服务器的处理器资源消耗。
在本说明书中,客户端设备进行的事务处理可以与时间相关联的各种事务处理,比如时间同步或者业务执行时间确认。
例如,利用服务器时间信息,客户端设备可以进行时间同步。比如,客户端设备可以采用类似于网络时间协议(Network Time Protocol,NTP)的方式来进行时间同步。
那么,在一个实施例中,服务器时间信息可以包括服务器接收到请求消息的时间和发送响应消息的时间。这样,客户端设备可以基于发送请求消息的时间和接收到响应消息的时间、以及上述服务器时间信息,来进行时间同步。
例如,请求消息和响应消息可以都是NTP报文。进一步地,假设客户端发送NTP报文的时间是T1,服务器接收到该NTP报文的时间是T2,服务器发送该NTP报文的时间是T3,并且客户端设备接收到该NTP报文的时间是T4。这样,客户端设备可以计算NTP报文的往返时延=(T4-T1)-(T3-T2),进而计算客户端设备相对于服务器的时间偏差=((T2-T1)+(T3-T4))/2。然后,基于时间偏差,客户端设备可以进行时间同步。
可见,通过上述技术方案,能够极大地提高服务器响应速度,从而使得客户端设备能够高效地完成时间同步。
另外,如上所述,在一些高并发场景中,客户端设备可能需要高精度时间信息来确认业务执行时间。例如,在分布式集群数据库或其它交易应用中,每次业务执行都需要确认唯一的高精度时间,比如每笔交易的执行时间,以便进一步确认每笔交易的唯一ID。在这种场景下,如果每秒业务量达到某个数量级(例如,十万的数量级),则会对服务器造成严重性能瓶颈。
而在本说明书的实施例中,由于能够加速服务器对消息的处理过程,所以能够提高业务执行时间的确认效率,这样能够极大地提高业务ID唯一性的确认效率,从而能够缩短数据库的日志刷盘等待时间。此外,也能够极大地降低时间相关开销。
例如,在一个实施例中,上述服务器时间信息可以包括服务器的当前时间,使得客户端设备可以基于服务器的当前时间来确认业务执行时间。
在一个实施例中,客户端设备也可以包括客户端网卡。客户端网卡可以实现RDMA技术,使得请求消息和响应消息不经过客户端设备中的内核网络协议栈。例如,客户端网卡可以是RDMA网卡或智能网卡。
可见,在该实施例中,由于请求消息和响应消息不经过客户端设备中的内核网络协议栈,所以能够极大地提高客户端设备处的事务处理速度。
在一个实施例中,客户端设备可以在客户端设备的上层应用处进行事务处理。由于请求消息和响应消息能够在客户端网卡与上层应用之间直接传递,而不经过内核网络协议栈,因此能够加快上层应用处的事务处理速度。在该实施例中,客户端网卡可以是RDMA网卡、智能网卡或者实现RDMA技术的其它类型的网卡。
在一个实施例中,客户端网卡可以具有可编程处理功能,使得客户端设备可以在客户端网卡处进行事务处理。例如,客户端网卡可以是智能网卡。比如,客户端网卡可以通过FPGA来实现可编程功能,从而协助客户端设备的处理器来执行处理功能。
可见,在该实施例中,可以将事务处理过程卸载到客户端网卡上,能够进一步提高客户端设备处的事务处理速度,而且能够减少客户端设备的处理器资源消耗。
图2是根据一个实施例的用于事务处理的方法的示意性流程图。例如,图2的方法可以由客户端设备来执行。
如图2所示,在步骤202中,可以生成请求消息。请求消息可以用于请求服务器时间信息。
在步骤204中,可以利用客户端网卡向服务器发送请求消息。
在步骤206中,可以利用客户端网卡从服务器接收响应消息,其中,响应消息可以包括服务器时间信息。
在步骤208中,可以基于服务器时间信息进行事务处理。
其中,客户端网卡可以实现RDMA技术,使得请求消息和响应消息不经过客户端设备中的内核网络协议栈。
可见,在该技术方案中,由于在客户端设备侧关于时间的请求消息和响应消息无需经过客户端设备中的内核网络协议栈,这样能够避免对内核协议栈的竞争,从而能够加速消息处理过程,由此极大地提升客户端设备侧的事务处理速度。
在一个实施例中,可以在客户端设备的上层应用处进行处理过程,比如消息处理以及进一步的事务处理。
例如,在步骤202中,可以在上层应用处生成请求消息。这样,上层应用可以将请求消息直接传递给客户端网卡,然后由客户端网卡向服务器发送请求消息。
在客户端网卡从服务器接收到响应消息之后,客户端网卡可以将响应消息直接传递给上层应用。那么在步骤208中,可以在上层应用处,基于服务器时间信息来进行事务处理。
在该实施例中,由于请求消息和响应消息能够在上层应用和客户端网络之间直接传递,而不经过内核网络协议栈,所以能够极大地提高消息和事务处理速度。
例如,在该实施例中,客户端网卡可以是RDMA网卡、智能网卡或能够实现RDMA技术的其它类型的网卡。
在一个实施例中,客户端网卡可以具有可编程处理功能。例如,客户端网卡可以是智能网卡,其可以通过FPGA来实现可编程功能,从而协助客户端设备的处理器来执行处理功能。当然,客户端网卡还可以是以其它方式实现的具有可编程处理功能的网卡,本说明书对此不作限定。
这样,可以将处理过程卸载到客户端网卡上。例如,在步骤202中,可以在客户端网卡处生成请求消息。在步骤208中,可以在客户端网卡处,基于服务器时间信息来进行事务处理。
例如,客户端网卡可以生成请求消息,然后直接向服务器发送请求消息。在客户端网卡从服务器接收到响应消息之后,可以基于响应消息中的服务器时间信息进行事务处理。在这种情况下,客户端设备的上层应用可以向客户端网卡发送关于生成请求消息的指令。
在该实施例中,可以将消息处理和事务处理卸载到客户端网卡上,从而能够进一步提升客户端设备的处理速度,而且能够减少客户端设备的处理器资源消耗。
关于客户端设备处的事务处理可以各种与时间相关的事务处理,例如,其可以包括时间同步或者业务执行时间确认。
在一个实施例中,客户端设备可以采用类似于NTP的方式来进行时间同步。
例如,服务器时间信息可以包括服务器接收到请求消息的时间和服务器发送响应消息的时间。
那么,在步骤208中,可以基于发送请求消息的时间、接收到响应消息的实际以及上述服务器时间信息,来确定客户端设备与服务器之间的时间偏差。然后,可以基于时间偏差来将客户端设备与服务器进行时间同步。
例如,如前所述,请求消息和响应消息可以都是NTP报文。进一步地,假设客户端发送NTP报文的时间是T1,服务器接收到该NTP报文的时间是T2,服务器发送该NTP报文的时间是T3,并且客户端设备接收到该NTP报文的时间是T4。这样,可以计算NTP报文的往返时延=(T4-T1)-(T3-T2),进而计算客户端设备相对于服务器的时间偏差=((T2-T1)+(T3-T4))/2。然后,基于时间偏差,可以将客户端设备与服务器进行时间同步。
根据前述实施例,时间同步过程可以是在客户端设备的上层应用处执行的。这样,由于请求消息和响应消息是在上层应用和客户端网卡之间直接传递的,所以能够极大地提高时间同步效率。
根据前述实施例,时间同步过程也可以是在客户端网卡处执行的。这样,由于能够直接在客户端网卡处进行消息处理,进而在客户端网卡处进行时间同步过程,因此能够进一步提高时间同步效率,并且能够减少客户端设备的处理器资源消耗。
在一个实施例中,关于确认业务执行时间方面,服务器时间信息可以包括服务器的当前时间。这样,可以基于当前时间,确认业务执行时间。
例如,在高并发场景中,比如交易场景或分布式数据库场景下,每次业务执行需要确认唯一的高精度时间。而业务执行时间和业务ID是直接相关的。这样,由于请求消息和响应消息无需经过内核网络协议栈,所以能够极大地提高业务执行时间的确认效率,从而能够提高业务ID唯一性的确认效率,并且能够降低时间相关开销。那么,对于分布式数据库而言,也能够缩短数据库的日志刷盘等待时间。
根据前述实施例,确认业务执行时间可以是在上层应用处执行的。这样,由于请求消息和响应消息是在上层应用和客户端网卡之间直接传递的,所以能够极大地提高业务执行时间/业务ID唯一性的确认效率。
根据前述实施例,确认业务执行时间也可以是在客户端网卡处执行的。这样,由于能够直接在客户端网卡处进行消息处理,进而在客户端网卡处确认业务执行时间,因此能够进一步提高确认效率,并且能够减少客户端设备的处理器资源消耗。
此外,如上所述,服务器也可以包括服务器网卡。具体的实现过程可以参照图1所描述的实施例,此处不再赘述。
为了便于理解本说明书的技术方案,下面将结合具体例子来进行描述。应当理解的是,下面的例子仅是为了帮助本领域技术人员更好地理解技术方案,而非对技术方案进行限制。
还应当理解的是,为了便于描述,在图3A至图3G中,仅将客户端设备和服务器示为包括与所描述的技术方案相关的部分,而在具体实现时,客户端设备和服务器还可以包括本领域已知的各个其它部分。
图3A是在现有技术中客户端设备与服务器之间的通信架构的示意图。
在图3A中,为了便于描述,将客户端设备302A简单地示为包括上层应用、内核网络协议栈和普通客户端网卡,并且将服务器304A简单地示为包括上层应用、内核网络协议栈和普通服务器网卡。此处,普通客户端网卡和普通服务器网卡都无法实现RDMA网卡。
当需要从服务器304A请求服务器时间信息时,客户端设备302A的上层应用可以生成请求消息,然后将请求消息传递给客户端设备302A的内核网络协议栈,内核网络协议栈在进行相应的处理之后,将请求消息传递给普通客户端网卡。然后,普通客户端网卡可以将请求消息发送给普通服务器网卡。
普通服务器网卡在接收到请求消息时,将其传递给服务器304A的内核网络协议栈,内核网络协议栈在进行相应的处理之后将请求消息传递给服务器304A的上层应用。服务器304A的上层应用可以基于请求消息生成包括服务器时间信息的响应消息。然后,上层应用经由内核网络协议栈将响应消息传递给普通服务器网卡,由普通服务器网卡发送给普通客户端网卡。
普通客户端网卡接收到响应消息之后,通过内核网络协议栈将其传递给客户端设备302A的上层应用,由上层应用基于服务器时间信息进行事务处理,例如,进行时间同步或者确认业务执行时间。
可见,在该方案中,在客户端设备和服务器侧,请求消息和响应消息都需要经过内核网络协议栈。对于服务器而言,可能导致服务器的处理排队现象,使得服务器响应缓慢,进而可能影响客户端设备的正常运行;而对于客户端设备而言,可能导致客户端设备的事务处理时间长,进而可能严重占用客户端设备的资源,影响客户端设备的正常运行。
鉴于此,在本说明书的技术方案中,可以在服务器侧和/或在客户端设备侧,使得请求消息和响应消息绕过内核网络协议栈。
图3B是根据一个实施例的客户端设备与服务器之间的通信架构的示意图。
在图3B中,服务器304B可以包括服务器网卡。服务器网卡可以实现RDMA技术,例如,服务器网卡可以是RDMA网卡或智能网卡。这样,服务器网卡可以与服务器304B的上层应用直接通信,而无需经过内核网络协议栈。应当理解的是,此处在服务器304B中未示出内核网络协议栈,并不意味着服务器304B不包括内核网络协议栈,而是表示在实现本说明书的技术方案时可以不涉及内核网络协议栈。
客户端设备302B的具体操作可以参照图3A中所示的客户端设备302A的操作,此处不再赘述。
对于服务器304B而言,服务器网卡可以在从客户端设备302B的普通客户端网卡接收到请求消息之后,直接将请求消息传递给服务器304B的上层应用。这样,上层应用可以基于请求消息生成包括服务器时间信息的响应消息,然后再直接传递给服务器网卡。之后,服务器网卡可以将响应消息发送给普通客户端网卡。
可见,在该实施例中,在服务器侧,关于时间的请求消息和响应消息可以在上层应用和服务器网卡之间直接传递,而无需经过服务器的内核网络协议栈,从而能够避免对内核网络协议栈的竞争,减轻服务器的处理排队现象,由此能够极大地提高服务器响应速度。
图3C是根据另一实施例的客户端设备与服务器之间的通信架构的示意图。
在图3C中,客户端设备302C可以包括客户端网卡。客户端网卡可以实现RDMA技术,例如,客户端网卡可以是RDMA网卡或智能网卡。这样,客户端设备302C的上层应用和客户端网卡之间可以直接通信。应当理解的是,此处在客户端设备302C中未示出内核网络协议栈,并不意味着客户端设备302C不包括内核网络协议栈,而是表示在实现本说明书的技术方案时可以不涉及内核网络协议栈。
服务器304C的具体操作可以参照图3A中所示的服务器302A的操作,此处不再赘述。
对于客户端设备302C而言,在需要请求服务器时间信息时,上层应用可以生成请求消息,然后将请求消息直接传递给客户端网卡。客户端网卡可以向普通服务器网卡发送请求消息。
客户端网卡在从普通服务器网卡接收到包括服务器时间信息的响应消息时,可以将响应消息直接传递给客户端设备302C的上层应用。之后,上层应用可以基于服务器时间信息进行事务处理,例如,进行时间同步或者确认业务执行时间。
在该实施例中,在客户端设备侧,请求消息和响应消息可以在上层应用和客户端网卡之间直接传递,而不经过内核网络协议栈,从而能够极大地节省客户端设备侧的处理时间,例如,提高时间同步效率或者业务执行时间的确认效率。
图3D是根据另一实施例的客户端设备与服务器之间的通信架构的示意图。
在图3D中,客户端设备302D可以包括客户端网卡。客户端网卡可以实现RDMA技术。例如,客户端网卡可以是RDMA网卡或智能网卡。这样,客户端设备302D的上层应用和客户端网卡可以直接通信,而不经过内核网络协议栈。
服务器304D可以包括服务器网卡。服务器网卡可以是先RDMA技术,例如,服务器网卡可以是RDMA网卡或智能网卡。这样,服务器304D的上层应用和服务器网卡可以直接通信,而不经过内核网络协议栈。
类似于图3B和图3C的实施例,此处在客户端设备302D和服务器304D中未示出内核网络协议栈,并不意味着客户端设备302D和服务器304D不包括内核网络协议栈,而是表示在实现本说明书的技术方案时可以不涉及内核网络协议栈。
客户端设备302D的具体操作可以参照图3C中所示的客户端设备302C的操作,为了描述的简洁,此处不再赘述。
服务器304D的具体操作可以参照图3B中所示的服务器304B的操作,为了描述的简洁,此处不再赘述。
在该实施例中,在服务器和客户端设备二者处,关于时间的请求消息和响应消息可以不经过内核网络协议栈,由此能够极大地提升服务器响应速度以及客户端设备的处理速度,从而使得客户端设备能够高效地进行事务处理,比如高效地进行时间同步或者确认业务执行时间。
在另一方面,如果客户端网卡或服务器网卡具有可编程处理功能,则可以将关于消息的处理过程卸载到相应的网卡上。
图3E是根据另一实施例的客户端设备与服务器之间的通信架构的示意图。
在图3E中,服务器304E可以包括服务器智能网卡。服务器智能网卡可以实现RDMA技术,而且可以具有可编程处理功能。例如,服务器智能网卡可以包括FPGA,这样通过对FPGA进行编程,可以协助服务器304E的处理器执行一些处理功能。
应当理解的是,此处在服务器304E中未示出上层应用和内核网络协议栈,并不意味着服务器304E不包括上层应用和内核网络协议栈,而是表示在实现本说明书的技术方案时可以不涉及上层应用和内核网络协议栈。
客户端设备302E的具体操作可以参照图3C的客户端设备302C的操作,为了描述的简洁,此处不再赘述。
对于服务器304E而言,服务器智能网卡可以在从客户端网卡接收到请求消息之后,基于请求消息来生成包括服务器时间信息的响应消息,然后将响应消息发送给客户端网卡。
可见,在该实施例中,在服务器侧,可以利用服务器智能网卡来进行消息处理,而不传递给上层应用,这样能够进一步减轻服务器的处理排队现象,从而进一步提升服务器响应速度,提高服务质量。此外,能够减轻服务器的处理器资源消耗。
图3F是根据另一实施例的客户端设备与服务器之间的通信架构的示意图。
在图3F中,客户端设备302F可以包括客户端智能网卡。客户端智能网卡可以实现RDMA技术。此外,客户端智能网卡可以具有可编程处理功能。例如,客户端智能网卡可以包括FPGA,通过对FPGA进行编程,可以协助客户端设备302F的处理器来执行一些处理过程。
应当理解的是,此处在客户端设备302F中未示出上层应用和内核网络协议栈,并不意味着客户端设备302F不包括上层应用和内核网络协议栈,而是表示在实现本说明书的技术方案时可以不涉及上层应用和内核网络协议栈。
服务器304F的具体操作可以参照图3B中所示的服务器304B的操作,为了描述的简洁,此处不再赘述。
对于客户端设备302F而言,在需要请求服务器时间信息时,可以在客户端智能网卡处生成请求消息。例如,客户端设备302F的上层应用可以向客户端智能网卡发送关于生成请求消息的指令。然后,客户端智能网卡可以将请求消息发送给服务器网卡。
在从服务器网卡接收到包括服务器时间信息的响应消息时,客户端智能网卡可以基于服务器时间信息进行事务处理,例如进行时间同步或者确认业务执行时间。
在该实施例中,在客户端设备侧,可以利用客户端智能网卡来进行消息处理以及进一步的事务处理,而不传递给上层应用,这样能够进一步提升客户端设备处的事务处理速度,而且能够减少客户端设备的处理器资源消耗。
图3G是根据另一实施例的客户端设备与服务器之间的通信架构的示意图。
在图3G中,客户端设备302G可以包括客户端智能网卡,而服务器304G可以包括服务器智能网卡。客户端智能网卡和服务器智能网卡都可以实现RDMA技术,并且具有可编程处理功能。这样,可以将关于消息的处理过程卸载到网卡上。
应当理解的是,此处在客户端设备302G和服务器304G中未示出上层应用和内核网络协议栈,并不意味着客户端设备302G和服务器304G不包括上层应用和内核网络协议栈,而是表示在实现本说明书的技术方案时可以不涉及上层应用和内核网络协议栈。
服务器304G的具体操作可以参照图3E的服务器304E的操作,为了描述的简洁,此处不再赘述。
客户端设备302G的具体操作可以参照图3F的客户端设备302F的操作,为了描述的简洁,此处不再赘述。
可见,在该实施例中,无论是在服务器侧还是客户端设备侧,都可以在智能网卡上执行相应的处理过程,从而能够极大地提升服务器响应速度以及客户端设备的事务处理速度,而且能够减少服务器和客户端设备二者的处理器资源消耗。
图4是根据一个实施例的用于事务处理的装置的示意性框图。例如,装置400可以是服务器或者服务器中的组件。
如图4所示,装置400可以包括接收单元402、生成单元404和发送单元406。
接收单元402可以利用服务器网卡从客户端设备接收请求消息,其中,请求消息用于请求服务器时间信息。生成单元404可以基于请求消息,生成响应消息,其中,响应消息包括服务器时间信息。发送单元406可以利用服务器网卡向客户端设备发送响应消息,以便客户端设备基于服务器时间信息进行事务处理。
其中,服务器网卡实现RDMA技术,使得请求消息和响应消息不经过服务器中的内核网络协议栈。
可见,在该技术方案中,关于时间的请求消息和响应消息不经过服务器中的内核网络协议栈,从而能够避开对内核网络协议栈的竞争,这样能够显著加速对这些消息的处理过程,极大地提高服务器响应速度,由此使得客户端设备高效地完成相应的事务处理。
在一个实施例中,生成单元404可以在服务器的上层应用处,基于请求消息,生成响应消息。
在一个实施例中,服务器网卡可以具有可编程处理功能。生成单元404可以在服务器网卡处,基于请求消息,生成响应消息。
在一个实施例中,服务器时间信息可以包括接收到请求消息的时间和发送响应消息的时间,使得客户端设备基于服务器时间信息进行时间同步。
在一个实施例中,服务器时间信息可以包括服务器的当前时间,使得客户端设备基于服务器时间信息确认业务执行时间。
在一个实施例中,客户端设备可以包括客户端网卡,客户端网卡实现RDMA技术,使得请求消息和响应消息不经过客户端设备中的内核网络协议栈。
在一个实施例中,客户端网卡可以具有可编程处理功能,使得客户端设备在客户端网卡处进行事务处理。
在一个实施例中,客户端设备可以在客户端设备的上层应用处进行事务处理。
装置400的各个单元可以执行图1以及3B-3G的方法实施例中的相应步骤,因此,为了描述的简洁,装置400的各个单元的具体操作和功能此处不再赘述。
上述装置400可以采用硬件实现,也可以采用软件实现,或者可以通过软硬件的组合来实现。例如,装置400在采用软件实现时,其可以通过其所在设备的处理器将存储器(比如非易失性存储器)中对应的可执行指令读取到内存中运行来形成。
图5是根据一个实施例的用于事务处理的装置的示意性框图。例如,装置500可以是客户端设备或者客户端设备中的组件。
如图5所示,装置500可以包括生成单元502、发送单元504、接收单元506和处理单元508。
生成单元502可以生成请求消息,其中,请求消息用于请求服务器时间信息。发送单元504可以利用客户端网卡向服务器发送请求消息。接收单元506可以利用客户端网卡从服务器接收响应消息,其中,响应消息包括服务器时间信息。处理单元508可以基于服务器时间信息进行事务处理。
其中,客户端网卡实现RDMA技术,使得请求消息和响应消息不经过客户端设备中的内核网络协议栈。
可见,在该技术方案中,由于在客户端设备侧关于时间的请求消息和响应消息无需经过客户端设备中的内核网络协议栈,这样能够避免对内核协议栈的竞争,从而能够加速消息处理过程,由此极大地提升客户端设备侧的事务处理速度。
在一个实施例中,生成单元502可以在客户端设备中的上层应用处生成请求消息。处理单元508可以在上层应用处,基于服务器时间信息进行事务处理。
在一个实施例中,客户端网卡可以具有可编程处理功能。
生成单元502可以在客户端网卡处生成请求消息。处理单元508可以在客户端网卡处,基于服务器时间信息进行事务处理。
在一个实施例中,服务器时间信息可以包括服务器接收到请求消息的时间以及服务器发送响应消息的时间。
处理单元508可以基于发送请求消息的时间、接收到响应消息的时间以及服务器时间信息,来确定客户端设备与服务器之间的时间偏差。处理单元508可以基于时间偏差,将客户端设备与服务器进行时间同步。
在一个实施例中,服务器时间信息可以包括服务器的当前时间。处理单元508可以基于当前时间,确认业务执行时间。
装置500的各个单元可以执行图2以及图3B至3G的方法实施例中的相应步骤,因此,为了描述的简洁,装置500的各个单元的具体操作和功能此处不再赘述。
上述装置500可以采用硬件实现,也可以采用软件实现,或者可以通过软硬件的组合来实现。例如,装置500在采用软件实现时,其可以通过其所在设备的处理器将存储器(比如非易失性存储器)中对应的可执行指令读取到内存中运行来形成。
图6是根据一个实施例的用于事务处理的计算设备的硬件结构图。例如,计算设备600可以是服务器。
如图6所示,计算设备600可以包括至少一个处理器602、存储器604、内存606和通信接口608,并且至少一个处理器602、存储器604、内存606和通信接口608经由总线610连接在一起。至少一个处理器602执行在存储器604中存储或编码的至少一个可执行指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器604中存储的可执行指令在被至少一个处理器602执行时,使得计算设备实现以上结合图1以及图3B至3G描述的由服务器执行的过程。
计算设备600可以采用本领域任何适用的形式来实现,例如,其包括但不限于台式计算机、膝上型计算机、智能电话、平板计算机、消费电子设备、可穿戴智能设备等等。
图7是根据一个实施例的用于事务处理的计算设备的硬件结构图。例如,计算设备700可以是客户端设备。
如图7所示,计算设备700可以包括至少一个处理器702、存储器704、内存706和通信接口708,并且至少一个处理器702、存储器704、内存706和通信接口708经由总线710连接在一起。至少一个处理器702执行在存储器704中存储或编码的至少一个可执行指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器704中存储的可执行指令在被至少一个处理器702执行时,使得计算设备实现以上结合图2以及图3B至3G描述的由客户端设备执行的相应过程。
计算设备700可以采用本领域任何适用的形式来实现,例如,其包括但不限于台式计算机、膝上型计算机、智能电话、平板计算机、消费电子设备、可穿戴智能设备等等。
本说明书的实施例还提供了一种机器可读存储介质。该机器可读存储介质可以存储有可执行指令,可执行指令在被机器执行时使得机器实现上面参照图1以及图3B-3G描述的方法实施例的由服务器执行的过程。
本说明书的实施例还提供了一种机器可读存储介质。该机器可读存储介质可以存储有可执行指令,可执行指令在被机器执行时使得机器实现上面参照图2以及图3B-3G描述的方法实施例的由客户端设备执行的过程。
例如,机器可读存储介质可以包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、静态随机存取存储器(Static Random Access Memory,SRAM)、硬盘、闪存等等。
应当理解的是,本说明书中的各个实施例均采用递进的方式来描述,各个实施例之间相同或相似的部分相互参见即可,每个实施例重点说明的都是与其它实施例的不同之处。例如,对于上述关于装置的实施例、关于计算设备的实施例以及关于机器可读存储介质的实施例而言,由于它们基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上文对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应当理解的是,对于本领域普通技术人员来说,对本说明书中的实施例进行的各种修改将是显而易见的,并且可以在不脱离权利要求书的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。