面向视频文件大数据的RDMA混合传输方法、系统及介质
文献发布时间:2023-06-19 09:54:18
技术领域
本发明涉及计算机系统结构技术领域,具体地,涉及一种面向视频文件大数据的RDMA混合传输方法、系统及介质。
背景技术
远程直接内存访问(Remote Direct Memory Access,RDMA)是指在没有双方主机操作系统直接参与下,直接访问远端内存,从而提供高带宽、低延迟的特性。
分布式环境下的数据传输决定了系统整体的I/O性能,这类技术被广泛的应用在分布式文件系统和数据库系统中。近年来互联网视频数据逐渐增多,而现有的分布式文件系统中,还没有系统能够针对视频流数据的实时传输特性,进行特异性的传输策略设计,很大的影响了用户的体验。
RDMA技术的广泛应用,使得分布式环境下的数据传输有了新的解决方案。RDMA的连接方式有三种,分别是可靠连接(Reliable Connections,RC)、不可靠连接(UnreliableConnections,UC)和不可靠数据报(Unreliable Datagrams,UD)。现有技术基本是采用了RC或者UD中的一种进行传输,没有办法充分利用两种传输各自的优点。
RDMA:Remote Direct Memory Access,远程直接内存访问,是指在没有双方主机操作系统直接参与下,直接访问远端内存,从而提供高带宽、低延迟的特性。
Metadata:元数据,主要是描述数据属性的信息,又被称为数据的数据。
NVM:Non-volatile Memory,非易失性内存,其特点是断电后信息不丢失,可字节寻址。
专利文献CN105657434B(申请号:201610036778.7)公开了一种基于数模混合的大数据辅助视频传输方法,包括步骤:1)基于信噪比最大化的无线视频传输系统,具体可分为:建立伪模拟视频传输框架,基于贝叶斯推理得到接收端重建视频信号的最小均方误差估计,最佳先验知识获取;2)基于数模混合的大数据辅助视频传输系统的信号发送端信号发送;3)基于数模混合的大数据辅助视频传输系统的信号接收端视频重建。我们假设发送端与接收端存在相同的云端数据,提取大数据中与传输信号最相关的信息用于辅助视频重建,通过最大化接收端信噪比提取最佳先验知识,在发送端制定相应标准决定是否传输原始视频信号,以节省传输带宽。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种面向视频文件大数据的RDMA混合传输方法、系统及介质。
根据本发明提供的面向视频文件大数据的RDMA混合传输方法,包括:
步骤1:RDMA初始化建立;
步骤2:获取视频数据请求;
步骤3:对视频数据请求进行识别分类;
步骤4:对视频数据请求进行传输。
优选地,所述步骤1包括:
步骤1.1:获取输入参数,包括网络地址和网络端口;
步骤1.2:对服务端节点进行地址绑定,并对服务端地址进行解析;
步骤1.3:解析成功后,发送客户端和服务端的连接请求;
步骤1.4:连接后在内存中创建保护区域,存放资源;创建完成队列,存放已完成的RDMA操作;创建发送队列和接收队列,存放RDMA的操作请求;对内存进行注册,将内存地址注册到保护区域,并创建两个关键字来指向内存注册区域;
所述连接请求包括三次握手操作。
优选地,所述步骤3包括:
分类视频数据,包括:
步骤3.1:设定视频数据识别逻辑;
步骤3.2:根据视频数据识别逻辑对发送目的地和时延要求进行判断分类;
步骤3.3:当视频数据的时延要求超出预设范围,发送请求时,归入立即发送队列;
当视频数据的时延要求在预设范围内,发送的目的地数量超出预设范围,发送请求时,归入广播队列;
当视频数据的时延要求在预设范围内,且发送目的地数量在预设范围内,发送请求时,归入等待队列。
优选地,所述步骤3包括:
分类视频元数据,包括:
步骤3.4:设定视频元数据识别逻辑;
步骤3.5:根据视频元数据识别逻辑对操作原语种类和时延要求进行判断分类;
步骤3.6:当视频元数据的时延要求超出预设范围并且进行RDMA编写的视频元数据请求时,归入快速发送队列;
当其他情形的视频元数据发送请求时,归入普通发送队列。
优选地,所述步骤4包括:
传输视频数据,包括:
步骤4.1:对立即发送队列中的请求进行处理,包括:根据发送目的地的数量,直接进行不可靠数据报单播发送或者不可靠数据报广播发送;
步骤4.2:对广播队列中的请求进行处理;
步骤4.3:对等待队列中的请求进行处理。
优选地,所述步骤4.2包括:
当处理立即发送队列为空时,将请求推送到立即发送队列进行发送;
当处理立即发送队列不为空时,在立即发送队列中设置发送计数器,当计数器满足预设广播发送阈值时,将广播队列中最靠前的请求推送到立即发送队列中进行发送,然后将计数器清零。
优选地,所述步骤4.3包括:
对视频数据大小进行判断;
当视频数据大小大于预设阈值时,立即进入待发送状态;
当视频数据大小小于预设阈值时,将视频数据与等待队列中其他相同目的地的视频数据进行合并,若合并后的视频数据大小超过预设阈值,则进入待发送状态;若不超过预设阈值,则继续寻找等待列队中其他相同目的地的视频数据进行合并;
当处理立即发送队列为空时,将待发送请求推送到立即发送队列进行发送;
当处理立即发送队列不为空时,在立即发送队列中设置发送计数器,当计数器满足预设单播发送阈值时,将队列中最靠前的待发送请求推送到立即发送队列中进行发送,然后将计数器清零。
优选地,所述步骤4包括:
传输视频元数据,包括:
步骤4.4:对快速发送队列中的请求进行处理,直接使用不可靠连接方式,进行RDMA编写;
步骤4.5:对普通发送队列中的请求,使用可靠连接方式,进行RDMA读取或者RDMA编写。
根据本发明提供的面向视频文件大数据的RDMA混合传输系统,包括:
模块M1:RDMA初始化建立;
模块M2:获取视频数据请求;
模块M3:对视频数据请求进行识别分类;
模块M4:对视频数据请求进行传输。
与现有技术相比,本发明具有如下的有益效果:
1、本发明针对分布式文件系统下视频大数据传输的问题,提供了一种RDMA混合传输方法,所述的方法和装置能够很好的降低视频大数据传输延迟;
2、本发明同时能够适配分布式非易失性内核态文件系统,优化了分布式系统中视频流的传输过程,具有良好的市场前景和应用价值。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例中装置总模块示意图;
图2是本发明实施例的使用RDMA的各种方法示意图;
图3是本发明实施例中智能传输模块示意图;
图4是本发明实施例中元数据发送流程的示意图;
图5是本发明实施例中数据发送流程的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
如图1所示,根据本发明提供的面向视频文件大数据的RDMA混合传输系统,包括:
智能传输模块,包括数据传输单元和元数据传输单元,该模块用于文件系统中视频数据的智能传输。
RDMA基础模块,包括初始化连接建立单元、网络通讯单元和事件获取与处理单元,该模块用于实现RDMA基础传输功能,为智能传输模块提供支持。
如图2,为使用RDMA的各种方法。在可靠连接模式下可实现各个原语;在不可靠连接模式下可实现send(with immediate)、receive、RDMA Write和RDMA Write(withimmediate);在不可靠数据报模式下可实现send(with immediate)、receive。
在所述智能传输模块中:
数据传输单元用于智能传输视频数据。该单元由智能识别系统和传输系统组成。
如图5,当上层文件系统发送视频数据传输的请求时,该请求首先会被放置到智能识别系统。
在智能识别系统中,根据视频数据的传输特点,特异性的设定了识别逻辑。识别逻辑会根据视频流的具体属性,对发送目的地和时延要求进行判断。时延要求非常高的视频数据,会不考虑发送目的地,直接归入立即发送队列。时延要求较低,且发送目的地较多的视频数据发送请求,会被归入广播队列。而时延要求较低,且发送目的地单一的视频数据发送请求,会被归入等待队列。
当数据请求识别完毕之后,会进入传输系统进行发送。根据请求分类的不同队列,进行不同的发送操作:
对于立即发送队列中的请求,会根据发送目的地的数量,直接进行不可靠数据报单播发送或者不可靠数据报广播发送。
对于广播队列中的请求,当立即发送队列为空时,请求会被依次推送到立即发送队列进行发送。若立即发送队列不为空时,立即发送队列中会设置发送计数器,当计数器满足广播发送阈值时,会将广播队列中最靠前的请求推送到立即发送队列中进行发送,然后将计数器清零。
对于等待队列中的请求,会对数据体大小进行判断。若数据体大小大于阈值,则立即进入待发送状态;若数据体大小小于阈值,会与队列中相同目的地的数据体进行合并操作,若合并后的大小超过阈值,则进入待发送状态;若不超过阈值,则继续寻找其他请求进行合并。对于待发送状态的请求,当立即发送队列为空时,请求会被依次推送到立即发送队列进行发送。若立即发送队列不为空时,立即发送队列中会设置发送计数器,当计数器满足单播发送阈值时,会将队列中最靠前的待发送请求推送到立即发送队列中进行发送,然后将计数器清零。
元数据传输单元用于智能传输视频元数据。该单元由智能识别系统和传输系统组成。
如图4,当上层文件系统发送视频元数据传输的请求时,该请求首先会被放置到智能识别系统。
在智能识别系统中,根据视频元数据的传输特点,特异性的设定了元数据识别逻辑。识别逻辑会根据视频流元数据的具体属性,对操作原语种类和时延要求进行判断。时延要求非常高并且进行RDMA Write的视频元数据请求,会被归入快速发送队列。而其他视频流元数据发送请求,会被归入普通发送队列。
当数据请求识别完毕之后,会进入传输系统进行发送。根据请求分类的不同队列,进行不同的发送操作:对于快速发送队列中的请求,会直接使用不可靠连接方式,进行RDMAWrite操作。对于普通发送队列中的请求,会使用可靠连接方式,进行RDMA Read操作或者RDMA Write操作。
在所述RDMA基础模块中:
初始化连接建立单元用来在大数据系统中对RDMA进行初始化,同时建立连接,该单元由获取设备,建立连接,创建资源等部分组成。
获取设备时,系统得到包括网络地址和网络端口在内的输入参数,该连接的服务端节点进行地址绑定,同时进行监听等待,与此同时,该连接的客户端节点对服务端地址进行解析,成功后尝试对服务端进行连接。
建立连接时,由客户端发起对服务端节点的连接请求,该请求由内核进行三次握手操作,顺利完成后返回,确保连接已经成功,完成后服务端节点进行接受请求操作,将最新建立的连接从队列中取出,为之后的操作提供支持。
创建资源时,由客户端和服务端分别独立进行。首先在内存中创建一块保护区域,用于存放资源。然后创建完成队列,用于存放已完成的RDMA操作,同时创建发送队列和接收队列,用于存放RDMA的操作请求。最后对内存进行注册,对于需要进行RDMA操作的内存,都要进行注册,将内存地址注册到保护区域,并创建两个key来指向内存注册区域。内存注册完成后,即完成RDMA初始化建立。
网络通讯单元用来提供具体的RDMA操作原语支持。具体包括Send/Recv原语支持、RDMA Read原语支持、RDMA Write原语支持等。
在Send/Recv原语支持中,接收端建立一个空的接收工作请求,并将请求放入接收队列,之后发送端使用IB_WR_SEND操作数来发送Send请求,并将请求放入发送队列。系统会自动检测发送队列中的请求,并将相应的数据发送到接收端的接收队列。
在RDMA Read原语支持中,请求端会将远端地址等参数封装在请求体中,操作数设置为IB_WR_RDMA_READ,并将该请求放入发送队列。系统会自动检测发送队列中的请求,并根据远端地址在远端进行读取数据,并在读取完毕之后将数据返回请求端的完成队列中。
在RDMA Write原语支持中,请求端会将远端地址、待写入数据地址等参数封装在请求体中,操作数设置为IB_WR_RDMA_WRITE,并将该请求放入发送队列。系统会自动检测发送队列中的请求,并根据远端地址和本地缓冲区地址在远端进行数据写入,并在写入完毕之后将写入成功信息返回请求端的完成队列中。
事件获取与处理单元提供连接管理事件和RDMA操作事件的状态通知,为用户提供当前状态信息。当连接状态发生改变时,事件获取单元会自动获取事件信息,然后触发与事件信息相对应的事件处理单元,对该事件进行处理;当完成队列中有新的请求完成进入,事件获取单元会自动获取完成信息,并触发与该请求完成种类相应的事件处理单元,对完成事件进行处理,更新状态或者获取传输的数据
在本发明的一个实施例中,当用户对数据进行写入时,本系统可以根据该写入类型,会给予不同的优先级与写入方法支持。若为对于多个机器相同信息的写入,将使用广播方式来进行统一的写入,写入延迟将大大减少。
如图3所示,在视频数据传输中,针对视频大数据的特点使用多种传输方式混合的传输架构。通过对数据和元数据传输方式的区分,既可以有效地降低数据延迟,对于可靠性要求比较高的元数据,也能同时保证其可靠性传输;而通过信息传输的方式进行智能识别,通过对优先级进行调度和对视频流中常见的多播数据传输进行支持,可以有效地降低数据传输的总延迟。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
- 面向视频文件大数据的RDMA混合传输方法、系统及介质
- 面向视频文件大数据的RDMA混合传输方法、系统及介质