CN104714900B - 数据读取方法和装置 - Google Patents
数据读取方法和装置 Download PDFInfo
- Publication number
- CN104714900B CN104714900B CN201510136331.2A CN201510136331A CN104714900B CN 104714900 B CN104714900 B CN 104714900B CN 201510136331 A CN201510136331 A CN 201510136331A CN 104714900 B CN104714900 B CN 104714900B
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- reading
- caching
- request
- 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
Abstract
本发明提出一种数据读取方法和装置,该数据读取方法包括:接收发送端以并发方式发送的读数据请求;扫描所述读数据请求所请求的数据;将扫描到的数据携带在所述读数据请求对应的读数据响应中发送给所述发送端,所述读数据响应中携带的数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序,以便所述发送端接收到所述数据包之后,根据所述数据标识对接收到的数据包进行排序。本发明中,发送端以并发方式向接收端发送读数据请求,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受跨IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据读取方法和装置。
背景技术
顺序读取技术是指在旋转型存储介质(rotated device)顺应物理读写磁头进行数据访问的技术。在当今互联网信息检索中,为了加快信息存储和访问速度,大量的信息数据会顺应存储介质的物理磁头访问的特点,顺序的记录到物理存储介质上。在读取上述数据时,可以采用传统的随机访问方式或顺序访问方式去读取。
但是采用随机访问方式读取数据时,由于每次都需要调度物理磁头重新进行寻道,以至于大量的时间消耗在机械读写磁头重新定位上,导致吞吐率较低。而采用传统的顺序访问方式读取数据时,由于能减少磁头寻道的时间开销,在首次寻道后只需要顺着磁头的方向进行扫描存储介质既可将数据读出,从而可以实现很好的吞吐。但是在数据量比较庞大的情况下,这类扫描操作需要执行多次,且下一次执行前必须知道前一次扫描区间的后边界才能执行,从而使得介质的输入输出(Input Output;以下简称:IO)性能未能得到充分的发挥,尤其是在网络延时比较高的环境下,应用端的吞吐率会急剧下降。
发明内容
本发明的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种数据读取方法。通过该方法,发送端以并发方式向接收端发送读数据请求,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受跨互联网数据中心(Internet Data Center;以下简称:IDC)和网络拓扑的影响,大大提高了系统对资源的利用率。
本发明的第二个目的在于提出一种数据读取装置。
为了实现上述目的,本发明第一方面实施例的数据读取方法,包括:接收发送端以并发方式发送的读数据请求;扫描所述读数据请求所请求的数据;将扫描到的数据携带在所述读数据请求对应的读数据响应中发送给所述发送端,所述读数据响应中携带的数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序,以便所述发送端接收到所述数据包之后,根据所述数据标识对所述数据包进行排序。
本发明实施例的数据读取方法,接收发送端以并发方式发送的读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
为了实现上述目的,本发明第二方面实施例的数据读取方法,包括:以并发方式向接收端发送读数据请求;接收所述接收端发送的读数据响应,所述读数据响应中携带所述接收端根据所述读数据请求扫描获得的数据包,所述数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序;根据所述数据标识将接收到的数据包存入缓存。
本发明实施例的数据读取方法,以并发方式向接收端发送读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
为了实现上述目的,本发明第三方面实施例的数据读取装置,包括:接收模块,用于接收发送端以并发方式发送的读数据请求;扫描模块,用于扫描所述接收模块接收的读数据请求所请求的数据;发送模块,用于将所述扫描模块扫描到的数据携带在所述读数据请求对应的读数据响应中发送给所述发送端,所述读数据响应中携带的数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序,以便所述发送端接收到所述数据包之后,根据所述数据标识对接收到的数据包进行排序。
本发明实施例的数据读取装置,接收模块接收发送端以并发方式发送的读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
为了实现上述目的,本发明第四方面实施例的数据读取装置,包括:发送模块,用于以并发方式向接收端发送读数据请求;接收模块,用于接收所述接收端发送的读数据响应,所述读数据响应中携带所述接收端根据所述读数据请求扫描获得的数据包,所述数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序;存入模块,用于根据所述数据标识将所述接收模块接收到的数据包存入缓存。
本发明实施例的数据读取装置,发送模块以并发方式向接收端发送读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明数据读取方法一个实施例的流程图;
图2为本发明数据读取方法另一个实施例的流程图;
图3为本发明发送端与接收端的联动关系一个实施例的示意图;
图4为本发明数据读取装置一个实施例的结构示意图;
图5为本发明数据读取装置另一个实施例的结构示意图;
图6为本发明数据读取装置再一个实施例的结构示意图;
图7为本发明数据读取装置再一个实施例的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1为本发明数据读取方法一个实施例的流程图,如图1所示,该数据读取方法可以包括:
步骤101,接收发送端以并发方式发送的读数据请求。
步骤102,扫描上述读数据请求所请求的数据。
步骤103,将扫描到的数据携带在上述读数据请求对应的读数据响应中发送给发送端,上述读数据响应中携带的数据包包括数据标识,上述数据标识用于标识上述数据包扫描的先后顺序,以便发送端接收到上述数据包之后,根据上述数据标识对接收到的数据包进行排序。
进一步地,步骤102,扫描上述读数据请求所请求的数据之前,接收端还可以将上述读数据请求缓存在请求队列中;这样,扫描上述读数据请求所请求的数据可以为:按照先入先出(First Input First Output;以下简称:FIFO)的顺序从上述请求队列中获取读数据请求,扫描获取的读数据请求所请求的数据。
本实施例中,发送端以并发方式不断地向接收端发送读数据请求,由于网络延时以及不确定性,到达接收端的读数据请求是乱序的(这对数据顺序性无影响)。接收端将上述读数据请求暂时缓存在请求队列中,然后按照FIFO的顺序从上述请求队列中获取一个读数据请求,由数据读取迭代器扫描该读数据请求所请求的数据,然后将扫描到的数据携带在上述读数据请求对应的读数据响应中发送给发送端;然后继续从上述请求队列中获取下一个读数据请求。数据读取迭代器扫描的每一份数据都带有数据标识,也就是说,上述读数据响应中携带的数据包带有数据标识,该数据标识用于标识数据包扫描的先后顺序,发送端接收到上述数据包之后,可以根据上述数据标识组装数据,从而可以确保用户访问到的数据是严格按照接收端的数据读取迭代器扫描数据的顺序排列的。
本实施例中,发送端发送读数据请求时采用异步通信方式,以并发的方式向接收端发送读数据请求,这对接收端而言会造成比较大的网络访问冲击。如果接收端的处理速度比较慢,请求队列中的读数据请求的个数会迅速增加,从而引起内存暴涨。
因此,本实施例中,当上述请求队列中缓存的读数据请求的个数达到上限阈值时,接收端可以拒绝上述发送端发送的读数据请求,拒绝读数据请求并不会引起异常,因为发送端会自动发起重试,从而可以通过这样的方式来降低接收端的网络压力。其中,上述上限阈值可以在具体实现时根据接收端的处理能力和内存大小等自行设定,本实施例对上述上限阈值的大小不作限定。
上述数据读取方法中,接收端接收发送端以并发方式发送的读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
图2为本发明数据读取方法另一个实施例的流程图,如图2所示,该数据读取方法可以包括:
步骤201,以并发方式向接收端发送读数据请求。
步骤202,接收接收端发送的读数据响应,上述读数据响应中携带接收端根据上述读数据请求扫描获得的数据包,上述数据包包括数据标识,上述数据标识用于标识上述数据包扫描的先后顺序。
步骤203,根据上述数据标识将接收到的数据包存入缓存。
本实施例中,尽管接收端顺序访问存储介质,并顺序地将读取的数据通过网络返回,但是由于数据包可能会出现乱序到达,所以对发送端而言必须采用措施来避免数据乱序的问题。本实施例采用智能的自动排序方式让乱序到达的数据包按照既定的方式自动排序并存入环形缓冲。具体地,根据上述数据标识将接收到的数据包存入缓存可以为:当上述缓存中还有存储空间时,比较当前待存入的数据包的数据标识与上述缓存的当前存储位置的位置标识是否一致;如果一致,则将当前待存入的数据包存入上述缓存的当前存储位置。
也就是说,为保证数据严格按照数据标识的顺序让用户读取,发送端对乱序到达的数据包按照数据标识进行排序。具体地,发送端先检查发送端的缓存中是否还有存储空间,如果还有存储空间,则比较当前待存入的数据包的数据标识与上述缓存的当前存储位置的位置标识是否一致;如果一致,则将当前待存入的数据包存入上述缓存的当前存储位置,以供用户线程读取;如果不一致则会进入等待状态。位置标识在每次使用后会自动加1并取模,这样对于发送端的缓存而言,会自动回到已经空置的存储位置上。如果发送端的缓存已经填满,即上述缓存中已没有存储空间时,所有网络线程会自动等待,当有空置的存储位置时再继续存入数据包。
可以看出,本实施例中,接收端以数据读取迭代器顺序访问的速度将数据以“流”的方式不停地发送到发送端。在不阻塞的情况下,发送端用户访问数据的速度与接收端IO访问速度基本持平和成正比;而与网络通信的延时和开销无关,从而可以实现比较高的吞吐量。
由于网络通信的不可靠性,网络通信可能会出现丢包、超时等问题,这对于流式系统来说是非常致命的。因此,本实施例的数据读取方法还要充分考虑容错机制,即在出现异常和故障的时候能够自动重建整个数据流,同时在出现错包(垃圾包)能够丢弃,在出现丢包的时候能够重发,以确保系统的正确性和健壮性。
数据流重建的关键点是必须知道当前已经完成数据扫描的区间,然后才能再根据该区间的后边界来发起重连。因此,本实施例中,在将当前待存入的数据包存入上述缓存的当前存储位置之后,发送端还可以记录上述缓存的当前存储位置的结束边界,以供发生异常和故障需要重建数据流时使用。
本实施例中,如果接收端的处理能力比较强,而发送端的处理能力比较弱,这样接收端返回数据包的速度将大于用户线程的读取速度,从而会导致发送端内存上涨。因此需要配置合理的压力控制机制来解决由于发送端和接收端的处理能力不匹配所带来的问题。
本实施例中,发送端的缓存有上限控制,发送端缓存的上限可以由用户配置,本实施例对此不作限定。另外,发送端的并发任务数也是可配置的,可以根据读数据响应的接收延时和丢失情况,自动调整以并发方式向接收端发送的读数据请求的个数。
上述数据读取方法,发送端以并发方式向接收端发送读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
本发明提供的数据读取方法建立在异步通信基础上,异步机制的使用能最大限度地将网络吞吐量发挥到最大,但需要确保读取数据顺序性,否则就违背了该功能的初衷。因此本发明中,在发送端,以环形缓存(Ring Buffer)为基础,配合高并发的异步请求处理技术,从而实现请求的高吞吐;在接收端,采用FIFO的原则将读数据请求顺序化,并与存储介质设备的数据读取迭代器联动实现一对一地顺序访问盘块上的数据。
本发明中发送端与接收端的联动关系可以如图3所示,图3为本发明发送端与接收端的联动关系一个实施例的示意图。
在通常情况下,磁盘硬件的速度要远远大于通过网络传递过来的读数据请求的到达速度,因此发送端采用高并发的异步发送读数据请求的方式解决了硬件空闲等待的问题,从而让硬件的功能以最大效能运转。读取的数据包从接收端返回发送端之后,需要按照数据读取迭代器扫描的顺序进行数据重组并放入环形缓存,以方便用户读取。
图4为本发明数据读取装置一个实施例的结构示意图,本实施例中的数据读取装置可以作为接收端设备,或者接收端设备的一部分实现本发明图1所示实施例的流程,如图4所示,该数据读取装置可以包括:接收模块41、扫描模块42和发送模块43;
其中,接收模块41,用于接收发送端以并发方式发送的读数据请求;
扫描模块42,用于扫描接收模块41接收的读数据请求所请求的数据;
发送模块43,用于将扫描模块42扫描到的数据携带在上述读数据请求对应的读数据响应中发送给上述发送端,上述读数据响应中携带的数据包包括数据标识,上述数据标识用于标识上述数据包扫描的先后顺序,以便发送端接收到上述数据包之后,根据上述数据标识对接收到的数据包进行排序。
上述数据读取装置中,接收模块41接收发送端以并发方式发送的读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
图5为本发明数据读取装置另一个实施例的结构示意图,与图4所示的数据读取装置相比,不同之处在于,图5所示的数据读取装置还可以包括:
缓存模块44,用于在扫描模块42扫描上述读数据请求所请求的数据之前,将上述读数据请求缓存在请求队列中。
这时,扫描模块42,具体用于按照FIFO的顺序从上述请求队列中获取读数据请求,扫描获取的读数据请求所请求的数据。
本实施例中,发送端以并发方式不断地向接收端发送读数据请求,由于网络延时以及不确定性,到达接收端的读数据请求是乱序的(这对数据顺序性无影响)。缓存模块44将上述读数据请求暂时缓存在请求队列中,然后扫描模块42按照FIFO的顺序从上述请求队列中获取一个读数据请求,由数据读取迭代器扫描该读数据请求所请求的数据,然后发送模块43将扫描到的数据携带在上述读数据请求对应的读数据响应中发送给发送端;然后扫描模块42继续从上述请求队列中获取下一个读数据请求。数据读取迭代器扫描的每一份数据都带有数据标识,也就是说,上述读数据响应中携带的数据包带有数据标识,该数据标识用于标识数据包扫描的先后顺序,发送端接收到上述数据包之后,可以根据上述数据标识组装数据,从而可以确保用户访问到的数据是严格按照接收端的数据读取迭代器扫描数据的顺序排列的。
本实施例中,发送端发送读数据请求时采用异步通信方式,以并发的方式向接收端发送读数据请求,这对接收端而言会造成比较大的网络访问冲击。如果接收端的处理速度比较慢,请求队列中的读数据请求的个数会迅速增加,从而引起内存暴涨。
因此,本实施例中,上述数据读取装置还可以包括:
拒绝模块45,用于当上述请求队列中缓存的读数据请求的个数达到上限阈值时,拒绝上述发送端发送的读数据请求。拒绝模块45拒绝读数据请求并不会引起异常,因为发送端会自动发起重试,从而可以通过这样的方式来降低接收端的网络压力。其中,上述上限阈值可以在具体实现时根据接收端的处理能力和内存大小等自行设定,本实施例对上述上限阈值的大小不作限定。
上述数据读取装置可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
图6为本发明数据读取装置再一个实施例的结构示意图,本实施例中的数据读取装置可以作为发送端,或者发送端的一部分实现本发明图2所示实施例的流程,如图6所示,该数据读取装置可以包括:发送模块61、接收模块62和存入模块63;
其中,发送模块61,用于以并发方式向接收端发送读数据请求;
接收模块62,用于接收接收端发送的读数据响应,上述读数据响应中携带接收端根据上述读数据请求扫描获得的数据包,上述数据包包括数据标识,上述数据标识用于标识上述数据包扫描的先后顺序;
存入模块63,用于根据上述数据标识将接收模块62接收到的数据包存入缓存。
上述数据读取装置,发送模块61以并发方式向接收端发送读数据请求,解决了硬件空闲等待的问题,从而可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
图7为本发明数据读取装置再一个实施例的结构示意图,与图6所示的数据读取装置相比,不同之处在于,本实施例中,尽管接收端顺序访问存储介质,并顺序地将读取的数据通过网络返回,但是由于数据包可能会出现乱序到达,所以对发送端而言必须采用措施来避免数据乱序的问题。本实施例采用智能的自动排序方式让乱序到达的数据包按照既定的方式自动排序并存入环形缓冲。
具体地,图7所示的数据读取装置中,存入模块63可以包括:比较子模块631和数据包存入子模块632;
比较子模块631,用于当上述缓存中还有存储空间时,比较当前待存入的数据包的数据标识与上述缓存的当前存储位置的位置标识是否一致;
数据包存入子模块632,用于当比较子模块631确定当前待存入的数据包的数据标识与上述缓存的当前存储位置的位置标识一致时,将当前待存入的数据包存入上述缓存的当前存储位置。
也就是说,为保证数据严格按照数据标识的顺序让用户读取,发送端对乱序到达的数据包按照数据标识进行排序。具体地,当上述缓存中还有存储空间时,比较子模块631比较当前待存入的数据包的数据标识与上述缓存的当前存储位置的位置标识是否一致;如果一致,则数据包存入子模块632将当前待存入的数据包存入上述缓存的当前存储位置,以供用户线程读取;如果不一致则会进入等待状态。位置标识在每次使用后会自动加1并取模,这样对于发送端的缓存而言,会自动回到已经空置的存储位置上。如果发送端的缓存已经填满,即上述缓存中已没有存储空间时,所有网络线程会自动等待,当有空置的存储位置时再继续存入数据包。
可以看出,本实施例中,接收端以数据读取迭代器顺序访问的速度将数据以“流”的方式不停地发送到发送端。在不阻塞的情况下,发送端用户访问数据的速度与接收端IO访问速度基本持平和成正比;而与网络通信的延时和开销无关,从而可以实现比较高的吞吐量。
由于网络通信的不可靠性,网络通信可能会出现丢包、超时等问题,这对于流式系统来说是非常致命的。因此,本实施例的数据读取装置还要充分考虑容错机制,即在出现异常和故障的时候能够自动重建整个数据流,同时在出现错包(垃圾包)能够丢弃,在出现丢包的时候能够重发,以确保系统的正确性和健壮性。
数据流重建的关键点是必须知道当前已经完成数据扫描的区间,然后才能再根据该区间的后边界来发起重连。因此,本实施例中,上述数据读取装置还可以包括:
记录模块64,用于在数据包存入子模块632将当前待存入的数据包存入上述缓存的当前存储位置之后,记录上述缓存的当前存储位置的结束边界,以供发生异常和故障需要重建数据流时使用。
本实施例中,如果接收端的处理能力比较强,而发送端的处理能力比较弱,这样接收端返回数据包的速度将大于用户线程的读取速度,从而会导致发送端内存上涨。因此需要配置合理的压力控制机制来解决由于发送端和接收端的处理能力不匹配所带来的问题。
本实施例中,发送端的缓存有上限控制,发送端缓存的上限可以由用户配置,本实施例对此不作限定。
另外,发送端的并发任务数也是可配置的,本实施例中,上述数据读取装置还可以包括:
调整模块65,用于根据读数据响应的接收延时和丢失情况,自动调整以并发方式向接收端发送的读数据请求的个数。
上述数据读取装置可以使硬件的功能以最大效能运转,可以有效解决网络通信成本所导致的顺序访问吞吐量降低的问题,使整个系统的顺序访问吞吐量不受IDC和网络拓扑的影响,大大提高了系统对资源的利用率。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array;以下简称:PGA),现场可编程门阵列(Field ProgrammableGate Array;以下简称:FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (4)
1.一种数据读取方法,其特征在于,包括:
以并发方式向接收端发送读数据请求;
接收所述接收端发送的读数据响应,所述读数据响应中携带所述接收端根据所述读数据请求扫描获得的数据包,所述数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序;
根据所述数据标识将接收到的数据包存入缓存;
其中,所述根据所述数据标识将接收到的数据包存入缓存包括:
当所述缓存中还有存储空间时,比较当前待存入的数据包的数据标识与所述缓存的当前存储位置的位置标识是否一致;
如果一致,则将当前待存入的数据包存入所述缓存的当前存储位置;
其中,所述将当前待存入的数据包存入所述缓存的当前存储位置之后,还包括:
记录所述缓存的当前存储位置的结束边界,所述当前存储位置的结束边界用于在发生异常和故障时进行数据流的重建。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据读数据响应的接收延时和丢失情况,自动调整以并发方式向接收端发送的读数据请求的个数。
3.一种数据读取装置,其特征在于,包括:
发送模块,用于以并发方式向接收端发送读数据请求;
接收模块,用于接收所述接收端发送的读数据响应,所述读数据响应中携带所述接收端根据所述读数据请求扫描获得的数据包,所述数据包包括数据标识,所述数据标识用于标识所述数据包扫描的先后顺序;
存入模块,用于根据所述数据标识将所述接收模块接收到的数据包存入缓存;
其中,所述存入模块包括:
比较子模块,用于当所述缓存中还有存储空间时,比较当前待存入的数据包的数据标识与所述缓存的当前存储位置的位置标识是否一致;
数据包存入子模块,用于当所述比较子模块确定当前待存入的数据包的数据标识与所述缓存的当前存储位置的位置标识一致时,将当前待存入的数据包存入所述缓存的当前存储位置;
所述数据读取装置还包括:
记录模块,用于在所述数据包存入子模块将当前待存入的数据包存入所述缓存的当前存储位置之后,记录所述缓存的当前存储位置的结束边界,所述当前存储位置的结束边界用于在发生异常和故障时进行数据流的重建。
4.根据权利要求3所述的装置,其特征在于,还包括:
调整模块,用于根据读数据响应的接收延时和丢失情况,自动调整以并发方式向接收端发送的读数据请求的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510136331.2A CN104714900B (zh) | 2015-03-26 | 2015-03-26 | 数据读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510136331.2A CN104714900B (zh) | 2015-03-26 | 2015-03-26 | 数据读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714900A CN104714900A (zh) | 2015-06-17 |
CN104714900B true CN104714900B (zh) | 2019-07-05 |
Family
ID=53414254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510136331.2A Active CN104714900B (zh) | 2015-03-26 | 2015-03-26 | 数据读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714900B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145311B (zh) * | 2017-06-12 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种io数据处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279076B1 (en) * | 1997-11-06 | 2001-08-21 | Sony Corporation | Reproducing apparatus and caching method |
EP1221646A2 (en) * | 2001-01-09 | 2002-07-10 | Kabushiki Kaisha Toshiba | Disk control system and method |
WO2011157190A2 (zh) * | 2011-06-07 | 2011-12-22 | 华为技术有限公司 | 数据接收处理方法及装置 |
CN103218455A (zh) * | 2013-05-07 | 2013-07-24 | 中国人民解放军国防科学技术大学 | Key-Value数据库用户请求的高速并发处理方法 |
-
2015
- 2015-03-26 CN CN201510136331.2A patent/CN104714900B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279076B1 (en) * | 1997-11-06 | 2001-08-21 | Sony Corporation | Reproducing apparatus and caching method |
EP1221646A2 (en) * | 2001-01-09 | 2002-07-10 | Kabushiki Kaisha Toshiba | Disk control system and method |
WO2011157190A2 (zh) * | 2011-06-07 | 2011-12-22 | 华为技术有限公司 | 数据接收处理方法及装置 |
CN103218455A (zh) * | 2013-05-07 | 2013-07-24 | 中国人民解放军国防科学技术大学 | Key-Value数据库用户请求的高速并发处理方法 |
Non-Patent Citations (1)
Title |
---|
一种支持并发访问流的文件预取算法;吴峰光等;《Journal of Software》;20100831;第21卷(第8期);第1820-1833页 |
Also Published As
Publication number | Publication date |
---|---|
CN104714900A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
CN104935648A (zh) | 一种高性价比的cdn系统及文件预推、分片缓存的方法 | |
JP3560690B2 (ja) | 並列プロセッサ装置 | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
CN104125163A (zh) | 一种数据处理方法、装置及终端 | |
CN101150486A (zh) | 一种零拷贝缓冲区队列网络数据接收的管理方法 | |
US9043546B2 (en) | Sliding-window multi-class striping | |
CN109565455A (zh) | 具有高速缓存的分组存储器中的分组描述符存储 | |
CN104133777A (zh) | 一种共享存储系统及其使用方法 | |
CN105589664A (zh) | 虚拟存储高速传输方法 | |
CN107066340A (zh) | 一种基于linux的无中断线速收包、发包方法及设备 | |
CN104714900B (zh) | 数据读取方法和装置 | |
CN102622323A (zh) | 动态可重构串行总线中基于开关矩阵的数据传输管理方法 | |
CN101303685A (zh) | 可提升通用序列总线储存设备的读写数据速率的方法 | |
WO2009043712A1 (en) | A memory buffer system and a method for operating a memory buffer system for fast data exchange | |
US20070005832A1 (en) | Frame order processing apparatus, systems, and methods | |
CN109656730A (zh) | 一种访问缓存的方法和装置 | |
CN105450679B (zh) | 进行数据云存储的方法及系统 | |
CN106933497B (zh) | 一种基于sas的管理调度装置、系统及方法 | |
CN108228476A (zh) | 一种数据获取方法及装置 | |
CN102868775A (zh) | 地址解析协议表容量的扩展方法、报文转发方法和装置 | |
CN105721338B (zh) | 一种接收数据的处理方法及装置 | |
CN106028373B (zh) | 基于云服务数据特征的移动互联网数据交换系统及方法 | |
CN107943832A (zh) | 业务处理方法及装置 | |
CN109145397A (zh) | 一种支持并行流水访问的外存仲裁结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |