CN111858399B - 一种数据传输方法、装置、计算机可读存储介质和计算机设备 - Google Patents
一种数据传输方法、装置、计算机可读存储介质和计算机设备 Download PDFInfo
- Publication number
- CN111858399B CN111858399B CN201910365294.0A CN201910365294A CN111858399B CN 111858399 B CN111858399 B CN 111858399B CN 201910365294 A CN201910365294 A CN 201910365294A CN 111858399 B CN111858399 B CN 111858399B
- Authority
- CN
- China
- Prior art keywords
- buffer unit
- memory buffer
- data
- memory
- disk
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000005540 biological transmission Effects 0.000 title claims abstract description 43
- 230000015654 memory Effects 0.000 claims abstract description 291
- 239000000872 buffer Substances 0.000 claims abstract description 277
- 238000004590 computer program Methods 0.000 claims description 17
- 230000002688 persistence Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 19
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000004891 communication Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 230000015556 catabolic process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 101000901617 Notophthalmus viridescens Homeobox protein DLX-3 Proteins 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供了一种数据传输方法、装置、计算机可读存储介质和计算机设备。涉及数据通信技术,解决了发送端数据缓存过程中资源消耗大、部署不便等问题。该方法包括:在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元;在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘;创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。本发明提供的技术方案适用于数据跨网传输,实现了适应各种网络环境的低风险、简化的数据缓存。
Description
技术领域
本发明涉及数据通信技术,尤其涉及一种数据传输方法、装置、计算机可读存储介质和计算机设备。
背景技术
数据跨网传输中,由于网络质量变差、运营商割接、网络故障等原因,会导致数据传输速度缓慢甚至传输中断。当数据发送端为被动接受待发送数据时,新增数据会占用大量的内存空间,甚至触发内存溢出(OOM)导致进程崩溃。即使发送端进程未崩溃,缓存待发送数据占用大量内存也会影响其他进程服务。
以开源软件Flume为例,Flume使用channel组件作为数据缓冲区,常用的channel类型有内存和文件等,使用Flume管理数据缓冲区存在如下问题:
1.内存类型的channel只占用内存缓存数据,性能高,但是进程重启后会丢失数据,可靠性较差;且在网络阻塞时,大量消耗内存资源,容易发生OOM。
2.文件类型的channel所有数据传输都会占用磁盘I/O,大量消耗磁盘资源。
3.其他类型channel依赖第三方软件,不方便部署。
综上,发送端数据缓存过程中存在资源消耗大、部署不便等问题。
发明内容
本发明旨在解决上面描述的问题。
根据本发明的一方面,提供了一种数据传输方法,包括:
在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元;
在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘;
创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。
优选的,在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘的步骤包括:
在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化为磁盘上的磁盘缓冲单元;
释放所述内存缓冲单元占用的内存。
优选的,该方法还包括:
设置磁盘缓冲数据量上限;
在序列化至所述磁盘的数据量达到所述磁盘缓冲数据量上限时,停止创建新的内存缓冲单元。
优选的,所述创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据的步骤包括:
所述内存中的内存缓冲单元与所述磁盘上的磁盘缓冲单元按照创建时序形成链表结构。
优选的,该方法还包括:
在所述内存缓冲单元中存在待发送数据时,将所述内存缓冲单元中的待发送数据取出并发送。
优选的,该方法还包括:
在所述内存缓冲单元为空时,转向所述内存缓冲单元指向的下一个内存缓冲单元;
将所述下一个内存缓冲单元中的待发送数据取出并发送。
优选的,该方法还包括:
在所述内存缓冲单元为空,且所述内存缓冲单元指向一个磁盘缓冲单元时,转向所述内存缓冲单元指向的下一个磁盘缓冲单元;
释放所述内存缓冲单元占用的内存,将所述下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元;
将所述新的内存缓冲单元中的待发送数据取出并发送。
根据本发明的另一方面,还提供了一种数据传输装置,包括:
内存缓冲区管理模块,用于在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元,在内存缓冲单元被写满序列到磁盘后,创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据;
数据持久化管理模块,用于在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘。
优选的,所述内存缓冲区管理模块,还用于在所述内存缓冲单元中存在待发送数据时,将所述内存缓冲单元中的待发送数据取出并发送,或,
在所述内存缓冲单元为空时,转向所述内存缓冲单元指向的下一个内存缓冲单元,释放所述内存缓冲单元占用的内存空间,并将所述下一个内存缓冲单元中的待发送数据取出并发送,或,
在所述内存缓冲单元为空,且所述内存缓冲单元指向一个磁盘缓冲单元,转向所述内存缓冲单元指向的下一个磁盘缓冲单元,释放所述内存缓冲单元占用的内存,将所述下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元,将所述新的内存缓冲单元中的待发送数据取出;
所述数据持久化管理模块,将所述内存缓冲单元指向的下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元。
根据本发明的又一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如上述方法的步骤。
根据本发明的又一方面,还提供了一种计算机设备,包括处理器、存储器和存储于所述存储器上的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本发明提供了一种数据传输方法、装置、计算机可读存储介质和计算机设备。在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元,在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘,再创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。适应了网络传输环境不断变化的特性,在网络通畅时保持高吞吐量,在网络阻塞时不中断进程,并且始终保持较少的资源占用。解决了发送端数据缓存过程中资源消耗大、部署不便等问题,实现了适应各种网络环境的低风险、简化的数据缓存,提升了程序的可靠性。
参照附图来阅读对于示例性实施例的以下描述,本发明的其他特性特征和优点将变得清晰。
附图说明
并入到说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与描述一起用于解释本发明的原理。在这些附图中,类似的附图标记用于表示类似的要素。下面描述中的附图是本发明的一些实施例,而不是全部实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。
图1示例性地示出了本发明的一实施例提供的一种数据传输方法的流程;
图2示例性地示出了图1中步骤101的具体流程;
图3示例性地示出了一种具体的常规缓冲单元及缓冲区实现方式;
图4示例性地示出了图1中步骤102的具体流程;
图5示例性地示出了一种具体的创建临时缓冲单元的实现方式;
图6示例性地示出了一种将缓冲区中的数据序列化至磁盘的实现方式;
图7示例性地示出了本发明的一实施例提供的又一种数据传输方法的流程;
图8示例性地示出了发送组件读取各缓冲单元数据的一种具体实现方式;
图9示例性地示出了本发明的一实施例提供的一种数据传输装置的结构;
图10示例性地示出了图9中缓冲单元管理模块901的结构;
图11示例性地示出了图9中数据持久化管理模块902的结构;
图12示例性地示出了本发明的一实施例提供的一种数据传输装置的结构;
图13示例性地示出了本发明的一实施例提供的又一种数据传输装置的结构;
图14示例性地示出了本发明的一实施例提供的一种计算机设备的结构。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
数据跨网传输中,由于网络质量变差、运营商割接、网络故障等原因,会导致数据传输速度缓慢甚至传输中断。当数据发送端为被动接受待发送数据时,新增数据会占用大量的内存空间,甚至触发OOM导致进程崩溃。即使发送端进程未崩溃,缓存待发送数据占用大量内存也会影响其他进程服务。
为了解决上述问题,本发明的实施例提供了一种数据传输方法、装置和计算机设备。在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元,在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘,再创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。适应了网络传输环境不断变化的特性,在网络通畅时保持高吞吐量,在网络阻塞时不中断进程,并且始终保持较少的资源占用。
本发明的一实施例提供了一种数据传输方法,使用该方法完成数据传输的流程如图1所示,包括:
步骤101、在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元。
本步骤具体如图2所示,包括:
步骤1011、在内存中创建内存缓冲单元。
本步骤中,定义内存缓冲单元容量上限,以限制缓冲数据占用的内存资源,保障其他进程的内存使用。优选的,系统中最多创建并存在两个内存缓冲单元,正常情况下,在内存中存在一个内存缓冲单元进行数据缓存。
例如,一个Box作为一个缓冲单元,是一个固定大小内存空间,在Box内部使用FIFO队列数据结构。
如图3所示,Box1即为内存缓冲单元,同时连接接收组件与发送组件,进行待发送数据的接收与发送。
步骤1012、向所述内存缓冲单元写入待发送数据。
步骤102、在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘。
本步骤具体如图4所示,包括:
步骤1021、在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化为磁盘上的磁盘缓冲单元。
步骤1022、释放所述内存缓冲单元占用的内存。
具体的,在所述内存缓冲单元Box1写满后,创建一个新的内存缓冲单元Box2,继续向所述内存缓冲单元Box2写入待发送数据。
网络通畅时,内存中一般仅存在一个Box1,接收组件把数据写入Box1,发送组件从Box1中读取数据,数据出队列的速度比进入队列的速度快,队列一直不会被填满。当队列为空时,发送组件会尝试从连接下一个Box,即Box2,如图5所示。如果Box2不存在,刚仍连接Box1等待写入,此时有个超时判定,超时后,会重新尝试连接下一个Box或继续等待。
当发生网络阻塞或中断时,数据出队列速度会小于进入队列速度,Box1会被写满,此时会创建一个新Box2作为临时缓冲单元,继续写入,Box集合是链表结构。
当Box2写满时,并且此时没有发送组件连接Box2,如果再接收到新数据,会将写满的Box2,序列化为磁盘缓冲单元,如图6所示。
步骤103、创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。
本发明实施例中,优选的,可设置磁盘缓冲数据上限,在序列化至所述磁盘的数据量达到所述磁盘缓冲数据上限时,停止创建新的内存缓冲单元。这样就限制了缓存数据占用的磁盘空间,使磁盘空间利用合理化。
优选的,所述内存中的内存缓冲单元与所述磁盘上的磁盘缓冲单元按照创建时序形成链表结构。在内存中存在两个内存缓冲单元时,链表的首尾均为内存缓冲单元,中间刚为磁盘缓冲单元。
具体如图6所示,在Box2序列化至磁盘后,创建一个新的Box3,继续写入数据,如果网络持续阻塞,会持续创建Box4、Box5……BoxN,一直到设置的磁盘中Box数量上限或磁盘空间不足时,程序退出。
本发明的一实施例还提供了一种数据传输方法,通过发送组件取出待发送数据并发送的流程如图7所示,包括:
步骤701、在所述内存缓冲单元中存在待发送数据时,将所述内存缓冲单元中的待发送数据取出并发送。
步骤702、在所述内存缓冲单元为空时,转向所述内存缓冲单元指向的下一个内存缓冲单元。
如图8所示,当Box1的数据为空时,发送组件会尝试读取Box2。
步骤703、将所述下一个内存缓冲单元中的待发送数据取出并发送。在该下一个内存缓冲单元中的待发送数据全部被取出后,释放该内存缓冲单元。
步骤704、在所述内存缓冲单元为空,且所述内存缓冲单元指向一个磁盘缓冲单元,转向所述内存缓冲单元指向的下一个磁盘缓冲单元。
步骤705、释放所述内存缓冲单元占用的内存,将所述下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元。
步骤706、将所述新的内存缓冲单元中的待发送数据取出并发送。
具体的,如果下一个Box2是持久化在磁盘中,就释放当前Box1的内存,并且从磁盘加载Box2到内存中;如果下一个Box2是在内存中的Box,就直接读取该Box2。
本发明的一实施例还提供了一种数据传输装置,其结构如图9所示,包括:
缓冲单元管理模块901,用于在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元;释放内存缓冲单元占用的内存空间,维护内存缓冲单元与磁盘缓冲单元的链表关系。
数据持久化管理模块902,用于在所述内存缓冲单元写满后,将所述内存缓冲单元中的全部数据序列化为磁盘缓冲单元。
优选的,所述缓冲单元管理模块901的结构如图10所示,包括:
缓冲单元创建单元9011,用于在内存中创建内存缓冲单元,定义所述内存缓冲单元的容量上限,
在所述内存缓冲单元写满后,创建最多一个新的内存缓冲单元;
数据写入单元9012,用于向所述内存缓冲单元写入待发送数据,在所述内存缓冲单元写满后,继续向所述新建内存缓冲单元写入待发送数据。
内存释放单元9013,用于将所述内存缓冲单元原本占用的内存空间释放;
数据读取单元9014,用于读取内存缓冲单元中的数据,负责阻塞等待内存缓冲单元中的数据写入;
缓存单元链表管理单元9015,用于控制数据序列化和反序列化,并将内存缓冲单元和磁盘缓冲单元按照创建时序形成链表结构。
优选的,所述数据持久化管理模块902的结构如图11所示,包括:
数据持久化单元9021,用于在所述内存缓冲单元写满后,将被写满的内存缓冲单元序列化为磁盘缓冲单元;
数据反序列化单元9022,用于将磁盘缓冲单元反序列化为内存缓冲单元。
本发明的一实施例还提供了一种数据传输装置,其结构如图12所示,包括:
内存缓冲区管理模块1201,用于在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元,在内存缓冲单元被写满序列到磁盘后,创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据;
数据持久化管理模块1202,用于在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘。
优选的,所述内存缓冲区管理模块1201,还用于在所述内存缓冲单元中存在待发送数据时,将所述内存缓冲单元中的待发送数据取出。
在所述内存缓冲单元为空,且内存中只存在一个内存缓冲单元时,发送组件会等待,直到所述内存缓冲单元中写入新的数据;
在所述内存缓冲单元为空时,转向所述内存缓冲单元指向的下一个内存缓冲单元,释放所述内存缓冲单元占用的内存空间,并将所述下一个内存缓冲单元中的待发送数据取出,或,
在所述内存缓冲单元为空,且所述内存缓冲单元指向一个磁盘缓冲单元,转向所述内存缓冲单元指向的下一个磁盘缓冲单元,释放所述内存缓冲单元占用的内存,将所述下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元,将所述新的内存缓冲单元中的待发送数据取出。
优选的,所述数据传输装置的结构如图13所示,还包括:
数据发送模块1203,用于在收到获取数据请求时,触发所述内存缓冲区管理模块1201取出数据的操作,并发送取出的数据。
本发明的一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明的实施例所提供的数据传输方法的步骤。
本发明的一实施例还提供了一种计算机设备,其结构如图14所示,包括处理器、存储器和存储于所述存储器上的计算机程序,所述处理器执行所述计算机程序时实现如本发明的实施例所提供的数据传输方法的步骤。
本发明的实施例提供了一种数据传输方法、装置、计算机可读存储介质和计算机设备。在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元,在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘,再创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。适应了网络传输环境不断变化的特性,在网络通畅时保持高吞吐量,在网络阻塞时不中断进程,并且始终保持较少的资源占用。解决了发送端数据缓存过程中资源消耗大、部署不便等问题,实现了适应各种网络环境的低风险、简化的数据缓存,提升了程序的可靠性。
当发送组件受阻时,进程最多会占用2个缓冲单元的内存空间,其余的新增数据会按顺序写入磁盘,只有当磁盘写满时,进程才会中止。降低了进程退出的风险,减少了网络阻塞或中断造成的后续操作,提升了程序可靠性。
本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质,包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质等。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明的意图也包含这些改动和变型在内。
Claims (9)
1.一种数据传输方法,其特征在于,包括:
在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元;
在所述内存缓冲单元写满后,创建新的内存缓冲单元,向所述新的内存缓冲单元写入待发送数据,当所述新的内存缓冲单元写满后,将所述新的内存缓冲单元中存储的数据序列化到磁盘;
继续创建新的内存缓冲单元,继续向所述新的内存缓冲单元中写入待发送数据;所述内存中的内存缓冲单元与所述磁盘上的磁盘缓冲单元按照创建时序形成链表结构,链表的首尾均为内存缓冲单元,中间为磁盘缓冲单元;
在所述新的内存缓冲单元写满后,将所述新的内存缓冲单元中存储的数据序列化到磁盘包括:
在所述新的内存缓冲单元写满后,将所述新的内存缓冲单元中存储的数据序列化为磁盘上的磁盘缓冲单元;
释放所述新的内存缓冲单元占用的内存。
2.根据权利要求1所述的数据传输方法,其特征在于,该方法还包括:
设置磁盘缓冲数据量上限;
在序列化至所述磁盘的数据量达到所述磁盘缓冲数据量上限时,停止创建新的内存缓冲单元。
3.根据权利要求1所述的数据传输方法,其特征在于,该方法还包括:
在所述内存缓冲单元中存在待发送数据时,将所述内存缓冲单元中的待发送数据取出并发送。
4.根据权利要求1所述的数据传输方法,其特征在于,该方法还包括:
在所述内存缓冲单元为空时,转向所述内存缓冲单元指向的下一个内存缓冲单元或磁盘缓冲单元;
将所述下一个内存缓冲单元或磁盘缓冲单元中的待发送数据取出并发送。
5.根据权利要求4所述的数据传输方法,其特征在于,该方法还包括:
在所述内存缓冲单元为空,且所述内存缓冲单元指向一个磁盘缓冲单元时,转向所述内存缓冲单元指向的下一个磁盘缓冲单元;
释放所述内存缓冲单元占用的内存,将所述下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元;
将所述新的内存缓冲单元中的待发送数据取出并发送。
6.一种数据传输装置,其特征在于,包括:
内存缓冲区管理模块,用于在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元,在所述内存缓冲单元写满后,创建新的内存缓冲单元,向所述新的内存缓冲单元写入待发送数据,当所述新的内存缓冲单元写满后,继续创建新的内存缓冲单元,继续向所述新的内存缓冲单元中写入待发送数据;
数据持久化管理模块,用于在所述新的内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘;所述内存中的内存缓冲单元与所述磁盘上的磁盘缓冲单元按照创建时序形成链表结构,链表的首尾均为内存缓冲单元,中间为磁盘缓冲单元;
在所述新的内存缓冲单元写满后,将所述新的内存缓冲单元中存储的数据序列化到磁盘包括:
在所述新的内存缓冲单元写满后,将所述新的内存缓冲单元中存储的数据序列化为磁盘上的磁盘缓冲单元;
释放所述新的内存缓冲单元占用的内存。
7.根据权利要求6所述的数据传输装置,其特征在于,
所述内存缓冲区管理模块,还用于在所述内存缓冲单元中存在待发送数据时,将所述内存缓冲单元中的待发送数据取出并发送,或
在所述内存缓冲单元为空时,转向所述内存缓冲单元指向的下一个内存缓冲单元,释放所述内存缓冲单元占用的内存空间,并将所述下一个内存缓冲单元中的待发送数据取出并发送,或
在所述内存缓冲单元为空,且所述内存缓冲单元指向一个磁盘缓冲单元,转向所述内存缓冲单元指向的下一个磁盘缓冲单元,释放所述内存缓冲单元占用的内存,将所述下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元,将所述新的内存缓冲单元中的待发送数据取出;
所述数据持久化管理模块,将所述内存缓冲单元指向的下一个磁盘缓冲单元反序列化为内存中的新的内存缓冲单元。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被执行时实现如权利要求1-5中任意一项所述方法的步骤。
9.一种计算机设备,包括处理器、存储器和存储于所述存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-5中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910365294.0A CN111858399B (zh) | 2019-04-30 | 2019-04-30 | 一种数据传输方法、装置、计算机可读存储介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910365294.0A CN111858399B (zh) | 2019-04-30 | 2019-04-30 | 一种数据传输方法、装置、计算机可读存储介质和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858399A CN111858399A (zh) | 2020-10-30 |
CN111858399B true CN111858399B (zh) | 2023-11-24 |
Family
ID=72966747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910365294.0A Active CN111858399B (zh) | 2019-04-30 | 2019-04-30 | 一种数据传输方法、装置、计算机可读存储介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858399B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005166073A (ja) * | 2005-02-21 | 2005-06-23 | Hitachi Ltd | 記憶装置の制御装置および制御方法 |
CN1704910A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
CN1874490A (zh) * | 2006-06-30 | 2006-12-06 | 华中科技大学 | 一种用于对等网络视频点播系统的磁盘缓存方法 |
CN101149668A (zh) * | 2007-11-02 | 2008-03-26 | 杭州华三通信技术有限公司 | 一种包括读写缓存的存储设备及缓存实现方法 |
CN101556557A (zh) * | 2009-05-14 | 2009-10-14 | 浙江大学 | 一种基于对象存储设备的对象文件组织方法 |
CN103049219A (zh) * | 2012-12-12 | 2013-04-17 | 华中科技大学 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
CN103309767A (zh) * | 2012-03-08 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN104536908A (zh) * | 2014-11-05 | 2015-04-22 | 北京中安比特科技有限公司 | 一种面向单机的海量小记录高效存储管理方法 |
CN105138410A (zh) * | 2015-08-31 | 2015-12-09 | 北京锐安科技有限公司 | 一种基于磁盘缓存的消息队列的实现方法及装置 |
CN108959124A (zh) * | 2018-05-04 | 2018-12-07 | 广东睿江云计算股份有限公司 | 基于动态缓冲的虚拟机磁盘复制过程写入方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4322068B2 (ja) * | 2003-03-07 | 2009-08-26 | 富士通株式会社 | ストレージシステム及びそのデイスク負荷バランス制御方法 |
-
2019
- 2019-04-30 CN CN201910365294.0A patent/CN111858399B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704910A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
JP2005166073A (ja) * | 2005-02-21 | 2005-06-23 | Hitachi Ltd | 記憶装置の制御装置および制御方法 |
CN1874490A (zh) * | 2006-06-30 | 2006-12-06 | 华中科技大学 | 一种用于对等网络视频点播系统的磁盘缓存方法 |
CN101149668A (zh) * | 2007-11-02 | 2008-03-26 | 杭州华三通信技术有限公司 | 一种包括读写缓存的存储设备及缓存实现方法 |
CN101556557A (zh) * | 2009-05-14 | 2009-10-14 | 浙江大学 | 一种基于对象存储设备的对象文件组织方法 |
CN103309767A (zh) * | 2012-03-08 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN103049219A (zh) * | 2012-12-12 | 2013-04-17 | 华中科技大学 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
CN104536908A (zh) * | 2014-11-05 | 2015-04-22 | 北京中安比特科技有限公司 | 一种面向单机的海量小记录高效存储管理方法 |
CN105138410A (zh) * | 2015-08-31 | 2015-12-09 | 北京锐安科技有限公司 | 一种基于磁盘缓存的消息队列的实现方法及装置 |
CN108959124A (zh) * | 2018-05-04 | 2018-12-07 | 广东睿江云计算股份有限公司 | 基于动态缓冲的虚拟机磁盘复制过程写入方法及装置 |
Non-Patent Citations (3)
Title |
---|
Mnemosyne: lightweight persistent memory;Haris Volos等;《ACM SIGARCH Computer Architecture News》;第39卷(第01期);91–104 * |
一种数据表实时备份系统的高速缓存方法;郭丹 等;《四川大学学报(自然科学版)》;第47卷(第05期);998-1002 * |
分布式视频流存储系统的设计与实现;张宇露;《中国优秀硕士论文电子期刊网 信息科技辑》(第2期);第28-44页,图4-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN111858399A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102684976B (zh) | 一种基于ddr sdram进行数据读写的方法、装置及系统 | |
CN110532205B (zh) | 数据传输方法、装置、计算机设备和计算机可读存储介质 | |
US20190324814A1 (en) | Resource release method, resource allocation method, devices, and computer program products | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
CN109951494B (zh) | 仿真数据处理方法、装置、仿真设备及存储介质 | |
CN115827506A (zh) | 数据写入方法、数据读取方法、装置、处理核和处理器 | |
US7213245B2 (en) | Software on demand system | |
CN111858399B (zh) | 一种数据传输方法、装置、计算机可读存储介质和计算机设备 | |
CN113742290A (zh) | 一种数据存储方法、装置、存储介质及电子装置 | |
CN113821191A (zh) | 一种可配置fifo深度的装置及方法 | |
CN111562883B (zh) | 固态硬盘的缓存管理系统、方法、装置 | |
US20150121376A1 (en) | Managing data transfer | |
CN105450679A (zh) | 进行数据云存储的方法及系统 | |
CN109039804B (zh) | 一种文件读取方法和电子设备 | |
CN112235206A (zh) | 一种基于单片机的环形缓冲队列数据接收机制 | |
CN115002052B (zh) | 一种分层的缓存控制器、控制方法及控制设备 | |
CN110830385A (zh) | 一种捕包处理方法、网络设备、服务器及存储介质 | |
CN115269453A (zh) | 数据收发方法、处理器、电子设备和计算机系统 | |
CN115237607A (zh) | 内存配置方法、装置、电子设备及存储介质 | |
CN110716923B (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN113641614A (zh) | 基于spi的单通道多业务并行处理方法及芯片 | |
CN114827300A (zh) | 硬件保障的数据可靠传输系统、控制方法、设备及终端 | |
CN114401235A (zh) | 一种队列管理中重载处理方法、系统、介质、设备及应用 | |
CN108107750B (zh) | 一种电力系统仿真的实时io数据处理方法及系统 | |
JP2022552150A (ja) | データ構造、メモリ手段、および装置 |
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 |