CN114390098A - 一种数据传输方法、装置、电子设备及存储介质 - Google Patents

一种数据传输方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114390098A
CN114390098A CN202011132819.5A CN202011132819A CN114390098A CN 114390098 A CN114390098 A CN 114390098A CN 202011132819 A CN202011132819 A CN 202011132819A CN 114390098 A CN114390098 A CN 114390098A
Authority
CN
China
Prior art keywords
data
cache
user
thread
data transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011132819.5A
Other languages
English (en)
Inventor
邱海港
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202011132819.5A priority Critical patent/CN114390098A/zh
Publication of CN114390098A publication Critical patent/CN114390098A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本申请提供了一种数据传输方法、装置、电子设备及存储介质,属于通信技术领域。所述方法包括:从内核缓存中提取第一数据,其中,所述第一数据为待发送给第一用户线程的数据;将所述第一数据存储至用户缓存中;指示所述第一用户线程从所述用户缓存中提取所述第一数据。采用本申请提供的技术方案,能够解决高并发场景下,数据传输效率低的问题。

Description

一种数据传输方法、装置、电子设备及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种数据传输方法、装置、电子设备及存储介质。
背景技术
在进行数据传输时,数据发送方和数据接收方中均可以建立线程,通过线程实现数据传输。具体的,在进行数据发送时,数据发送方的用户线程可以将待发送的数据存储在数据发送方的内核缓存中,然后,数据发送方可以将该数据发送至数据的接收方。在进行数据接收时,数据接收方可以将接收到的数据存储在数据接收方的内核缓存中,再由等待获取该数据的用户线程从内核缓存中读取该数据。
在高并发场景下,数据发送方与数据接收方会在短时间内传输大量数据,采用上述数据传输方式进行数据传输,会出现短时间内大量数据占用内核缓存的情况,导致数据接收方无法接收数据,或,数据发送方无法发送数据,从而降低数据传输效率。
发明内容
本申请实施例的目的在于提供一种数据传输方法、装置、电子设备及存储介质,以解决高并发场景下,数据传输效率低的问题。具体技术方案如下:
第一方面,提供了一种数据传输方法,所述方法还包括:
从内核缓存中提取第一数据,其中,所述第一数据为待发送给第一用户线程的数据;
将所述第一数据存储至用户缓存中;
指示所述第一用户线程从所述用户缓存中提取所述第一数据。
可选的,将所述第一数据存储至用户缓存中,包括:
从一个或者多个所述用户缓存中获取与所述第一用户线程对应的用户缓存;
将所述第一数据存储至所述第一用户线程对应的用户缓存中。
可选的,将所述第一数据存储至用户缓存中,包括:
在所述用户缓存中对应存储线程标识和所述第一数据,所述线程标识是所述第一用户线程的标识;
所述指示所述第一用户线程从所述用户缓存中提取所述第一数据,包括:
指示所述第一用户线程,按照所述线程标识从所述用户缓存中提取所述第一数据。
可选的,将所述第一数据存储至用户缓存中之前,所述方法还包括:
向运行有所述第一用户线程的设备发送用户缓存请求,所述用户缓存请求用于请求分配缓存空间;
接收所述设备的响应信息,所述响应信息指示有为所述第一用户线程分配的缓存空间的存储位置;
将所述存储位置指示的缓存空间确定为所述用户缓存。
第二方面,提供了一种数据传输方法,所述方法还包括:
从用户缓存中提取数据传输信息,其中,所述数据传输信息用于表示第二用户线程所指示发送的数据,所述数据传输信息是由所述第二用户线程存储到所述用户缓存中的;
从数据存储空间获取所述数据传输信息所标识的第二数据;
在内核缓存中存储所述第二数据,其中,所述内核缓存用于发送所述第二数据。
可选的,从用户缓存中提取数据传输信息,包括:
检测所述数据传输信息在所述用户缓存中占用的存储量;
在所述存储量达到预设阈值的情况下,从所述用户缓存中提取所述数据传输信息。
可选的,在内核缓存中存储所述第二数据,包括:
在所述数据传输信息指示有所述第二数据的数据接收方的情况下,从具有对应关系的数据接收方与子缓存区中,查找与所述第二数据的数据接收方对应的子缓存区,得到目标子缓存区,所述内核缓存包括多个子缓存区;
在所述目标子缓存区中存储所述第二数据,其中,所述内核缓存用于将所述目标子缓存区中存储的数据发送至所述数据接收方。
可选的,在内核缓存中存储所述第二数据,包括:
在内核缓存中对应存储数据接收方标识和所述第二数据,所述数据接收方标识是接收所述第二数据的数据接收方的标识,所述数据传输信息包括所述数据接收方标识,所述内核缓存用于根据所述数据接收方标识发送所述第二数据。
第三方面,提供了一种数据传输装置,所述装置还包括:
提取模块,用于从内核缓存中提取第一数据,其中,所述第一数据为待发送给第一用户线程的数据;
存储模块,用于将所述第一数据存储至用户缓存中;
指示模块,用于指示所述第一用户线程从所述用户缓存中提取所述第一数据。
可选的,所述存储模块包括:
获取子模块,用于从一个或者多个所述用户缓存中获取与所述第一用户线程对应的用户缓存;
第一存储子模块,用于将所述第一数据存储至所述第一用户线程对应的用户缓存中。
可选的,所述存储模块,用于在所述用户缓存中对应存储线程标识和所述第一数据,所述线程标识是所述第一用户线程的标识;
所述指示模块,用于指示所述第一用户线程,按照所述线程标识从所述用户缓存中提取所述第一数据。
可选的,所述装置还包括:
发送模块,用于向运行有所述第一用户线程的设备发送用户缓存请求,所述用户缓存请求用于请求分配缓存空间;
接收模块,用于接收所述设备的响应信息,所述响应信息指示有为所述第一用户线程分配的缓存空间的存储位置;
确定模块,用于将所述存储位置指示的缓存空间确定为所述用户缓存。
第四方面,提供了一种数据传输装置,所述装置包括:
提取模块,用于从用户缓存中提取数据传输信息,其中,所述数据传输信息用于表示第二用户线程所指示发送的数据,所述数据传输信息是由所述第二用户线程存储到所述用户缓存中的;
获取模块,用于从数据存储空间获取所述数据传输信息所标识的第二数据;
存储模块,用于在内核缓存中存储所述第二数据,其中,所述内核缓存用于发送所述第二数据。
可选的,所述提取模块包括:
检测子模块,用于检测所述数据传输信息在所述用户缓存中占用的存储量;
提取子模块,用于在所述存储量达到预设阈值的情况下,从所述用户缓存中提取所述数据传输信息。
可选的,所述存储模块包括:
查找子模块,用于在所述数据传输信息指示有所述第二数据的数据接收方的情况下,从具有对应关系的数据接收方与子缓存区中,查找与所述第二数据的数据接收方对应的子缓存区,得到目标子缓存区所述内核缓存包括多个子缓存区;
存储子模块,用于在所述目标子缓存区中存储所述第二数据,其中,所述内核缓存用于将所述目标子缓存区中存储的数据发送至所述数据接收方。
可选的,所述存储模块用于在内核缓存中对应存储数据接收方标识和所述第二数据,所述数据接收方标识是接收所述第二数据的数据接收方的标识,所述数据传输信息包括所述数据接收方标识,所述内核缓存用于根据所述数据接收方标识发送所述第二数据。
第五方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一第一方面,或,任一第二方面所述的方法步骤。
第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一第一方面,或,任一第二方面所述的方法步骤。
第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据传输方法。
本申请实施例有益效果:
本申请实施例提供了一种数据传输方法、装置、电子设备及存储介质。本申请中,可以从内核缓存中提取第一数据,其中,第一数据为待发送给第一用户线程的数据;将第一数据存储至用户缓存中;指示第一用户线程从用户缓存中提取第一数据。
由于在传输数据时从内核缓存中提取第一数据,再将第一数据存储至用户缓存中,因此,能够实时释放内核缓存的存储空间,缓解内核缓存的存储压力,从而避免短时间处理大量数据时无法接收数据或无法发送数据的问题,提高数据传输效率。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据传输方法的流程图;
图2为本申请实施例提供的另一种数据传输方法的流程图;
图3为本申请实施例提供的另一种数据传输方法的流程图;
图4为本申请实施例提供的一种数据传输方法的示例图;
图5为本申请实施例提供的一种数据传输装置的结构示意图;
图6为本申请实施例提供的另一种数据传输装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据传输方法,该方法可以应用于数据传输方。数据传输方可以包括数据发送方和数据接收方。
以安装有应用程序的客户端与应用程序的服务端进行数据传输为例,数据传输方可以包括客户端和服务端。在客户端向服务端发送数据的情况下,数据发送方可以是客户端,数据接收方可以是服务端。在服务端向客户端发送数据的情况下,数据发送方可以是服务端,数据接收方可以是客户端。可以理解的是,在一种情况下作为数据发送方的设备,可以在另一种情况下作为数据接收方。
本申请实施例中,为进行数据传输,数据传输方可以创建多个线程。多个线程可以包括用户线程和目标线程,其中,用户线程用于处理运行应用程序所需的数据,用户线程可以生成待向数据接收方发送的数据,用户线程可以按照设置的业务逻辑对数据发送方发送的数据进行数据处理。目标线程可以用于从内核缓存中提取数据,或者,在内核缓存中存储数据。目标线程的数量少于用户线程的数量,本申请实施例中,目标线程的数量可以为1个。
内核缓存用于在存储有待发送给数据接收方的数据的情况下,向数据接收方发送该数据,并在接收到数据发送方发送的数据的情况下,存储该数据。
本申请实施例以该方法应用于数据接收方为例,对数据传输方法的处理过程进行说明,如图1所示,包括:
步骤101、从内核缓存中提取第一数据。
其中,第一数据为待发送给第一用户线程的数据。
在实施中,在接收到数据发送方发送的第一数据的情况下,数据接收方可以将第一数据存储在内核缓存中。然后,数据接收方中的目标线程可以从内核缓存中提取第一数据。
步骤102、将第一数据存储至用户缓存中。
在实施中,目标线程可以在数据接收方中确定用户缓存,然后,将第一数据存储至确定出的用户缓存中。
可选的,数据接收方中可以设置有1个或多个用户缓存,根据数据接收方中用户缓存的不同设置情况,目标线程在数据接收方中确定用户缓存的处理过程也有所不同。具体处理过程后续会进行详细说明。
目标线程可以仅将第一数据存储至确定出的用户缓存中,目标线程也可以获取第一用户线程的线程标识。在确定出的用户缓存中基于线程标识存储第一数据,具体处理过程后续会进行详细说明。
步骤103、指示第一用户线程从用户缓存中提取第一数据。
在实施中,第一数据可以携带有线程标识,目标线程可以获取第一数据携带的线程标识,将线程标识对应的线程作为第一用户线程。然后,目标线程可以向第一用户线程发送指示信息,之后,第一用户线程可以按照指示信息从用户缓存中提取第一数据。
第一用户线程按照指示信息从用户缓存中提取第一数据的方式可以是多种多样的,在第一种可行的实现方式中,在数据接收方中设置有多个用户缓存的情况下,指示信息可以指示存储有第一数据的用户缓存,由此,第一用户线程可以从指示信息指示的用户缓存中提取第一数据。
在第二种可行的实现方式中,指示信息可以指示第一数据在用户缓存中的存储位置,由此,第一用户线程可以按照指示信息指示的存储位置从用户缓存中提取第一数据。
在第三种可行的实现方式中,指示信息可以指示第一用户线程的线程标识,第一用户线程可以按照线程标识从用户缓存中提取第一数据,具体处理过程后续会进行详细说明。
本申请实施例中,由于在接收到第一数据后从内核缓存中提取第一数据,再将第一数据存储至用户缓存中,因此,能够实时释放内存缓存的存储空间,缓解内存缓存的存储压力,从而避免短时间处理大量数据时无法接收数据或无法发送数据的问题,提高数据传输效率。
在高并发场景下,数据发送方与数据接收方会建立大量用户线程,由用户线程从内核缓存中提取接收到的数据或存储待发送的数据,以实现在短时间内传输大量数据。由此,内核缓存需要在短时间内与大量用户线程进行数据交互,并频繁的切换接入访问的线程,导致内核缓存的处理压力大。
而本申请实施例中,由目标线程从内核缓存中提取第一数据,因此,能够避免内核缓存在短时间内与大量用户线程进行数据交互,减少线程切换,从而能够减轻内核缓存的处理压力,提高数据传输效率。
在进行传输数据之前,可以向用户线程所在的设备申请用户缓存,具体步骤如下:
步骤1、向运行有第一用户线程的设备发送用户缓存请求。
其中,用户缓存请求用于请求分配缓存空间。
在实施中,在数据传输方启动运行后,可以向运行有第一用户线程的设备发送用户缓存请求。
本申请实施例中,在数据传输方为安装有应用程序的客户端的情况下,运行有第一用户线程的设备可以是客户端。在数据传输方为应用程序的服务端的情况下,运行有第一用户线程的设备可以是服务端。在服务端为多个服务器构成的服务集群的情况下,运行有第一用户线程的设备可以是服务集群中的部分服务器或全部服务器。
步骤2、接收设备的响应信息。
其中,响应信息指示有为第一用户线程分配的缓存空间的存储位置。
在实施中,运行有第一用户线程的设备可以在接收到用户缓存请求后,在本地缓存中确定出部分缓存空间,作为为第一用户线程分配的缓存空间。然后,该设备可以生成指示有该缓存空间的存储位置的响应信息,发送该响应信息。
可选的,与第一用户线程属于同一应用程序的用户线程可以使用为第一用户线程分配的缓存空间,即,该应用程序的多个用户线程可以共同使用该缓存空间。因此,响应信息可以指示有为第一用户线程所属的应用程序分配的缓存空间的存储位置。
可选的,在运行有第一用户线程的设备中运行有多个应用程序的情况下,该设备可以为多个应用程序分配同一个缓存空间,由多个应用程序的用户线程共同使用该缓存空间。或者,运行有第一用户线程的设备可以为每个应用程序单独分配缓存空间,每个应用程序的用户线程可以使用该应用程序对应的缓存空间。
步骤3、将存储位置指示的缓存空间确定为用户缓存。
本申请实施例中,可以向运行有第一用户线程的设备发送用户缓存请求,然后,接收指示有分配的缓存空间的存储位置的响应信息。之后,可以将存储位置指示的缓存空间确定为用户缓存。由此,在内核缓存的基础上扩展了用户缓存的缓存机制,便于后续在发送第一数据的情况下,在用户缓存中存储和提取第一数据的数据传输信息,在接收到第二数据的情况下,在用户缓存中存储和提取第二数据。
上述申请用户缓存的处理过程可以由数据传输方中的目标线程实现,也可以由数据传输方中的用户线程实现,本申请实施例不作具体限定。
可选的,数据接收方中可以设置有一个用户缓存,数据接收方中全部应用程序的用户线程可以共享使用该用户缓存。或者,数据接收方中可以设置有多个用户缓存,多个用户缓存是为数据接收方中的多个应用程序分别设置得到的。在为多个应用程序分别设置用户缓存时,可以为每个应用程序设置单独的用户缓存,由此,属于同一应用程序的用户线程可以使用同一用户缓存。或者,可以为部分应用程序设置同一用户缓存,属于部分应用程序的用户线程可以共享使用该用户缓存。
根据数据接收方中用户缓存的不同设置情况,本申请实施例提供了一种将第一数据存储至用户缓存中的实现方式,包括:
步骤1、从一个或者多个用户缓存中获取与第一用户线程对应的用户缓存。
在实施中,针对数据接收方中设置有一个用户缓存的情况,在从内核缓存中提取第一数据后,目标线程可以直接将该用户缓存作为第一用户线程对应的用户缓存。
针对数据接收方中设置有多个用户缓存的情况,在从内核缓存中提取第一数据后,目标线程可以获取第一数据携带的线程标识,将线程标识对应的用户线程作为第一用户线程。然后,目标线程可以确定第一用户线程所属的应用程序,得到目标应用程序。之后,目标线程可以在具有对应关系的应用程序与用户缓存中,查找与目标应用程序对应的用户缓存,将查找到的用户缓存作为第一用户线程对应的用户缓存。
步骤2、将第一数据存储至第一用户线程对应的用户缓存中。
本申请实施例中,针对数据接收方中设置有一个用户缓存的情况,目标线程可以直接将第一数据存储至该用户缓存中,由此,可以提高数据接收方的数据存储效率。
针对数据接收方中设置有多个用户缓存的情况,目标线程可以将第一数据存储至与目标应用程序对应的用户缓存中。由此,可以实现将第一数据存储至相应应用程序的用户缓存中,便于第一用户线程在该用户缓存中查找第一数据,从而能够提高数据接收方的数据提取效率。
可选的,可以获取第一用户线程的线程标识,在用户缓存中基于线程标识实现第一数据的存储与提取,处理过程包括:
步骤一、从内核缓存中提取第一数据。
在实施中,此步骤的处理过程可以参照步骤101的处理过程,此处不再赘述。
步骤二、在用户缓存中对应存储线程标识和第一数据。
在实施中,第一数据可以携带有线程标识,目标线程可以获取第一数据携带的线程标识,得到第一用户线程的线程标识。然后,目标线程可以在用户缓存中对应存储第一用户线程的线程标识和第一数据。
步骤三、指示第一用户线程,按照线程标识从用户缓存中提取第一数据。
在实施中,目标线程可以发送指示有第一用户线程的线程标识的指示信息,然后,第一用户线程可以从用户缓存中提取与第一用户线程的线程标识对应的数据,得到第一数据。
本申请实施例中,由于在用户缓存中对应存储线程标识和第一数据,因此,便于后续第一用户线程在用户缓存中按照线程标识提取第一数据,从而能够提高数据提取效率。进一步的,确保第一用户线程及时从用户缓存中提取第一数据,释放用户缓存的存储空间,使得用户缓存能够存储更多从内核缓存中提取出的数据,进一步提高数据传输效率。
本申请实施例还提供了一种数据传输方法,该方法可以应用于数据发送方,如图2所示,具体步骤如下:
步骤201、从用户缓存中提取数据传输信息。
其中,数据传输信息用于表示第二用户线程所指示发送的数据,为了便于区分,将第二用户线程所指示发送的数据称为第二数据。
在实施中,在数据发送方中的第二用户线程存在待发送给数据接收方的第二数据的情况下,第二用户线程可以生成第二数据的数据传输信息。然后,第二用户线程可以将数据传输信息存储至第二用户线程对应的用户缓存中。之后,目标线程可以从用户缓存中提取数据传输信息。
本申请实施例中,数据传输信息可以包括第二数据在数据存储空间中的存储位置,和/或,第二数据的数据标识。数据传输信息还可以包括能够标识第二用户线程的信息、能够标识接收第二数据的数据接收方的信息等一种信息或多种信息。
例如,数据传输信息可以包括第二用户线程的线程号、第二数据的数据缓存指针、第二数据的数据长度以及指示数据接收方的连接句柄。其中,线程号用于标识第二用户线程,数据缓存指针和数据长度用于指示第二数据在数据存储空间中的存储位置,连接句柄用于指示第二数据的数据接收方。
步骤202、从数据存储空间获取数据传输信息所标识的第二数据。
在实施中,在数据传输信息包含第二数据在数据存储空间中的存储位置的情况下,目标线程可以按照数据传输信息包含的存储位置,从数据存储空间中读取第二数据。
在数据传输信息包含第二数据的数据标识的情况下,目标线程可以按照数据标识,从数据存储空间中读取第二数据。
步骤203、在内核缓存中存储第二数据。
其中,内核缓存用于发送第二数据。
由于内核具有在内核缓存中存储有待发送数据的情况下,将待发送数据发送给数据接收方的内核特性,因此,可以利用这一内核特性,通过在内核缓存中存储待发送的第二数据,实现向第二数据的数据接收方发送第二数据。
本申请实施例中,在发送第二数据时,第二用户线程先将第二数据的数据传输信息存储至用户缓存中,目标线程按照从用户缓存中提取到的数据传输信息获取第二数据,再将第二数据存储至内核缓存中。由此,在高并发场景下,可以避免将大量待发送的第二数据直接存储至内核缓存中,从而能够减轻内核缓存的存储压力,提高数据传输效率。
进一步的,与大量用户线程直接在内核缓存中存储第二数据相比,由目标线程在内核缓存中存储第二数据,能够避免内核缓存在短时间内与大量用户线程进行数据交互,减少线程切换的次数,从而能够减轻内核缓存的处理压力,提高数据传输效率。
此外,由于在用户缓存中存储能够指示第二数据的数据传输信息,由目标线程按照数据传输信息获取第二数据,再将第二数据存储至内核缓存中,因此,在第二数据的发送过程中,仅在内核缓存中存储了一次第二数据。与在用户缓存中存储第二数据,后续从用户缓存中提取第二数据再将第二数据存储至内核缓存相比,避免了第二数据的重复存储。一方面,能够节约用户缓存的存储空间,另一方面,能够避免在用户缓存中存储、提取容量更大的第二数据,节省数据传输方进行数据读写所耗费的处理资源。
可选的,目标线程可以通过多种方式从用户缓存中提取数据传输信息。在第一种可行的实现方式中,目标线程可以检测用户缓存中是否存储有数据传输信息,在检测到用户缓存中存储有数据传输信息的情况下,目标线程可以从用户缓存中提取数据传输信息。在未检测到用户缓存中存储有数据传输信息的情况下,目标线程可以不作后续处理。
在第二种可行的实现方式中,第二用户线程可以在将数据传输信息存储到用户缓存后,向目标线程发送指示信息。目标线程可以在接收到指示信息后,从用户缓存中提取数据传输信息。
在第三种可行的实现方式中,目标线程可以根据数据传输信息在用户缓存中所占用的存储量,提取数据传输信息,如图3所示,包括:
步骤301、检测数据传输信息在用户缓存中占用的存储量。
在实施中,目标线程可以检测数据传输信息在用户缓存中占用的存储量。然后,目标线程可以将检测到的存储量与预设阈值进行比较。在存储量未达到预设阈值的情况下,目标线程可以不作后续处理。
可选的,预设阈值可以根据实际数据传输过程中数据传输的数据量进行设置。例如,预设阈值可以是1Kb。
步骤302、在存储量达到预设阈值的情况下,从用户缓存中提取数据传输信息。
本申请实施例中,在数据传输信息的存储量达到预设阈值的情况下,目标线程可以从用户缓存中提取多个数据传输信息,再按照多个数据传输信息获取多个第二数据。由此,目标线程可以在内核存储中批量存储多个第二数据,从而能够实现第二数据的批量发送,防止数据的小包发送现象。
可选的,数据传输信息还可以用于指示第二数据的数据接收方,目标线程可以在内核缓存中存储第二数据的同时,基于数据传输信息指示内核缓存第二数据的数据接收方,以便内核缓存向指示的数据接收方发送第二数据。本申请实施例提供了两种指示内核缓存第二数据的数据接收方的实现方式,包括:
方式一、内核缓存可以包括多个子缓存区,每个子缓存区对应于一个数据接收方,内核缓存可以用于将每个子缓存区中存储的数据发送至该子缓存区对应的数据接收方。在这种情况下,指示内核缓存第二数据的数据接收方的处理过程可以包括:
步骤一、从具有对应关系的数据接收方与子缓存区中,查找与第二数据的数据接收方对应的子缓存区,得到目标子缓存区。
在实施中,在提取数据传输信息后,目标线程可以确定数据传输信息指示的数据接收方。然后,目标线程可以从具有对应关系的数据接收方与子缓存区中,查找与确定出的数据接收方对应的子缓存区,得到目标子缓存区。
步骤二、在目标子缓存区中存储第二数据。
本申请实施例中,目标线程可以从具有对应关系的数据接收方与子缓存区中,查找与第二数据的数据接收方对应的目标子缓存区,然后,在目标子缓存区中存储第二数据。由此,在发送第二数据时,可以方便数据发送方快速的确定第二数据的数据接收方,提高数据传输效率。
方式二、数据传输信息可以包括数据接收方标识,并且,内核缓存可以用于根据数据接收方标识发送第二数据。其中,数据接收方标识为第二数据的数据接收方的标识。在这种情况下,指示内核缓存第二数据的数据接收方的处理过程可以包括:在内核缓存中对应存储数据接收方标识和第二数据。由此,在发送第二数据时,可以向数据接收方标识指示的数据接收方发送第二数据,方便数据发送方快速的确定第二数据的数据接收方,提高数据传输效率。
如图4所示,为本申请实施例提供的一种数据传输方法的示例图,其中,设备100和设备200均为数据传输方,设备100可以为安装有应用程序的客户端,设备200可以为应用程序的服务端。在数据传输方启动运行后,可以为应用程序申请用户缓存,以便数据传输方基于用户缓存和内核缓存实现数据传输。
在客户端向服务端发送数据的情况下,如设备100中实线箭头所示,在客户端中的用户线程存在待发送的第二数据时,用户线程可以生成第二数据的数据传输信息,再将数据传输信息写入到用户缓存中。然后,通过调用时间等待模型,用户线程可以进入等待状态,等待服务端发送的响应数据。其中,数据传输信息可以包括该用户线程的线程号、第二数据的数据缓存指针、第二数据的数据长度以及指示数据接收方的连接句柄。
目标线程可以检测数据传输信息在用户缓存中占用的存储量,在存储量达到预设阈值1Kb时,从用户缓存中提取数据传输信息,按照数据传输信息从数据存储空间中获取第二数据,再将获取到的第二数据存储至内核缓存中。然后,可以利用内核特性将内核缓存中存储的第二数据发送给服务端,从而实现数据传输。
如设备200中虚线箭头所示,服务端在接收到客户端发送的第二数据后,可以将第二数据作为接收到的第一数据存储至内核缓存中。服务端中的目标线程可以从内核缓存中提取第一数据,将第一数据写入到用户缓存中。由此,通过及时从内核缓存中提取出第一数据,并将第一数据存储至用户缓存中,可以降低内核缓存变满的概率,提升数据接收效率。
然后,服务端中的用户线程可以从用户缓存中提取第一数据,生成第一数据的响应数据。之后,服务端可以向客户端发送该响应数据,发送过程如设备200中实线箭头所示,具体发送过程与上述客户端向服务端发送第二数据的发送过程类似,此处不再赘述。
客户端在接收到服务端发送的响应数据后,可以在内核缓存中存储响应数据,然后,目标线程可以从内核缓存中提取响应数据,再将响应数据存储至用户缓存中。之后,目标线程可以通过事件驱动方式激活进入等待状态的第一用户线程,第一用户线程再从用户缓存中提取响应数据,再根据第一用户线程的业务逻辑对响应数据进行数据处理。
由此,可以实现客户端与服务端之间的TCP(Transmission Control Protocol,传输控制协议)通信。
基于相同的技术构思,本申请实施例还提供了一种数据传输装置,如图5所示,该装置包括:
提取模块510,用于从内核缓存中提取第一数据,其中,所述第一数据为待发送给第一用户线程的数据;
存储模块520,用于将所述第一数据存储至用户缓存中;
指示模块530,用于指示所述第一用户线程从所述用户缓存中提取所述第一数据。
可选的,所述存储模块包括:
获取子模块,用于从一个或者多个所述用户缓存中获取与所述第一用户线程对应的用户缓存;
第一存储子模块,用于将所述第一数据存储至所述第一用户线程对应的用户缓存中。
可选的,所述存储模块,用于在所述用户缓存中对应存储线程标识和所述第一数据,所述线程标识是所述第一用户线程的标识;
所述指示模块,用于指示所述第一用户线程,按照所述线程标识从所述用户缓存中提取所述第一数据。
可选的,所述装置还包括:
发送模块,用于向运行有所述第一用户线程的设备发送用户缓存请求,所述用户缓存请求用于请求分配缓存空间;
接收模块,用于接收所述设备的响应信息,所述响应信息指示有为所述第一用户线程分配的缓存空间的存储位置;
确定模块,用于将所述存储位置指示的缓存空间确定为所述用户缓存。
本申请实施例中,由于在接收到第一数据后从内核缓存中提取第一数据,再将第一数据存储至用户缓存中,因此,能够实时释放内存缓存的存储空间,缓解内存缓存的存储压力,从而避免短时间处理大量数据时无法接收数据或无法发送数据的问题,提高数据传输效率。
基于相同的技术构思,本申请实施例还提供了一种数据传输装置,如图6所示,该装置包括:
提取模块610,用于从用户缓存中提取数据传输信息,其中,所述数据传输信息用于表示第二用户线程所指示发送的数据,所述数据传输信息是由所述第二用户线程存储到所述用户缓存中的;
获取模块620,用于从数据存储空间获取所述数据传输信息所标识的第二数据;
存储模块630,用于在内核缓存中存储所述第二数据,其中,所述内核缓存用于发送所述第二数据。
可选的,所述提取模块包括:
检测子模块,用于检测所述数据传输信息在所述用户缓存中占用的存储量;
提取子模块,用于在所述存储量达到预设阈值的情况下,从所述用户缓存中提取所述数据传输信息。
可选的,所述存储模块包括:
查找子模块,用于在所述数据传输信息指示有所述第二数据的数据接收方的情况下,从具有对应关系的数据接收方与子缓存区中,查找与所述第二数据的数据接收方对应的子缓存区,得到目标子缓存区,所述内核缓存包括多个子缓存区;
存储子模块,用于在所述目标子缓存区中存储所述第二数据,其中,所述内核缓存用于将所述目标子缓存区中存储的数据发送至所述数据接收方。
可选的,所述存储模块用于在内核缓存中对应存储数据接收方标识和所述第二数据,所述数据接收方标识是接收所述第二数据的数据接收方的标识,所述数据传输信息包括所述数据接收方标识,所述内核缓存用于根据所述数据接收方标识发送所述第二数据。
本申请实施例中,在发送第二数据时,第二用户线程先将第二数据的数据传输信息存储至用户缓存中,目标线程按照从用户缓存中提取到的数据传输信息获取第二数据,再将第二数据存储至内核缓存中。由此,在高并发场景下,可以避免将大量待发送的第二数据直接存储至内核缓存中,从而能够减轻内核缓存的存储压力,提高数据传输效率。
基于相同的技术构思,本申请实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现上述任一数据传输方法所述的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据传输方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据传输方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (12)

1.一种数据传输方法,其特征在于,所述方法还包括:
从内核缓存中提取第一数据,其中,所述第一数据为待发送给第一用户线程的数据;
将所述第一数据存储至用户缓存中;
指示所述第一用户线程从所述用户缓存中提取所述第一数据。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据存储至用户缓存中,包括:
从一个或者多个所述用户缓存中获取与所述第一用户线程对应的用户缓存;
将所述第一数据存储至所述第一用户线程对应的用户缓存中。
3.根据权利要求1所述的方法,其特征在于,将所述第一数据存储至用户缓存中,包括:
在所述用户缓存中对应存储线程标识和所述第一数据,所述线程标识是所述第一用户线程的标识;
所述指示所述第一用户线程从所述用户缓存中提取所述第一数据,包括:
指示所述第一用户线程,按照所述线程标识从所述用户缓存中提取所述第一数据。
4.根据权利要求1所述的方法,其特征在于,将所述第一数据存储至用户缓存中之前,所述方法还包括:
向运行有所述第一用户线程的设备发送用户缓存请求,所述用户缓存请求用于请求分配缓存空间;
接收所述设备的响应信息,所述响应信息指示有为所述第一用户线程分配的缓存空间的存储位置;
将所述存储位置指示的缓存空间确定为所述用户缓存。
5.一种数据传输方法,其特征在于,所述方法包括:
从用户缓存中提取数据传输信息,其中,所述数据传输信息用于表示第二用户线程所指示发送的数据,所述数据传输信息是由所述第二用户线程存储到所述用户缓存中的;
从数据存储空间获取所述数据传输信息所标识的第二数据;
在内核缓存中存储所述第二数据,其中,所述内核缓存用于发送所述第二数据。
6.根据权利要求5所述的方法,其特征在于,从用户缓存中提取数据传输信息,包括:
检测所述数据传输信息在所述用户缓存中占用的存储量;
在所述存储量达到预设阈值的情况下,从所述用户缓存中提取所述数据传输信息。
7.根据权利要求5所述的方法,其特征在于,在内核缓存中存储所述第二数据,包括:
在所述数据传输信息指示有所述第二数据的数据接收方的情况下,从具有对应关系的数据接收方与子缓存区中,查找与所述第二数据的数据接收方对应的子缓存区,得到目标子缓存区,所述内核缓存包括多个子缓存区;
在所述目标子缓存区中存储所述第二数据,其中,所述内核缓存用于将所述目标子缓存区中存储的数据发送至所述数据接收方。
8.根据权利要求5所述的方法,其特征在于,在内核缓存中存储所述第二数据,包括:
在内核缓存中对应存储数据接收方标识和所述第二数据,所述数据接收方标识是接收所述第二数据的数据接收方的标识,所述数据传输信息包括所述数据接收方标识,所述内核缓存用于根据所述数据接收方标识发送所述第二数据。
9.一种数据传输装置,其特征在于,所述装置还包括:
提取模块,用于从内核缓存中提取第一数据,其中,所述第一数据为待发送给第一用户线程的数据;
存储模块,用于将所述第一数据存储至用户缓存中;
指示模块,用于指示所述第一用户线程从所述用户缓存中提取所述第一数据。
10.一种数据传输装置,其特征在于,所述装置包括:
提取模块,用于从用户缓存中提取数据传输信息,其中,所述数据传输信息用于表示第二用户线程所指示发送的数据,所述数据传输信息是由所述第二用户线程存储到所述用户缓存中的;
获取模块,用于从数据存储空间获取所述数据传输信息所标识的第二数据;
存储模块,用于在内核缓存中存储所述第二数据,其中,所述内核缓存用于发送所述第二数据。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4,或,权利要求5-8任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4,或,权利要求5-8任一所述的方法步骤。
CN202011132819.5A 2020-10-21 2020-10-21 一种数据传输方法、装置、电子设备及存储介质 Pending CN114390098A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011132819.5A CN114390098A (zh) 2020-10-21 2020-10-21 一种数据传输方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011132819.5A CN114390098A (zh) 2020-10-21 2020-10-21 一种数据传输方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114390098A true CN114390098A (zh) 2022-04-22

Family

ID=81193681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011132819.5A Pending CN114390098A (zh) 2020-10-21 2020-10-21 一种数据传输方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114390098A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010051927A1 (en) * 2000-06-08 2001-12-13 Blinkspeed, Inc. Increasing web page browsing efficiency by periodically physically distributing memory media on which web page data are cached
CN101266561A (zh) * 2008-04-29 2008-09-17 中兴通讯股份有限公司 一种在多核多线程处理器中的核间消息通信方法
CN101770412A (zh) * 2010-01-22 2010-07-07 华中科技大学 一种连续数据缓存系统及其数据缓存方法
CN103150268A (zh) * 2013-03-04 2013-06-12 浪潮电子信息产业股份有限公司 一种cdp中的块级数据捕获方法
CN105897849A (zh) * 2015-12-22 2016-08-24 乐视云计算有限公司 跨进程服务方法和系统及代理服务器
CN107071059A (zh) * 2017-05-25 2017-08-18 腾讯科技(深圳)有限公司 分布式缓存服务实现方法、装置、终端、服务器及系统
WO2018077292A1 (zh) * 2016-10-28 2018-05-03 北京市商汤科技开发有限公司 数据处理方法和系统、电子设备
CN110311975A (zh) * 2019-06-28 2019-10-08 北京奇艺世纪科技有限公司 一种数据请求处理方法及装置
CN110955584A (zh) * 2018-09-26 2020-04-03 Oppo广东移动通信有限公司 块设备访问追踪方法、装置、存储介质及终端
CN111209123A (zh) * 2019-12-26 2020-05-29 天津中科曙光存储科技有限公司 一种本地存储io协议栈数据交互方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010051927A1 (en) * 2000-06-08 2001-12-13 Blinkspeed, Inc. Increasing web page browsing efficiency by periodically physically distributing memory media on which web page data are cached
CN101266561A (zh) * 2008-04-29 2008-09-17 中兴通讯股份有限公司 一种在多核多线程处理器中的核间消息通信方法
CN101770412A (zh) * 2010-01-22 2010-07-07 华中科技大学 一种连续数据缓存系统及其数据缓存方法
CN103150268A (zh) * 2013-03-04 2013-06-12 浪潮电子信息产业股份有限公司 一种cdp中的块级数据捕获方法
CN105897849A (zh) * 2015-12-22 2016-08-24 乐视云计算有限公司 跨进程服务方法和系统及代理服务器
WO2018077292A1 (zh) * 2016-10-28 2018-05-03 北京市商汤科技开发有限公司 数据处理方法和系统、电子设备
CN107071059A (zh) * 2017-05-25 2017-08-18 腾讯科技(深圳)有限公司 分布式缓存服务实现方法、装置、终端、服务器及系统
CN110955584A (zh) * 2018-09-26 2020-04-03 Oppo广东移动通信有限公司 块设备访问追踪方法、装置、存储介质及终端
CN110311975A (zh) * 2019-06-28 2019-10-08 北京奇艺世纪科技有限公司 一种数据请求处理方法及装置
CN111209123A (zh) * 2019-12-26 2020-05-29 天津中科曙光存储科技有限公司 一种本地存储io协议栈数据交互方法和装置

Similar Documents

Publication Publication Date Title
CN108234630B (zh) 基于分布式一致性协议实现的数据读取方法及装置
CN106302595B (zh) 一种对服务器进行健康检查的方法及设备
CN108647240B (zh) 一种统计访问量的方法、装置、电子设备及存储介质
CN108153783B (zh) 一种数据缓存的方法和装置
CN110162270B (zh) 基于分布式存储系统的数据存储方法、存储节点及介质
CN110677684B (zh) 视频处理、视频访问方法及分布式存储、视频访问系统
US10057368B1 (en) Method and system for incremental cache lookup and insertion
CN111339137A (zh) 一种数据校验方法及装置
CN105988941B (zh) 缓存数据处理方法和装置
CN109246234B (zh) 一种镜像文件下载方法、装置、电子设备及存储介质
CN110995817B (zh) 请求回调方法、装置及客户端设备
CN112653736A (zh) 一种并行回源方法、装置及电子设备
CN109086220B (zh) 一种回收存储空间的方法和装置
CN114390098A (zh) 一种数据传输方法、装置、电子设备及存储介质
CN110020290B (zh) 网页资源缓存方法、装置、存储介质及电子装置
CN113849125B (zh) 一种cdn服务器磁盘读取的方法、装置及系统
CN113656178B (zh) 数据处理方法、装置、设备及可读存储介质
CN112214178A (zh) 一种存储系统、数据读取方法及数据写入方法
CN109446462B (zh) 基于页面的数据监控处理方法、装置、设备和存储介质
CN113672248A (zh) 一种补丁获取方法、装置、服务端及存储介质
CN107783911B (zh) 一种数据过滤方法及终端设备
CN112256654A (zh) 一种文档共享方法及装置
CN110297549B (zh) 输入处理方法、装置、设备和存储介质
WO2022028165A1 (zh) 缓存管理方法、终端以及存储介质
CN114237509B (zh) 数据访问方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination