数据的传输方法及装置与流程

文档序号:14518740阅读:164来源:国知局
数据的传输方法及装置与流程

本发明涉及互联网技术领域,特别是涉及一种数据的传输方法及装置。



背景技术:

随着互联网技术的快速发展,越来越多的用户更加倾向于使用互联网进行日常生活。例如:用户通过视频播放器或者直接使用网页播放视频等等。目前,在视频播放过程中,视频播放器或者网页会记录当前播放视频的实时数据,并将产生的实时日志数据发送至服务器,以便服务器根据该实时日志数据对当前播放视频进行实时分析。由于实时日志数据的数据量大,且分散,在具体应用中,服务器常通过flume对实时日志数据进行收集,其中flume一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。

flume包含两种类型的channel,第一种类型:memorychannel,第二种类型:filechannel,其中,第一种类型memorychannel是在flume内存中建立一个具有队列功能的channel通道,用于对于接收到的实时日志数据进行缓存;由于memorychannel类型的channel通道位于内存中,因此,第一种类型的flume处理实时日志数据的效率高。第二种类型filechannel是在flume的外部存储器中建立的一个channel通道;由于filechannel类型的channel通道位于外部存储器中,具有较大的存储空间,存储实时日志数据的数据量较大。

发明人在实现上述发明过程中,发现现有技术中在使用flume时,为了保持flume传输性能的高效性,可采用上述第一种类型memorychannel对实时日志数据进行处理;但是,由于服务器内存的有限性,memorychannel中存放的实时日志数据的数量有限,当接收实时日志数据的写入的速度大于memorychannel内实时日志数据移出的速度时,易产生内存溢出的异常。为了确保flume系统不会出现内存溢出的异常,可采用上述第二种类型采用filechannel对实时日志数据进行处理,filechannel建立在外部存储器上,存储实时日志数据的容纳量较大;但是,由于外部存储器的读写效率低于内存的读写效率,导致外部存储器内的filechannel写入或者移出实时日志数据的速度下降,从而导致整个flume系统处理实时日志数据的性能降低。



技术实现要素:

有鉴于此,本发明提供的一种数据的传输方法及装置,主要目的在于解决现有技术中flume系统对日志数据进行收集,若采用memorychannel存储数据,当接收日志数据的写入的速度大于移出日志数据的速度,且memorychannel内积压数据过多时,存在溢出异常;若采用filechannel存储数据,写入或移出日志数据的性能较低的问题。

为了解决上述问题,本发明主要提供如下技术方案:

一方面,本发明提供了一种数据的传输方法,该方法包括:

监测预置存储空间内数据的写入速度及数据的移出速度;

若数据的写入速度大于数据的移出速度,且所述预置存储空间内的数据占用空间超出溢出风险阈值,则将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间;其中,所述第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,所述第二存储空间用于存储待发送至数据接收方的数据,所述第一存储空间、所述外部存储器与所述第二存储空间存储数据的总存储容量大于所述预置存储空间的存储容量;

将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间,以便从所述第二存储空间内获取数据并发送至所述数据接收方。

可选的,将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间包括:

将所述预置存储空间内的数据按照数据存储顺序分割为第一部分的数据和第二部分的数据;其中,所述预置存储空间的数据结构为队列,所述第一部分的数据对应队列队尾部分的数据,所述第二部分数据对应队列队首部分的数据;

将所述第一部分的数据存储于所述第一存储空间,及将所述第二部分的数据存储于所述第二存储空间。

可选的,将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间包括:

获取配置文件,并确定所述配置文件中的移出数据量;其中,所述移出数据量为从所述第一存储空间中移出数据的最大数据量;

根据所述移出数据量从所述第一存储空间中移出对应的数据;

将从所述第一存储空间移出的数据传输至外部存储器路径下的预设文件的尾部;

判断所述第二存储空间内的剩余存储量是否符合写入条件;

若确定所述第二存储空间内的剩余存储量符合写入条件,则根据第二存储空间内的剩余存储量,从所述预设文件的头部移出数据;

将从所述预设文件中移出的数据顺序存入所述第二存储空间。

可选的,所述方法还包括:

对所述第一储存空间内数据的写入速度及所述第二存储空间内数据的移出速度进行监测;

若确定所述第一储存空间内数据的写入速度小于所述第二存储空间内数据的移出速度,且所述预设文件内的数据占用空间为零,则将所述第二存储空间内的所有数据转移至所述预置存储空间内,并顺序将所述第一存储空间内的所有数据转移至所述预置存储空间内。

可选的,监测预置存储空间内数据的写入速度及数据的移出速度包括:

启动监控线程,所述监控线程用于监控数据的移出速度及数据的写入速度;

通过所述监控线程监测所述预置存储空间内数据的写入速度及数据的移出速度。

另一方面,本发明还提供一种数据的传输装置,该装置包括:

监测单元,用于监测预置存储空间内数据的写入速度及数据的移出速度;

转移单元,用于当确定所述监测单元监测到的数据的写入速度大于数据的移出速度,且所述预置存储空间内的数据占用空间超出溢出风险阈值时,将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间;其中,所述第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,所述第二存储空间用于存储待发送至数据接收方的数据,所述第一存储空间、所述外部存储器与所述第二存储空间存储数据的总存储容量大于所述预置存储空间的存储容量;

传输单元,用于在所述转移单元将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间之后,将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间,以便从所述第二存储空间内获取数据并发送至所述数据接收方。

可选的,所述转移单元包括:

分割模块,用于将所述预置存储空间内的数据按照数据存储顺序分割为第一部分的数据和第二部分的数据;其中,所述预置存储空间的数据结构为队列,所述第一部分的数据对应队列队尾部分的数据,所述第二部分数据对应队列队首部分的数据;

第一存储模块,用于将所述分割模块分割的所述第一部分的数据存储于所述第一存储空间;

第二存储模块,用于将所述分割模块分割的所述第二部分的数据存储于所述第二存储空间。

可选的,所述传输单元包括:

第一获取模块,用于获取配置文件;

确定模块,用于确定所述第一获取模块获取的所述配置文件中的移出数据量;其中,所述移出数据量为从所述第一存储空间中移出数据的最大数据量;

第一移出模块,用于根据所述确定模块确定的所述移出数据量从所述第一存储空间中移出对应的数据;

传输模块,用于将所述第一移出模块从所述第一存储空间移出的数据传输至外部存储器路径下的预设文件的尾部;

判断模块,用于判断所述第二存储空间内的剩余存储量是否符合写入条件;

第二移出模块,用于当所述判断模块确定所述第二存储空间内的剩余存储量符合写入条件时,根据第二存储空间内的剩余存储量,从所述预设文件的头部移出数据;

存储模块,用于将所述第二移出模块从所述预设文件中移出的数据顺序存入所述第二存储空间。

可选的,所述装置还包括:

第一监测单元,用于对所述第一储存空间内数据的写入速度进行监测;

第二监测单元,用于对所述第二存储空间内数据的移出速度进行监测;

转移单元,用于当确定所述第一监测单元监测的所述第一储存空间内数据的写入速度小于所述第二监测单元监测的所述第二存储空间内数据的移出速度,且所述预设文件内的数据占用空间为零,则将所述第二存储空间内的所有数据转移至所述预置存储空间内,并顺序将所述第一存储空间内的所有数据转移至所述预置存储空间内。

可选的,所述获取单元包括:

启动模块,用于启动监控线程,所述监控线程用于监控数据的移出速度及数据的写入速度;

第二获取模块,用于通过所述启动模块启动后的所述监控线程获取所述预置存储空间内数据的写入速度及数据的移出速度。

借由上述技术方案,本发明提供的技术方案至少具有下列优点:

本发明提供的数据的传输方法及装置,数据传输系统在执行数据传输过程中,首先,分别监测预置存储空间内数据的写入速度及数据的移出速度,当确定预置存储空间内数据的写入速度大于数据的移出速度,并且预置存储空间内的数据占用空间超出溢出风险阈值时,将预置空间内的数据分别转移至第一存储空间及第二存储空间,将第一存储空间内的数据传输至外部存储器,并由外部存储器传输至第二存储空间,以便从第二存储空间内获取数据并发送至数据接收方,与现有技术相比,本发明中当预置存储空间内的数据占用空间超过溢出风险阈值时,会将预置存储空间内的所有数据转移至同在内存中第一存储空间及第二存储空间,其中,该第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,第二存储空间用于存储待发送至数据接收方的数据,且第一存储空间、所述外部存储器与第二存储空间存储数据的总存储容量大于预置存储空间的存储容量,既能够确保数据传输系统不会出现溢出异常,又能够提升数据传输系统容纳数据量的性能。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本发明实施例提供的一种数据的传输方法的流程图;

图2示出了本发明实施例提供的一种将预置存储空间内的数据分别转移至第一存储空间及第二存储空间的示意图;

图3示出了本发明实施例提供的一种数据的传输装置的组成框图;

图4示出了本发明实施例提供的另一种数据的传输装置的组成框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明实施例提供一种数据的传输方法,该方法应用于flume系统中,如图1所示,所述方法包括:

101、监测预置存储空间内数据的写入速度及数据的移出速度。

所述flume系统支持定各类数据发送方,用于收集日志数据,在收集完日志数据后,能够对日志数据进行简单处理,并传输至数据接收方。flume系统可应用于服务器侧,也可独立于服务器,但与服务器有数据交互关系,本发明实施例对flume系统的物理存放位置不作限定。flume系统在收集、处理、发送日志数据的过程由三个组件控制,分别为source、channel、sink,其中,source用于完成对日志数据的收集,并将采集到的数据发送至channel之中;channel主要提供一个队列的功能,对source提供中的日志数据进行缓存;sink用于移出channel中的日志数据,并发送至相应的存储文件系统、数据库或者远程服务器。

需要说明的是,本发明实施例可应用于对视频实时日志数据的收集过程中,视频实时数据的数据量在一天中的产生情况可能存在差异,例如,在22:00-06:00时间段内,可能观看视频的用户少,因此,产生的视频实时日志数据相应减少,在18:00-21:59时间段内,观看视频的用户多,那么该时间段内产生的视频实时日志数据会增多,甚至视频实时日志数据的数据量较大的情况。本发明实施例适用于在某个时间段内flume系统接收到大量日志数据的应用场景中。若flume系统长期或者实时(如24小时)接收到大量的日志数据的应用场景下,可以考虑增加flume系统,来解决日志数据的数据量较大的问题。以上说明并非意在限定本发明实施例所述的方法仅能应用于采集视频实时日志数据过程中。

为了解决现有技术中,当某个时间段内产生的日志数据较多时,造成flume系统中source写入日志数据的速度大于sink移出日志数据的速度,本发明实施例对现有技术中的channel组件进行重写改造,将现有技术中的channel改写为三个通道,分别为memqueue、putqueue以及takequeue,其中,memqueue为本发明实施例所述的预置存储空间,putqueue为步骤102所述的第一存储空间,takequeue为步骤102所述的第二存储空间,并且,memqueue、putqueue以及takequeue均位于flume系统的内存中,写入/移出日志数据的效率较高。

具体实施过程中,memqueue(预置存储空间)putqueue(第一存储空间)以及takequeue(第二存储空间)均位于flume系统的内存中,其存储空间有限,在设置putqueue(第一存储空间)以及takequeue(第二存储空间)的总容量时,putqueue(第一存储空间)以及takequeue(第二存储空间)的总容量之和小于或者等于memqueue(预置存储空间),但是,putqueue(第一存储空间)能够借助外部存储器(例如磁盘)进行数据存储,当putqueue(第一存储空间)被数据占满或者即将被数据占满时,可将putqueue(第一存储空间)内的全部或者部分数据转移至外部存储器进行临时存储,外部存储器具有可扩展性,可以存储较大数据量的数据。

在实际应用中,若从数据发送方接收到的日志数据较少,则直接使用memqueue(预置存储空间)即可,若从数据接收方接收到的日志数据较多时,则使用putqueue(第一存储空间)、外部存储器以及takequeue(第二存储空间)对日志数据进行缓存处理。

为确保flume系统在收集日志数据过程中,出现memqueue(预置存储空间)的溢出异常,因此,在使用memqueue(预置存储空间)存储日志数据时,获取memqueue(预置存储空间)内日志数据的写入速度及日志数据的移出速度,若日志数据的写入速度小于或者等于日志数据的移出速度,则memqueue(预置存储空间)内存储的日志数据不会存在溢出异常;若日志数据的写入速度大于日志数据的移出速度,则memqueue(预置存储空间)内存储的日志数据可能会存在溢出异常的情况,溢出异常的出现还要参考预置存储空间内已存储的日志数据是否超过溢出风险阈值。

在基于确定memqueue(预置存储空间)内日志数据的写入速度大于日志数据的移出速度的前提下,若所述预置存储空间内的数据占用空间超出溢出风险阈值,则flume系统会出现溢出异常,执行步骤102;若所述预置存储空间内的数据占用空间未超出溢出风险阈值,则继续监控memqueue(预置存储空间)内数据的写入速度及数据的移出速度,若此时确定内数据的写入速度小于数据的移出速度,则memqueue(预置存储空间)内也不会出现溢出异常。

其中,所述溢出风险阈值为经验值,例如,可以设置为溢出风险阈值为memqueue(预置存储空间)的80%,或者,也可以设置溢出风险阈值为memqueue(预置存储空间)的70%等等,具体的,本发明实施例对溢出风险阈值的具体设置不作限定。

102、若确定数据的写入速度大于数据的移出速度,且所述预置存储空间内的数据占用空间超出溢出风险阈值,则将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间。

其中,所述putqueue(第一存储空间)用于存储数据发送方发送的数据,所述以及takequeue(第二存储空间)用于存储待发送至数据接收方的数据。

由步骤101可知,当确定memqueue(预置存储空间)中数据的写入速度大于数据的移出速度,且memqueue(预置存储空间)内的数据占用空间超出溢出风险阈值时,flume系统会可能出现溢出异常,但是由于memqueue(预置存储空间)内的数据占用空间并未占用memqueue(预置存储空间)内的所有存储空间,因此,不会出现溢出异常。若memqueue(预置存储空间)内的数据占用空间超出溢出风险阈值,且memqueue(预置存储空间)中数据的写入速度大于数据的移出速度,若不对memqueue(预置存储空间)内的日志数据进行转移,任由source继续往memqueue(预置存储空间)内传输日志数据的话,便会出现溢出异常。

为了防止flume系统出现溢出异常,当确定数据的写入速度大于数据的移出速度,且所述预置存储空间内的数据占用空间超出溢出风险阈值时,将所述预置存储空间内的数据分别转移至putqueue(第一存储空间)及takequeue(第二存储空间),putqueue(第一存储空间)内的数据可转移至外部存储器进行临时存储,所述第一存储空间、外部存储器与所述第二存储空间存储数据的总存储容量大于所述预置存储空间的存储容量。在实际应用中,所述memqueue(预置存储空间)、putqueue(第一存储空间)及takequeue(第二存储空间)的数据结构均为队列。在将memqueue(预置存储空间)内的所有数据转移成功后,该memqueue(预置存储空间)为空。

需要说明的是,所述memqueue(预置存储空间)、putqueue(第一存储空间)及takequeue(第二存储空间)均位于flume系统的内存中,由于内存的存储资源是有限的,因此,在配置memqueue(预置存储空间)、putqueue(第一存储空间)及takequeue(第二存储空间)的存储容量时,可以配置memqueue(预置存储空间)的存储容量为2g,配置putqueue(第一存储空间)的存储容量为1g,配置takequeue(第二存储空间)的存储容量为1g等等。第一存储空间可以通过增加外部(相对于内存而言)的存储容量,如磁盘,扩展提升flume系统存储日志数据的容量。

103、将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间。

由步骤102可知,putqueue(第一存储空间)用于收集日志数据,takequeue(第二存储空间)用于发送日志数据,因此,将日志数据成功发送至数据接收方的前提是:将putqueue(第一存储空间)内缓存的日志数据传输至外部存储器,外部存储器内临时存储的日志数据发送至takequeue(第二存储空间),以便从所述第二存储空间内获取数据并发送至所述数据接收方。

本发明实施例提供的数据的传输方法,数据传输系统在执行数据传输过程中,首先,分别监测预置存储空间内数据的写入速度及数据的移出速度,当确定预置存储空间内数据的写入速度大于数据的移出速度,并且预置存储空间内的数据占用空间超出溢出风险阈值时,将预置空间内的数据分别转移至第一存储空间及第二存储空间,将第一存储空间内的数据传输至外部存储器,并由外部存储器传输至第二存储空间,以便从第二存储空间内获取数据并发送至数据接收方,与现有技术相比,本发明实施例中,当预置存储空间内的数据占用空间超过溢出风险阈值时,会将预置存储空间内的所有数据转移至同在内存中第一存储空间及第二存储空间,其中,该第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,第二存储空间用于存储待发送至数据接收方的数据,且第一存储空间、所述外部存储器与第二存储空间存储数据的总存储容量大于预置存储空间的存储容量,既能够确保数据传输系统不会出现溢出异常,又能够提升数据传输系统容纳数据量的性能。

进一步的,作为对上述图1所示方法的细化和扩展,在步骤102执行将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间时,具体包括:将memqueue(预置存储空间)内的数据按照数据存储顺序分割为第一部分的数据和第二部分的数据,在具体实现过程中,所述memqueue(预置存储空间)、putqueue(第一存储空间)及takequeue(第二存储空间)均为队列,所述第一部分的数据为memqueue(预置存储空间)队列中队尾部分的数据,第二部分的数据对应的为memqueue(预置存储空间)队列中队首部分的数据;将第一部分的数据存储于putqueue(第一存储空间)内,将第二部分的数据存储于takequeue(第二存储空间)内。

作为本发明实施例的一种实现方式,本发明实施例在对预置存储空间内的数据进行分割时,确定memqueue(预置存储空间)内存储数据的个数,根据存储数据的个数平均分配memqueue(预置存储空间)内的数据;例如,若memqueue(预置存储空间)内存储数据的个数为1000个,则可将memqueue(预置存储空间)内前500个数据作为第一部分的数据,将memqueue(预置存储空间)内后500个数据作为第二部分的数据。作为本发明实施例的另一种实现方式,在不超出takequeue(第二存储空间)的存储容量的前提下,将memqueue(预置存储空间)内的数据中的大部分数据作为第二部分的数据,例如,若memqueue(预置存储空间)内存储数据的个数为1000个,则可将memqueue(预置存储空间)内前300个数据作为第一部分的数据,将memqueue(预置存储空间)内后700个数据作为第二部分的数据(未超出takequeue的存储容量)。具体的,本发明实施例对分割memqueue(预置存储空间)的方法不作限定。

进一步的,虽然memqueue(预置存储空间)、putqueue(第一存储空间)及takequeue(第二存储空间)均位于flume系统内存中,能够提升收集、处理、传输数据的性能,但是,由于内存空间的有限性,当flume系统接收的数据量较大时,仍然不能满足flume系统存储大量数据的需求。为了解决上述问题,本发明实施例在将putqueue(第一存储空间)内的数据传输至takequeue(第二存储空间)时,可以借助于外部存储器临时存储第一存储空间内的数据,以解决flume系统存储大量数据的需求。

将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间,具体过程包括:获取配置文件,并确定所述配置文件中的移出数据量;其中,所述移出数据量为从所述第一存储空间中移出数据的最大数据量;根据所述移出数据量从所述第一存储空间中移出对应的数据;将从所述第一存储空间移出的数据传输至外部存储器路径下的预设文件的尾部;判断所述第二存储空间内的剩余存储量是否符合写入条件;若确定所述第二存储空间内的剩余存储量符合写入条件,则根据第二存储空间内的剩余存储量,从所述预设文件的头部移出数据;将从所述预设文件中移出的数据顺序存入所述第二存储空间。判断所述第二存储空间内的剩余存储量是否符合写入条件的目的在于,防止takequeue(第二存储空间)出现溢出异常。

在实际应用中,配置文件包含移出数据量,还包含:memqueue(预置存储空间)、putqueue(第一存储空间)及takequeue(第二存储空间)的存储容量信息、数据接收方信息、数据发送方信息等等。所述外部存储器包含但不局限于软盘、硬盘或虚拟盘等。

需要说明的是,为了防止putqueue(第一存储空间)重复向外部存储器中的预设文件中发送数据,在将从第一存储空间移出的数据传输至外部存储器路径下的预设文件中之后,将所述putqueue(第一存储空间)内已成功移出至所述预设文件中的数据删除,防止数据的重复发送。

进一步的,flume系统在将数据传输至数据接收方时,其对应的发送数据的顺序与接收到数据发送方发送数据的时间顺序一致,为了确定数据接收时间顺序与数据发送时间顺序的一致性,在将从putqueue(第一存储空间)移出的数据传输至外部存储器路径下的预设文件中时,需要将从所述putqueue(第一存储空间)获取的数据顺序写入所述预设文件的尾部,以保持flume系统接收数据与传输数据在时间顺序上的一致性。

为了便于理解,以下将以示例的形式对flume系统借助外部存储器进行数据传输的实现过程进行详细说明,如图2所示,图2示出了本发明实施例提供的另一种将第一存储空间内的数据传输至第二存储空间的示意图,其中,n大于或者等于15。将memqueue(预置存储空间)内的数据进行转移时,将memqueue(预置存储空间)内原有的数据存入putqueue(第一存储空间)及takequeue(第二存储空间)后,若putqueue(第一存储空间)接收到新的数据,顺序存入putqueue(第一存储空间)内,并根据移出数据量(假设,移出数据量为putqueue的所有数据)将putqueue(第一存储空间)内的所有数据传递至预置文件中,获取takequeue(第二存储空间)的剩余存储量,若takequeue(第二存储空间)的剩余存储量是否符合写入条件,则根据剩余存储量从预设文件的头部移出数据,实现数据在putqueue(第一存储空间)-预设文件-takequeue(第二存储空间)之间的传输。

进一步的,如上所述,本发明实施例可应用于在日志数据传输过程中,某个时间段内日志数据量较大的应用场景中,当过了日志数据量较大的时间段后,日志数据的数据量会逐渐减小,即putqueue(第一存储空间)内数据的写入速度会逐渐降低,因此,可以将putqueue(第一存储空间)及takequeue(第二存储空间)内的数据合并至memqueue(预置存储空间)。具体包括:对所述第一储存空间内数据的写入速度及所述第二存储空间内数据的移出速度进行监测;若确定所述putqueue(第一存储空间)内数据的写入速度小于所述takequeue(第二存储空间)内数据的移出速度,且所述预设文件内的数据占用空间为零,且putqueue(第一存储空间)与takequeue(第二存储空间)内数据的占用空间总和小于memqueue(预置存储空间)内未超出溢出风险阈值的占用空间,则将所述putqueue(第一存储空间)内的数据与所述takequeue(第二存储空间)内的数据合并至所述预置存储空间内。

在将putqueue(第一存储空间)内的数据与所述takequeue(第二存储空间)内的数据进行合并时,首先,将takequeue(第二存储空间)内的数据存入memqueue(预置存储空间)中,待takequeue(第二存储空间)内的数据传输完毕后,继续将putqueue(第一存储空间)内的数据存入memqueue(预置存储空间)中,实现数据的合并。

进一步的,在获取预置存储空间内数据的写入速度及数据的移出速度时,可以包含但不局限于以下的方法实现,启动监控线程,所述监控线程用于监控数据的移出速度及数据的写入速度;通过所述监控线程分别获取所述预置存储空间内数据的写入速度及数据的移出速度。

进一步的,在将预置存储空间内的数据分别转移至第一存储空间及第二存储空间之前,将数据的写入速度与数据的移出速度进行比对;若确定数据的写入速度大于数据的移出速度,则判断所述预置存储空间内的数据占用空间是否超出溢出风险阈值;若确定所述预置存储空间内的数据占用空间超出溢出风险阈值,则将预置存储空间内的数据分别转移至所述第一存储空间及所述第二存储空间;若确定所述预置存储空间内的数据占用空间未超出溢出风险阈值,则继续对数据的写入速度与数据的移出速度进行监控、比对。

进一步的,作为对上述图1所示方法的实现,本发明另一实施例还提供了一种数据的传输装置。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。

本发明实施例提供一种数据的传输装置,如图3所示,包括:

监测单元31,用于获取预置存储空间内数据的写入速度及数据的移出速度;

第一转移单元32,用于当确定所述监测单元监测到的数据的写入速度大于数据的移出速度,且所述预置存储空间内的数据占用空间超出溢出风险阈值时,将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间;其中,所述第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,所述第二存储空间用于存储待发送至数据接收方的数据,所述第一存储空间、所述外部存储器与所述第二存储空间存储数据的总存储容量大于所述预置存储空间的存储容量;

传输单元33,用于在所述第一转移单元32将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间之后,将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间,以便从所述第二存储空间内获取数据并发送至所述数据接收方。

进一步的,如图4所示,所述第一转移单元32包括:

分割模块321,用于将所述预置存储空间内的数据按照数据存储顺序分割为第一部分的数据和第二部分的数据;其中,所述预置存储空间的数据结构为队列,所述第一部分的数据对应队列队尾部分的数据,所述第二部分数据对应队列队首部分的数据;

第一存储模块322,用于将所述分割模块321分割的所述第一部分的数据存储于所述第一存储空间;

第二存储模块323,用于将所述分割模块321分割的所述第二部分的数据存储于所述第二存储空间。

进一步的,如图4所示,所述传输单元33包括:

第一获取模块331,用于获取配置文件;

确定模块332,用于确定所述第一获取模块330获取的所述配置文件中的移出数据量;其中,所述移出数据量为从所述第一存储空间中移出数据的最大数据量;

第一移出模块333,用于根据所述确定模块332确定的所述移出数据量从所述第一存储空间中移出对应的数据;

传输模块334,用于将所述第一移出模块333从所述第一存储空间移出的数据传输至外部存储器路径下的预设文件的尾部;

判断模块335,用于判断所述第二存储空间内的剩余存储量是否符合写入条件;

第二移出模块336,用于当所述判断模块335确定所述第二存储空间内的剩余存储量符合写入条件时,根据第二存储空间内的剩余存储量,从所述预设文件的头部移出数据;

存储模块337,用于将所述第二移出模块336从所述预设文件中移出的数据顺序存入所述第二存储空间。

进一步的,如图4所示,所述装置还包括:

第一监测单元34,用于对所述第一储存空间内数据的写入速度进行监测;

第二监测单元35,用于对所述第二存储空间内数据的移出速度进行监测;

第二转移单元36,用于当确定所述第一监测单元34监测的所述第一储存空间内数据的写入速度小于所述第二监测单元35监测的所述第二存储空间内数据的移出速度,且所述预设文件内的数据占用空间为零,则将所述第二存储空间内的所有数据转移至所述预置存储空间内,并顺序将所述第一存储空间内的所有数据转移至所述预置存储空间内。

进一步的,如图4所示,所述获取单元31包括:

启动模块311,用于启动监控线程,所述监控线程用于监控数据的移出速度及数据的写入速度;

第二获取模块312,用于通过所述启动模块311启动后的所述监控线程获取所述预置存储空间内数据的写入速度及数据的移出速度。

本发明实施例提供的数据的传输装置,数据传输系统在执行数据传输过程中,首先,分别监测预置存储空间内数据的写入速度及数据的移出速度,当确定预置存储空间内数据的写入速度大于数据的移出速度,并且预置存储空间内的数据占用空间超出溢出风险阈值时,将预置空间内的数据分别转移至第一存储空间及第二存储空间,将第一存储空间内的数据传输至外部存储器,并由外部存储器传输至第二存储空间,以便从第二存储空间内获取数据并发送至数据接收方,与现有技术相比,本发明实施例中,当预置存储空间内的数据占用空间超过溢出风险阈值时,会将预置存储空间内的所有数据转移至同在内存中第一存储空间及第二存储空间,其中,该第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,第二存储空间用于存储待发送至数据接收方的数据,且第一存储空间、所述外部存储器与第二存储空间存储数据的总存储容量大于预置存储空间的存储容量,既能够确保数据传输系统不会出现溢出异常,又能够提升数据传输系统容纳数据量的性能。

所述数据的传输装置包括处理器和存储器,上述监测单元、第一转移单元和传输单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中flume系统对日志数据进行收集,若采用memorychannel存储数据,当接收日志数据的写入的速度大于移出日志数据的速度,且memorychannel内积压数据过多时,存在溢出异常;若采用filechannel存储数据,写入或移出日志数据的性能较低的问题。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:监测预置存储空间内数据的写入速度及数据的移出速度;若数据的写入速度大于数据的移出速度,且所述预置存储空间内的数据占用空间超出溢出风险阈值,则将所述预置存储空间内的数据分别转移至第一存储空间及第二存储空间;其中,所述第一存储空间用于存储数据发送方发送的数据,并结合外部存储器存储数据,所述第二存储空间用于存储待发送至数据接收方的数据,所述第一存储空间、所述外部存储器与所述第二存储空间存储数据的总存储容量大于所述预置存储空间的存储容量;将所述第一存储空间内的数据传输至所述外部存储器,并由所述外部存储器传输至所述第二存储空间,以便从所述第二存储空间内获取数据并发送至所述数据接收方。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于外部存储器存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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

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

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

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁外部存储器存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

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

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于外部存储器存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1