一种数据传输方法、装置、计算机可读存储介质和计算机设备

文档序号:948178 发布日期:2020-10-30 浏览:6次 >En<

阅读说明:本技术 一种数据传输方法、装置、计算机可读存储介质和计算机设备 (Data transmission method and device, computer readable storage medium and computer equipment ) 是由 陈亚川 苗辉 于 2019-04-30 设计创作,主要内容包括:本发明提供了一种数据传输方法、装置、计算机可读存储介质和计算机设备。涉及数据通信技术,解决了发送端数据缓存过程中资源消耗大、部署不便等问题。该方法包括:在内存中创建内存缓冲单元,将待发送数据写入所述内存缓冲单元;在所述内存缓冲单元写满后,将所述内存缓冲单元中存储的数据序列化到磁盘;创建新的内存缓冲单元,继续向所述内存缓冲单元中写入待发送数据。本发明提供的技术方案适用于数据跨网传输,实现了适应各种网络环境的低风险、简化的数据缓存。(The invention provides a data transmission method, a data transmission device, a computer readable storage medium and computer equipment. The method relates to a data communication technology, and solves the problems of large resource consumption, inconvenience in deployment and the like in the data caching process of a sending end. The method comprises the following steps: creating a memory buffer unit in a memory, and writing data to be sent into the memory buffer unit; after the memory buffer unit is fully written, serializing the data stored in the memory buffer unit to a disk; and creating a new memory buffer unit, and continuously writing data to be sent into the memory buffer unit. The technical scheme provided by the invention is suitable for data cross-network transmission, and realizes low-risk and simplified data caching suitable for various network environments.)

一种数据传输方法、装置、计算机可读存储介质和计算机设备

技术领域

本发明涉及数据通信技术,尤其涉及一种数据传输方法、装置、计算机可读存储介质和计算机设备。

背景技术

数据跨网传输中,由于网络质量变差、运营商割接、网络故障等原因,会导致数据传输速度缓慢甚至传输中断。当数据发送端为被动接受待发送数据时,新增数据会占用大量的内存空间,甚至触发内存溢出(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)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质等。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明的意图也包含这些改动和变型在内。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种数据预读取的优化方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类