CN111522663B - 一种基于分布式存储系统的数据传输方法、装置和系统 - Google Patents
一种基于分布式存储系统的数据传输方法、装置和系统 Download PDFInfo
- Publication number
- CN111522663B CN111522663B CN202010327804.8A CN202010327804A CN111522663B CN 111522663 B CN111522663 B CN 111522663B CN 202010327804 A CN202010327804 A CN 202010327804A CN 111522663 B CN111522663 B CN 111522663B
- Authority
- CN
- China
- Prior art keywords
- data
- message data
- work queue
- network card
- read
- 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.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 43
- 238000013500 data storage Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种基于分布式存储系统的数据传输方法、装置和系统,客户端预先建立与每种数据类型相匹配的线程;依据消息数据所属的数据类型,将消息数据存储至相应的工作队列;调用工作队列相匹配的线程,以将消息数据发送到网卡;根据设定的网络协议将网卡上的消息数据传输至服务端。服务端检测到套接字对应的缓存空间存在读写事件时,调用线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照对应的处理规则对待处理数据进行解析处理。客户端设置线程池直接将消息数据传输至网卡,降低了消息数据传输的延时。服务端检测套接字对应的缓存空间,有效的避免了执行无效的IO读写操作,提高了数据处理的带宽。
Description
技术领域
本发明涉及网络通信技术领域,特别是涉及一种基于分布式存储系统的数据传输方法、装置和系统。
背景技术
企业存储需求近几年爆发性增长,分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。
目前几乎所有的网络应用程序都使用C/S(客户端/服务器)模型,所有的客户端通过访问服务器来获取所需要的资源。服务器启动之后,受限创建一个或多个监听套接字(socket),并调用bind函数将其顶到感兴趣的端口上,然后调用listen函数等待客户端连接。服务器稳定运行之后,客户端就可以调用connect函数向服务器发起连接了。
按照现有的数据传输方式,当客户端的线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,从而造成用户线程处于阻塞状态,造成数据传输的延时。
为了降低数据传输的延时,服务器接收到读操作即read操作后,马上向客户端反馈一个结果。如果结果是一个错误(error)时,可以再次发送read操作。一旦内核中的数据准备好了,并且又再次收到了用户线程的请求,那么它马上就将数据拷贝到了用户线程。该操作方式虽然降低了数据传输的延时,但是该处理过程需要频繁的执行IO操作,降低了数据传输的带宽。
可见,如何在提高带宽的同时,最大程度的降低数据传输的延时,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种基于分布式存储系统的数据传输方法、装置和系统,可以在提高带宽的同时,最大程度的降低数据传输的延时。
为解决上述技术问题,本发明实施例提供一种基于分布式存储系统的数据传输方法,包括:
预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;
依据所述消息数据所属的数据类型,将所述消息数据存储至相应的工作队列;其中,所述线程池中包括每种类型的工作队列所对应的线程;
调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡;
根据设定的网络协议将所述网卡上的消息数据传输至服务端。
可选地,所述调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡包括:
利用与所述工作队列相匹配的线程,将所述工作队列中的消息数据按照先入先出原则通过套接字接口发送到所述网卡。
可选地,在所述利用与所述工作队列相匹配的线程,将所述工作队列中的消息数据按照先入先出原则通过套接字接口发送到所述网卡之前还包括:
判断所述网卡的剩余存储空间是否满足数据存储条件;
若是,则执行所述利用与所述工作队列相匹配的线程,将所述工作队列中的消息数据按照先入先出原则通过套接字接口发送到所述网卡的步骤;
若否,则从预先设置的缓存区域内获取与所述消息数据的数据长度相匹配的缓存空间;将所述消息数据存储至所述缓存空间。
可选地,在所述将所述消息数据存储至所述缓存空间之后还包括:
根据设定的网络协议将所述缓存空间上的消息数据传输至服务端之后释放所述缓存空间。
本发明实施例还提供了一种基于分布式存储系统的数据传输装置,包括建立单元、存储单元、发送单元和传输单元;
所述建立单元,用于预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;
所述存储单元,用于依据所述消息数据所属的数据类型,将所述消息数据存储至相应的工作队列;其中,所述线程池中包括每种类型的工作队列所对应的线程;
所述发送单元,用于调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡;
所述传输单元,用于根据设定的网络协议将所述网卡上的消息数据传输至服务端。
可选地,所述发送单元具体用于利用与所述工作队列相匹配的线程,将所述工作队列中的消息数据按照先入先出原则通过套接字接口发送到所述网卡。
可选地,还包括判断单元和获取单元;
所述判断单元,用于判断所述网卡的剩余存储空间是否满足数据存储条件;若是,则触发所述发送单元执行所述利用与所述工作队列相匹配的线程,将所述工作队列中的消息数据按照先入先出原则通过套接字接口发送到所述网卡的步骤;若否,则触发所述获取单元;
所述获取单元,用于从预先设置的缓存区域内获取与所述消息数据的数据长度相匹配的缓存空间;将所述消息数据存储至所述缓存空间。
可选地,还包括释放单元;
所述释放单元,用于根据设定的网络协议将所述缓存空间上的消息数据传输至服务端之后释放所述缓存空间。
本发明实施例还提供了一种基于分布式存储系统的数据传输方法,包括:
当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;
将读取的各消息数据进行拼接得到待处理数据;
按照所述待处理数据对应的处理规则,对所述待处理数据进行解析处理。
可选地,所述当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据包括:
当检测到套接字对应的缓存空间存在读写事件时,根据消息数据的数据长度,在内存池闲置区域内获取满足所述数据长度的内存块序列;
调用预先建立的线程池将读取的所述消息数据存储至所述内存块序列;
当完成所述待处理数据的处理后,释放所述内存块序列。
本发明实施例还提供了一种基于分布式存储系统的数据传输装置,包括检测单元、拼接单元和处理单元;
所述检测单元,用于当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;
所述拼接单元,用于将读取的各消息数据进行拼接得到待处理数据;
所述处理单元,用于按照所述待处理数据对应的处理规则,对所述待处理数据进行解析处理。
可选地,所述检测单元包括获取子单元、调用子单元和释放子单元;
所述获取子单元,用于当检测到套接字对应的缓存空间存在读写事件时,根据消息数据的数据长度,在内存池闲置区域内获取满足所述数据长度的内存块序列;
所述调用子单元,用于调用预先建立的线程池将读取的所述消息数据存储至所述内存块序列;
所述释放子单元,用于当完成所述待处理数据的处理后,释放所述内存块序列。
本发明实施例还提供了一种基于分布式存储系统的数据传输系统,包括客户端和服务端;
所述客户端,用于预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;依据所述消息数据所属的数据类型,将所述消息数据存储至相应的工作队列;其中,所述线程池中包括每种类型的工作队列所对应的线程;调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡;根据设定的网络协议将所述网卡上的消息数据传输至服务端;
所述服务端,用于当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照所述待处理数据对应的处理规则,对所述待处理数据进行解析处理。
由上述技术方案可以看出,客户端会预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;线程池中包括每种类型的工作队列所对应的线程,依据消息数据所属的数据类型,将消息数据存储至相应的工作队列,从而调用工作队列相匹配的线程,以将消息数据发送到网卡;并根据设定的网络协议将网卡上的消息数据传输至服务端。客户端通过设置线程池的方式可以实现对消息数据的及时处理,并且可以直接将消息数据传输至网卡,无需进行缓存,极大的降低了消息数据传输的延时。服务端检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照待处理数据对应的处理规则,对待处理数据进行解析处理。服务端通过检测套接字对应的缓存空间,可以及时发现客户端传输来的消息数据,有效的避免了执行无效的IO读写操作,提高了数据处理的带宽。并且服务端通过线程池中包含的多个线程可以实现对消息数据的并行处理,极大的提升了消息数据的处理效率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于分布式存储系统的数据传输方法的信令图;
图2为本发明实施例提供的一种基于分布式存储系统的数据传输的流程示意图;
图3为本发明实施例提供的一种适用于客户端的基于分布式存储系统的数据传输装置的结构示意图;
图4为本发明实施例提供的一种适用于服务端的基于分布式存储系统的数据传输装置的结构示意图;
图5为本发明实施例提供的一种基于分布式存储系统的数据传输系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种基于分布式存储系统的数据传输方法。图1为本发明实施例提供的一种基于分布式存储系统的数据传输方法的信令图,该方法包括:
S101:客户端预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池。
在本发明实施例中,为了降低数据传输的延时,可以根据数据类型预先建立相应的线程。每种数据类型有其对应的线程,该线程可以用于实现该种数据类型的消息数据的传输。
在具体实现中,可以将预先建立的多个线程以线程池的方式存储。需要说明的是,在完成线程池的建立之后,后续直接调用该线程池对消息数据进行解析处理即可,无需每次都建立线程池。
S102:客户端依据消息数据所属的数据类型,将消息数据存储至相应的工作队列;调用工作队列相匹配的线程,以将工作队列中的消息数据发送到网卡。
在本发明实施例中,可以将客户端向服务端传输的数据称作消息数据。
客户端上的消息数据可以是客户端上原本存储的数据,也可以是用户输入的数据。当客户端获取到消息数据时,可以依据消息数据所属的数据类型,将消息数据存储至相应的工作队列;调用工作队列相匹配的线程,以将工作队列中的消息数据发送到网卡。
利用线程发送消息数据时可以按照先进先出(First Input First Output,FIFO)的原则,将工作队列中的消息数据通过套接字接口发送到网卡。
在具体实现中,每个线程负责一个OpWQ类型的工作队列。OpWQ队列内部维护了一张FIFO的列表,当有新的消息数据到来时,先存放到工作队列中,然后由线程池按照FIFO的原则将消息数据通过套接字接口直接发送到网卡,提高消息数据发送的效率。
S103:客户端根据设定的网络协议将网卡上的消息数据传输至服务端。
在实际应用中可以根据客户端的应用需求设置网络协议,网络协议可以为传输控制协议(Transmission Control Protocol,TCP),网际协议(Internet Protocol,IP),或者远程直接数据存取(Remote Direct Memory Access,RDMA)等。在本发明实施例中,对于网络协议的具体类型不做限定。
S104:服务端检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据。
在服务端可以设置一个线程不断去轮询多个套接字(socket)的状态,只有当socket真正有读写事件时,才真正调用实际的IO读写操作,从而有效的减少带宽资源的占用。
在具体实现中,为了避免服务端接收消息数据出现阻塞,可以在检测到套接字对应的缓存空间存在读写事件时,根据消息数据的数据长度,在内存池闲置区域内获取满足数据长度的内存块序列;调用预先建立的线程池将读取的消息数据存储至内存块序列。
S105:服务端将读取的各消息数据进行拼接得到待处理数据。
服务端可以通过线程池包含的多个线程对消息数据进行并行读取,一个完整的数据包可以由多个消息数据拼接得到。服务端需要对获取的消息数据进行解析处理,为了便于区分,在本发明实施例中,可以将拼接得到的完整数据包称作待处理数据。
S106:服务端按照待处理数据对应的处理规则,对待处理数据进行解析处理。
不同类型的待处理数据所对应的解析处理方式所有不同,在服务端可以针对于不同类型的数据预先建立处理规则。当得到待处理数据后,便可以按照待处理数据对应的处理规则,对待处理数据进行解析处理。
待处理数据所包含的消息数据存储在内存块序列中,当完成待处理数据的处理后,可以释放内存块序列,以便于该内存块序列可以继续存储其它数据。
如图2所示为本发明实施例提供的一种基于分布式存储系统的数据传输的流程示意图,客户端可以调用线程池直接将消息数据(Message*m)传输至网卡,从而避免了消息数据在缓存队列的滞留,极大地降低了消息数据传输的延时。客户端可以根据设定的网络协议将网卡上的消息数据传输至服务端的网卡上。服务端通过多路复用轮询IO的方式,实现对消息数据的即时响应。服务端检测到套接字对应的缓存空间存在读写事件时,可以立即触发线程池中的线程读取消息数据;将读取的各消息数据按照字节流的顺序组装成消息(Message*m),并按照该消息对应的处理规则,对消息进行解析处理。
由上述技术方案可以看出,客户端会预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;线程池中包括每种类型的工作队列所对应的线程,依据消息数据所属的数据类型,将消息数据存储至相应的工作队列,从而调用工作队列相匹配的线程,以将消息数据发送到网卡;并根据设定的网络协议将网卡上的消息数据传输至服务端。客户端通过设置线程池的方式可以实现对消息数据的及时处理,并且可以直接将消息数据传输至网卡,无需进行缓存,极大的降低了消息数据传输的延时。服务端检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照待处理数据对应的处理规则,对待处理数据进行解析处理。服务端通过检测套接字对应的缓存空间,可以及时发现客户端传输来的消息数据,有效的避免了执行无效的IO读写操作,提高了数据处理的带宽。并且服务端通过线程池中包含的多个线程可以实现对消息数据的并行处理,极大的提升了消息数据的处理效率。
网卡的存储空间有限,考虑到实际应用中,可能会存在网卡剩余空间不足导致消息数据丢包的情况,为了避免该种情况的发生,在利用与工作队列相匹配的线程,将工作队列中的消息数据按照先入先出原则通过套接字接口发送到网卡之前,可以先判断网卡的剩余存储空间是否满足数据存储条件。
数据存储条件可以是将当前的消息数据存储至网卡后,判断该网卡是否还具有剩余的存储空间。该网卡仍具有剩余的存储空间时,则网卡当前的剩余存储空间满足数据存储条件。
或者该数据存储条件可以包含网卡当前的剩余存储空间的下限值。当剩余存储空间大于或等于下限值时,则说明网卡的剩余存储空间满足数据存储条件,此时可以执行利用与工作队列相匹配的线程,将工作队列中的消息数据按照先入先出原则通过套接字接口发送到网卡的步骤。
当网卡的剩余存储空间小于下限值时,则说明网卡的剩余存储空间不满足数据存储条件,此时可以从预先设置的缓存区域内获取与消息数据的数据长度相匹配的缓存空间;将消息数据存储至缓存空间。
通过对网卡的剩余存储空间进行检测,可以及时发现网卡存储空间不足的问题,从而避免在网卡剩余存储空间不足时仍向网卡传输消息数据,造成消息数据丢包的情况的发生。通过对消息数据分配额外的缓存空间,有效的提升了消息数据存储的可靠性。
为了提升缓存空间的利用率,在根据设定的网络协议将缓存空间上的消息数据传输至服务端之后,可以释放缓存空间。
图3为本发明实施例提供的一种适用于客户端的基于分布式存储系统的数据传输装置的结构示意图,包括建立单元31、存储单元32、发送单元33和传输单元34;
建立单元31,用于预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;
存储单元32,用于依据消息数据所属的数据类型,将消息数据存储至相应的工作队列;其中,线程池中包括每种类型的工作队列所对应的线程;
发送单元33,用于调用工作队列相匹配的线程,以将工作队列中的消息数据发送到网卡;
传输单元34,用于根据设定的网络协议将网卡上的消息数据传输至服务端。
可选地,发送单元具体用于利用与工作队列相匹配的线程,将工作队列中的消息数据按照先入先出原则通过套接字接口发送到网卡。
可选地,还包括判断单元和获取单元;
判断单元,用于判断网卡的剩余存储空间是否满足数据存储条件;若是,则触发发送单元执行利用与工作队列相匹配的线程,将工作队列中的消息数据按照先入先出原则通过套接字接口发送到网卡的步骤;若否,则触发获取单元;
获取单元,用于从预先设置的缓存区域内获取与消息数据的数据长度相匹配的缓存空间;将消息数据存储至缓存空间。
可选地,还包括释放单元;
释放单元,用于根据设定的网络协议将缓存空间上的消息数据传输至服务端之后释放缓存空间。
图3所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,客户端会预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;线程池中包括每种类型的工作队列所对应的线程,依据消息数据所属的数据类型,将消息数据存储至相应的工作队列,从而调用工作队列相匹配的线程,以将消息数据发送到网卡;并根据设定的网络协议将网卡上的消息数据传输至服务端。客户端通过设置线程池的方式可以实现对消息数据的及时处理,并且可以直接将消息数据传输至网卡,无需进行缓存,极大的降低了消息数据传输的延时。
图4为本发明实施例提供的一种适用于服务端的基于分布式存储系统的数据传输装置的结构示意图,包括检测单元41、拼接单元42和处理单元43;
检测单元41,用于当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;
拼接单元42,用于将读取的各消息数据进行拼接得到待处理数据;
处理单元43,用于按照待处理数据对应的处理规则,对待处理数据进行解析处理。
可选地,检测单元包括获取子单元、调用子单元和释放子单元;
获取子单元,用于当检测到套接字对应的缓存空间存在读写事件时,根据消息数据的数据长度,在内存池闲置区域内获取满足数据长度的内存块序列;
调用子单元,用于调用预先建立的线程池将读取的消息数据存储至内存块序列;
释放子单元,用于当完成待处理数据的处理后,释放内存块序列。
图4所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,服务端检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照待处理数据对应的处理规则,对待处理数据进行解析处理。服务端通过检测套接字对应的缓存空间,可以及时发现客户端传输来的消息数据,有效的避免了执行无效的IO读写操作,提高了数据处理的带宽。并且服务端通过线程池中包含的多个线程可以实现对消息数据的并行处理,无需进行缓存,极大的提升了消息数据的处理效率。
图5为本发明实施例提供的一种基于分布式存储系统的数据传输系统50的结构示意图,包括客户端51和服务端52;
客户端51,用于预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;依据消息数据所属的数据类型,将消息数据存储至相应的工作队列;其中,线程池中包括每种类型的工作队列所对应的线程;调用工作队列相匹配的线程,以将工作队列中的消息数据发送到网卡;根据设定的网络协议将网卡上的消息数据传输至服务端52;
服务端52,用于当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照待处理数据对应的处理规则,对待处理数据进行解析处理。
以上对本发明实施例所提供的一种基于分布式存储系统的数据传输方法、装置和系统进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
Claims (5)
1.一种基于分布式存储系统的数据传输方法,其特征在于,包括:
预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;
依据消息数据所属的数据类型,将所述消息数据存储至相应的工作队列;其中,所述线程池中包括每种类型的工作队列所对应的线程;
判断网卡的剩余存储空间是否满足数据存储条件;
若是,则调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡;
若否,则从预先设置的缓存区域内获取与所述消息数据的数据长度相匹配的缓存空间;将所述消息数据存储至所述缓存空间;
根据设定的网络协议将所述网卡上的消息数据传输至服务端,以便于服务端检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照所述待处理数据对应的处理规则,对所述待处理数据进行解析处理。
2.根据权利要求1所述的方法,其特征在于,所述调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡包括:
利用与所述工作队列相匹配的线程,将所述工作队列中的消息数据按照先入先出原则通过套接字接口发送到所述网卡。
3.根据权利要求1所述的方法,其特征在于,在所述将所述消息数据存储至所述缓存空间之后还包括:
根据设定的网络协议将所述缓存空间上的消息数据传输至服务端之后释放所述缓存空间。
4.一种基于分布式存储系统的数据传输装置,其特征在于,包括建立单元、存储单元、发送单元和传输单元;
所述建立单元,用于预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;
所述存储单元,用于依据消息数据所属的数据类型,将所述消息数据存储至相应的工作队列;其中,所述线程池中包括每种类型的工作队列所对应的线程;
所述发送单元,用于调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到网卡;
所述传输单元,用于根据设定的网络协议将所述网卡上的消息数据传输至服务端,以便于服务端检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照所述待处理数据对应的处理规则,对所述待处理数据进行解析处理;
还包括判断单元和获取单元;
所述判断单元,用于判断所述网卡的剩余存储空间是否满足数据存储条件;若是,则触发所述发送单元执行所述调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡的步骤;若否,则触发所述获取单元;
所述获取单元,用于从预先设置的缓存区域内获取与所述消息数据的数据长度相匹配的缓存空间;将所述消息数据存储至所述缓存空间。
5.一种基于分布式存储系统的数据传输系统,其特征在于,包括客户端和服务端;
所述客户端,用于预先建立与每种数据类型相匹配的线程,以得到包含多个线程的线程池;依据消息数据所属的数据类型,将所述消息数据存储至相应的工作队列;其中,所述线程池中包括每种类型的工作队列所对应的线程;判断网卡的剩余存储空间是否满足数据存储条件;若是,则调用所述工作队列相匹配的线程,以将所述工作队列中的消息数据发送到所述网卡;若否,则从预先设置的缓存区域内获取与所述消息数据的数据长度相匹配的缓存空间;将所述消息数据存储至所述缓存空间;根据设定的网络协议将所述网卡上的消息数据传输至服务端;
所述服务端,用于当检测到套接字对应的缓存空间存在读写事件时,调用预先建立的线程池读取消息数据;将读取的各消息数据进行拼接得到待处理数据;按照所述待处理数据对应的处理规则,对所述待处理数据进行解析处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010327804.8A CN111522663B (zh) | 2020-04-23 | 2020-04-23 | 一种基于分布式存储系统的数据传输方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010327804.8A CN111522663B (zh) | 2020-04-23 | 2020-04-23 | 一种基于分布式存储系统的数据传输方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522663A CN111522663A (zh) | 2020-08-11 |
CN111522663B true CN111522663B (zh) | 2022-08-19 |
Family
ID=71903866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010327804.8A Active CN111522663B (zh) | 2020-04-23 | 2020-04-23 | 一种基于分布式存储系统的数据传输方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522663B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112737812B (zh) * | 2020-11-24 | 2023-04-07 | 国网商旅云技术有限公司 | 一种数据传输方法及装置 |
CN115174214A (zh) * | 2022-07-05 | 2022-10-11 | 中孚安全技术有限公司 | 一种操作系统应用层全局网络抓包方法及系统 |
CN115348321B (zh) * | 2022-08-12 | 2024-04-26 | 中国建设银行股份有限公司 | 一种基于流量控制的数据获取方法及相关装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
CN103530172A (zh) * | 2012-07-03 | 2014-01-22 | 上海宝信软件股份有限公司 | 一种基于nio的简易高效的socket通信框架 |
-
2020
- 2020-04-23 CN CN202010327804.8A patent/CN111522663B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
CN103530172A (zh) * | 2012-07-03 | 2014-01-22 | 上海宝信软件股份有限公司 | 一种基于nio的简易高效的socket通信框架 |
Also Published As
Publication number | Publication date |
---|---|
CN111522663A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522663B (zh) | 一种基于分布式存储系统的数据传输方法、装置和系统 | |
CN108270732B (zh) | 一种流媒体处理方法及系统 | |
CN108124003B (zh) | 网络管理设备连接处理方法、装置及系统 | |
US7571247B2 (en) | Efficient send socket call handling by a transport layer | |
EP2843908B1 (en) | Full-duplex bi-directional communication over a remote procedure call based communications protocol, and applications thereof | |
CN108449239B (zh) | 心跳包检测方法、装置、设备和存储介质 | |
US5878228A (en) | Data transfer server with time slots scheduling base on transfer rate and predetermined data | |
US6014707A (en) | Stateless data transfer protocol with client controlled transfer unit size | |
CN109547511B (zh) | 一种web消息实时推送方法、服务器、客户端及系统 | |
US20080049617A1 (en) | System for fine grained flow-control concurrency to prevent excessive packet loss | |
JP5908915B2 (ja) | 伝送制御プロトコルの通信方法およびサーバ | |
CN106612284B (zh) | 一种流数据的传输方法和装置 | |
CN112631788B (zh) | 数据传输方法及数据传输服务器 | |
CN109992433B (zh) | 一种分布式tgt通信优化方法、装置、设备及存储介质 | |
EP3873067A1 (en) | Data transmission method and apparatus | |
CN109547162B (zh) | 基于两套单向边界的数据通信方法 | |
Shen et al. | On TCP-based SIP server overload control | |
CN113259415B (zh) | 一种网络报文处理方法、装置及网络服务器 | |
CN112765119A (zh) | Hdfs api的调用方法、装置、设备及存储介质 | |
CN110933171A (zh) | 一种服务器异步通信方法、装置、设备及计算机存储介质 | |
US11956300B2 (en) | Message switching | |
CN108429703B (zh) | Dhcp客户端上线方法及装置 | |
JP2007013449A (ja) | シェーパー制御方法、データ通信システム、ネットワークインタフェース装置及びネットワーク中継装置 | |
CN108234595B (zh) | 日志传输方法及系统 | |
CN111277599A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |