CN108304272B - 一种数据io请求的处理方法及装置 - Google Patents
一种数据io请求的处理方法及装置 Download PDFInfo
- Publication number
- CN108304272B CN108304272B CN201810053511.8A CN201810053511A CN108304272B CN 108304272 B CN108304272 B CN 108304272B CN 201810053511 A CN201810053511 A CN 201810053511A CN 108304272 B CN108304272 B CN 108304272B
- Authority
- CN
- China
- Prior art keywords
- request
- data
- processing
- requests
- current data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据IO请求的处理方法及装置,所述方法包括获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;将每个区块中的数据IO请求置入消息队列;根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。所述装置执行上述方法。本发明实施例提供的数据IO请求的处理方法及装置,通过从消息队列中获取每次处理的数据IO请求,能够优化数据IO请求的处理流程。
Description
技术领域
本发明实施例涉及数据处理技术领域,具体涉及一种数据IO请求的处理方法及装置。
背景技术
负载均衡技术,英文名称为Load Balance,它能提供一种廉价有效的方法扩展带宽和增加吞吐量,同时避免数据阻塞,加强网络数据处理能力,提高网络的灵活性和可用性。
负载均衡的基本原理是:将一个任务分摊到多个操作单元上执行,不同单元做的事情基本相同。常用的网络多链路负载均衡,即根据链路个数和链路拥塞情况等因素,选择链路进行转发,在实现并发传输的同时,大大提升了数据IO处理速度,当有多个数据IO访问远端同一个设备时,若可访问该磁盘的ip有多个,就采用轮询的方式将数据IO请求依次分配到不同链路上。采用多链路的并发传输方式,能加快数据转发的速度,使得请求响应时间等性能得以提升。从而保证了数据IO请求按序到达。由于对数据IO请求的处理速度不同,会出现异步读写顺序次序混乱的情况,从而导致数据错误。现有技术需要等待上一个数据IO请求处理完才能再接收下一个数据IO请求,通过保证先发的先处理,从而实现准确的数据读写。但是,由于现有技术每处理完上一个数据IO请求,才能再接收下一个数据IO请求,然后再处理刚刚接收的下一个数据IO请求,步骤流程较为繁琐,导致处理数据IO请求的效率低下。
因此,如何避免上述缺陷,优化数据IO请求的处理流程,成为亟须解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种数据IO请求的处理方法及装置。
第一方面,本发明实施例提供一种数据IO请求的处理方法,所述方法包括:
获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;
根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;
将每个区块中的数据IO请求置入消息队列;
根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
第二方面,本发明实施例提供一种数据IO请求的处理装置,所述装置包括:
获取单元,用于获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;
划分单元,用于根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;
置入单元,用于将每个区块中的数据IO请求置入消息队列;
处理单元,用于根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:
获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;
根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;
将每个区块中的数据IO请求置入消息队列;
根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:
所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如下方法:
获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;
根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;
将每个区块中的数据IO请求置入消息队列;
根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
本发明实施例提供的数据IO请求的处理方法及装置,通过从消息队列中获取每次处理的数据IO请求,能够优化数据IO请求的处理流程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例数据IO请求的处理方法流程示意图;
图2为本发明实施例数据IO请求的处理装置结构示意图;
图3为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例数据IO请求的处理方法流程示意图,如图1所示,本发明实施例提供的一种数据IO请求的处理方法,包括以下步骤:
S1:获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量。
具体的,装置获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量。装置可以包括本地设备等。可以采用负载均衡技术获取所有数据IO请求(其中一个本地设备的),可以通过本地设备中的磁盘存储在本地设备中,可以通过链路发送和接收数据IO请求,每个数据IO请求可以包括偏移量和占用空间容量,不作具体限定。
S2:根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块。
具体的,装置根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块。根据待处理的当前数据IO请求的偏移量和占用空间容量,划分出一个区块;该一个区块的起始位置是当前数据IO请求的偏移量、一个区块的大小是当前数据IO请求的占用空间容量;如果下一个数据IO请求的占用空间与当前数据IO请求的占用空间有重叠,则将当前数据IO请求对应的一个区块扩大,以使扩大后的区块容纳下一个数据IO请求;提取更新的当前数据IO请求,并将更新的当前数据IO请求作为当前数据IO请求,重复执行根据待处理的当前数据IO请求的偏移量和占用空间容量到所述并将更新的当前数据IO请求作为当前数据IO请求之间的步骤,以将所有数据IO请求划分到相应的区块。如果下一个数据IO请求的占用空间与当前数据IO请求的占用空间没有重叠,则为下一个数据IO请求单独划分一个区块。需要说明的是:如果扩大后的区块也无法容纳下一个数据IO请求,可以将下一个数据IO请求分为两部分,第一部分放入扩大后的区块中,第二部分放入新划分的区块中。举例说明如下:
假设该磁盘当前有两个数据IO请求,第一个为读请求,偏移量是512,占用空间容量是1024,第二个为写请求,偏移量是1024,占用空间容量是1024,处理流程如下:
首先根据第一个数据IO请求的偏移量和占用空间容量,分出第一个区块,该区块从512处开始,大小为1024。
在第二个数据IO请求来到后,发现与前一个第一个数据IO请求有重叠,需要扩大第一个区块的范围,扩大后的起始位置还是512,大小为1536。将第二个数据IO请求分到扩大后的第一个区块中。重复执行上述步骤,以将所有数据IO请求划分到相应的区块。
S3:将每个区块中的数据IO请求置入消息队列。
具体的,装置将每个区块中的数据IO请求置入消息队列。以使每次数据处理都从消息队列中获取数据IO请求,而不必每处理完一个数据IO请求,再从远端接收一个数据IO请求。
S4:根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
具体的,装置根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。处理状态可以包括还未结束处理和已结束处理;请求状态可以包括读请求和写请求;将待处理的当前数据IO请求置入临时队列;将预设链路分配给置入临时队列的当前数据IO请求;调用请求处理函数对分配有链路的当前数据IO请求进行处理;根据处理过的当前数据IO请求的请求状态和/或处理状态,以及下一个数据IO请求的请求状态和/或处理状态,继续处理下一个数据IO请求,直到所述消息队列中的数据IO请求为空。链路可以理解为数据IO请求传输的信息通道,预设链路可以是实现准备好的,可以在链路增加或减少时对链路进行相应的管理操作。还可以对磁盘上线或下线是对磁盘进行相应的管理操作。
可以获取当前数据IO请求的处理状态和下一个数据IO请求的请求类型,如果处理状态为还未结束处理、且请求类型为写请求,则将下一个数据IO请求设置为等待状态;待当前数据IO请求的处理状态为已结束处理,将下一个数据IO请求作为待处理的当前数据IO请求,并重复执行上述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。需要说明的是:还可以统计每处理一个当前数据IO请求的统计次数,和消息队列中当前的数据IO请求的数量,以便于终止执行程序的运行。
如果请求类型为写请求、且处理状态为未结束处理,将下一个数据IO请求设置为等待状态;待请求类型为已结束处理后、将下一个数据IO请求作为待处理的当前数据IO请求;并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
如果处理状态为还未结束处理、且请求类型为读请求,则将下一个数据IO请求直接置入所述临时队列;待请求类型为已结束处理后,将下一个数据IO请求作为待处理的当前数据IO请求;并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
需要说明的是,本发明实施例提供的数据IO请求的处理方法,还可以采用如下方法步骤:
(1)获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量。
(2)提取当前数据IO请求的偏移量和占用空间容量,根据所述偏移量和所述占用空间容量划分当前数据IO请求到对应的一个区块。
(3)将所述一个区块中的当前数据IO请求置入消息队列。
(4)根据一个区块中的当前数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
(5)待处理完成当前数据IO请求后,提取下一个数据IO请求,用下一个数据IO请求替换上述步骤(2)~(4)之间的当前数据IO请求,并重复执行上述步骤(2)~(4)之间的步骤,直到所述消息队列中的数据IO请求为空。
(6)重复步骤(1)~(5)之间的步骤,以完成所有本地设备的消息队列中的数据IO请求的处理。
本发明实施例提供的数据IO请求的处理方法,通过从消息队列中获取每次处理的数据IO请求,能够优化数据IO请求的处理流程。
在上述实施例的基础上,所述根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求,包括:
将待处理的当前数据IO请求置入临时队列。
具体的,装置将待处理的当前数据IO请求置入临时队列。可参照上述实施例,不再赘述。
将预设链路分配给置入临时队列的当前数据IO请求。
具体的,装置将预设链路分配给置入临时队列的当前数据IO请求。可参照上述实施例,不再赘述。
调用请求处理函数对分配有链路的当前数据IO请求进行处理。
具体的,装置调用请求处理函数对分配有链路的当前数据IO请求进行处理。可参照上述实施例,不再赘述。
根据处理过的当前数据IO请求的请求状态和/或处理状态,以及下一个数据IO请求的请求状态和/或处理状态,继续处理下一个数据IO请求,直到所述消息队列中的数据IO请求为空。
具体的,装置根据处理过的当前数据IO请求的请求状态和/或处理状态,以及下一个数据IO请求的请求状态和/或处理状态,继续处理下一个数据IO请求,直到所述消息队列中的数据IO请求为空。可参照上述实施例,不再赘述。
本发明实施例提供的数据IO请求的处理方法,有序地实现了对置入消息队列的数据IO请求读写处理,进一步优化数据IO请求的处理流程。
在上述实施例的基础上,所述当前数据IO请求的处理状态包括还未结束处理和已结束处理、所述下一个数据IO请求的请求类型包括写请求,相应的;所述根据处理过的当前数据IO请求的请求状态和/或处理状态,以及下一个数据IO请求的请求状态和/或处理状态,继续处理下一个数据IO请求,包括:
若所述处理状态为还未结束处理、且所述请求类型为写请求,则将下一个数据IO请求设置为等待状态。
具体的,装置若判断获知所述处理状态为还未结束处理、且所述请求类型为写请求,则将下一个数据IO请求设置为等待状态。可参照上述实施例,不再赘述。
待当前数据IO请求的处理状态为已结束处理,将下一个数据IO请求作为待处理的当前数据IO请求。
具体的,装置待当前数据IO请求的处理状态为已结束处理,将下一个数据IO请求作为待处理的当前数据IO请求。可参照上述实施例,不再赘述。
并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
具体的,装置并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。可参照上述实施例,不再赘述。
本发明实施例提供的数据IO请求的处理方法,根据数据IO请求的请求类型和处理状态,有序地实现了对置入消息队列的数据IO请求读写处理,进一步优化数据IO请求的处理流程。
在上述实施例的基础上,所述当前数据IO请求的请求类型包括写请求、所述当前数据IO请求的处理状态包括还未结束处理和已结束处理;相应的,所述根据处理过的当前数据IO请求的请求状态和/或处理状态,以及下一个数据IO请求的请求状态和/或处理状态,继续处理下一个数据IO请求,包括:
若所述请求类型为写请求、且所述处理状态为未结束处理,将下一个数据IO请求设置为等待状态。
具体的,装置若判断获知所述请求类型为写请求、且所述处理状态为未结束处理,将下一个数据IO请求设置为等待状态。可参照上述实施例,不再赘述。
待所述请求类型为已结束处理后、将下一个数据IO请求作为待处理的当前数据IO请求。
具体的,装置待所述请求类型为已结束处理后、将下一个数据IO请求作为待处理的当前数据IO请求。可参照上述实施例,不再赘述。
并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
具体的,装置并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。可参照上述实施例,不再赘述。
本发明实施例提供的数据IO请求的处理方法,根据数据IO请求的请求类型和处理状态,有序地实现了对置入消息队列的数据IO请求读写处理,进一步优化数据IO请求的处理流程。
在上述实施例的基础上,所述当前数据IO请求的处理状态包括还未结束处理和已结束处理、所述下一个数据IO请求的请求类型包括读请求,相应的;所述根据处理过的当前数据IO请求的请求状态和/或处理状态,以及下一个数据IO请求的请求状态和/或处理状态,继续处理下一个数据IO请求,包括:
若所述处理状态为还未结束处理、且所述请求类型为读请求,则将下一个数据IO请求直接置入所述临时队列。
具体的,装置若判断获知所述处理状态为还未结束处理、且所述请求类型为读请求,则将下一个数据IO请求直接置入所述临时队列。可参照上述实施例,不再赘述。
待所述请求类型为已结束处理后,将下一个数据IO请求作为待处理的当前数据IO请求。
具体的,装置待所述请求类型为已结束处理后,将下一个数据IO请求作为待处理的当前数据IO请求。可参照上述实施例,不再赘述。
并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
具体的,装置并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。可参照上述实施例,不再赘述。
本发明实施例提供的数据IO请求的处理方法,根据数据IO请求的请求类型和处理状态,有序地实现了对置入消息队列的数据IO请求读写处理,进一步优化数据IO请求的处理流程。
在上述实施例的基础上,所述根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块,包括:
根据待处理的当前数据IO请求的偏移量和占用空间容量,划分出一个区块;所述一个区块的起始位置是所述当前数据IO请求的偏移量、所述一个区块的大小是所述当前数据IO请求的占用空间容量。
具体的,装置根据待处理的当前数据IO请求的偏移量和占用空间容量,划分出一个区块;所述一个区块的起始位置是所述当前数据IO请求的偏移量、所述一个区块的大小是所述当前数据IO请求的占用空间容量。可参考上述实施例,不再赘述。
若下一个数据IO请求的占用空间与当前数据IO请求的占用空间有重叠,则将所述当前数据IO请求对应的一个区块扩大,以使扩大后的区块容纳所述下一个数据IO请求。
具体的,装置若判断获知下一个数据IO请求的占用空间与当前数据IO请求的占用空间有重叠,则将所述当前数据IO请求对应的一个区块扩大,以使扩大后的区块容纳所述下一个数据IO请求。可参考上述实施例,不再赘述。
提取更新的当前数据IO请求,并将更新的当前数据IO请求作为所述当前数据IO请求,重复执行所述根据待处理的当前数据IO请求的偏移量和占用空间容量到所述并将更新的当前数据IO请求作为所述当前数据IO请求之间的步骤,以将所有数据IO请求划分到各数据IO请求对应的区块。
具体的,装置提取更新的当前数据IO请求,并将更新的当前数据IO请求作为所述当前数据IO请求,重复执行所述根据待处理的当前数据IO请求的偏移量和占用空间容量到所述并将更新的当前数据IO请求作为所述当前数据IO请求之间的步骤,以将所有数据IO请求划分到各数据IO请求对应的区块。可参考上述实施例,不再赘述。
本发明实施例提供的数据IO请求的处理方法,通过更灵活地使用区块,有利于对数据IO请求处理速度的提升。
在上述实施例的基础上,所述以处理所述所有数据IO请求的步骤之后,所述方法还包括:
若处理完成每个区块中的数据IO请求,释放所述每个区块的占用空间。
具体的,装置若处理完成每个区块中的数据IO请求,释放所述每个区块的占用空间。有助于进一步节省存储资源。
本发明实施例提供的数据IO请求的处理方法,通过释放每个区块的占用空间,有助于进一步节省存储资源。
图2为本发明实施例数据IO请求的处理装置结构示意图,如图2所示,本发明实施例提供了一种数据IO请求的处理装置,包括获取单元1、划分单元2、置入单元3和处理单元4,其中:
获取单元1用于获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;划分单元2用于根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;置入单元3用于将每个区块中的数据IO请求置入消息队列;处理单元4用于根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
具体的,获取单元1用于获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;划分单元2用于根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;置入单元3用于将每个区块中的数据IO请求置入消息队列;处理单元4用于根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
本发明实施例提供的数据IO请求的处理装置,通过从消息队列中获取每次处理的数据IO请求,能够优化数据IO请求的处理流程。
本发明实施例提供的数据IO请求的处理装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图3为本发明实施例提供的电子设备实体结构示意图,如图3所示,所述电子设备包括:处理器(processor)301、存储器(memory)302和总线303;
其中,所述处理器301、存储器302通过总线303完成相互间的通信;
所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;将每个区块中的数据IO请求置入消息队列;根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;将每个区块中的数据IO请求置入消息队列;根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;将每个区块中的数据IO请求置入消息队列;根据每个区块中的数据IO请求的请求状态和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。
Claims (9)
1.一种数据IO请求的处理方法,其特征在于,包括:
获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;
根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;
将每个区块中的数据IO请求置入消息队列;
根据每个区块中的数据IO请求的请求类型和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求;
所述根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块,包括:
根据待处理的当前数据IO请求的偏移量和占用空间容量,划分出一个区块;所述一个区块的起始位置是所述当前数据IO请求的偏移量、所述一个区块的大小是所述当前数据IO请求的占用空间容量;
若下一个数据IO请求的占用空间与当前数据IO请求的占用空间有重叠,则将所述当前数据IO请求对应的一个区块扩大,以使扩大后的区块容纳所述下一个数据IO请求;
提取更新的当前数据IO请求,并将更新的当前数据IO请求作为所述当前数据IO请求,重复执行所述根据待处理的当前数据IO请求的偏移量和占用空间容量到所述并将更新的当前数据IO请求作为所述当前数据IO请求之间的步骤,以将所有数据IO请求划分到各数据IO请求对应的区块。
2.根据权利要求1所述的方法,其特征在于,所述根据每个区块中的数据IO请求的请求类型和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求,包括:
将待处理的当前数据IO请求置入临时队列;
将预设链路分配给置入临时队列的当前数据IO请求;
调用请求处理函数对分配有链路的当前数据IO请求进行处理;
根据处理过的当前数据IO请求的请求类型和/或处理状态,以及下一个数据IO请求的请求类型和/或处理状态,继续处理下一个数据IO请求,直到所述消息队列中的数据IO请求为空。
3.根据权利要求2所述的方法,其特征在于,所述当前数据IO请求的处理状态包括还未结束处理和已结束处理、所述下一个数据IO请求的请求类型包括写请求,相应的;所述根据处理过的当前数据IO请求的请求类型和/或处理状态,以及下一个数据IO请求的请求类型和/或处理状态,继续处理下一个数据IO请求,包括:
若所述处理状态为还未结束处理、且所述请求类型为写请求,则将下一个数据IO请求设置为等待状态;
待当前数据IO请求的处理状态为已结束处理,将下一个数据IO请求作为待处理的当前数据IO请求;
并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
4.根据权利要求2所述的方法,其特征在于,所述当前数据IO请求的请求类型包括写请求、所述当前数据IO请求的处理状态包括还未结束处理和已结束处理;相应的,所述根据处理过的当前数据IO请求的请求类型和/或处理状态,以及下一个数据IO请求的请求类型和/或处理状态,继续处理下一个数据IO请求,包括:
若所述请求类型为写请求、且所述处理状态为未结束处理,将下一个数据IO请求设置为等待状态;
待所述请求类型为已结束处理后、将下一个数据IO请求作为待处理的当前数据IO请求;
并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
5.根据权利要求2所述的方法,其特征在于,所述当前数据IO请求的处理状态包括还未结束处理和已结束处理、所述下一个数据IO请求的请求类型包括读请求,相应的;所述根据处理过的当前数据IO请求的请求类型和/或处理状态,以及下一个数据IO请求的请求类型和/或处理状态,继续处理下一个数据IO请求,包括:
若所述处理状态为还未结束处理、且所述请求类型为读请求,则将下一个数据IO请求直接置入所述临时队列;
待所述请求类型为已结束处理后,将下一个数据IO请求作为待处理的当前数据IO请求;
并重复执行所述将待处理的当前数据IO请求置入临时队列到所述直到所述消息队列中的数据IO请求为空之间的步骤。
6.根据权利要求1所述的方法,其特征在于,所述以处理所述所有数据IO请求的步骤之后,所述方法还包括:
若处理完成每个区块中的数据IO请求,释放所述每个区块的占用空间。
7.一种数据IO请求的处理装置,其特征在于,包括:
获取单元,用于获取所有数据IO请求;每个数据IO请求包括偏移量和占用空间容量;
划分单元,用于根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块;
置入单元,用于将每个区块中的数据IO请求置入消息队列;
处理单元,用于根据每个区块中的数据IO请求的请求类型和/或处理状态,对置入消息队列的数据IO请求进行顺序读写处理,以处理所述所有数据IO请求;
所述根据所述偏移量和所述占用空间容量划分所有数据IO请求到各数据IO请求对应的区块,包括:
根据待处理的当前数据IO请求的偏移量和占用空间容量,划分出一个区块;所述一个区块的起始位置是所述当前数据IO请求的偏移量、所述一个区块的大小是所述当前数据IO请求的占用空间容量;
若下一个数据IO请求的占用空间与当前数据IO请求的占用空间有重叠,则将所述当前数据IO请求对应的一个区块扩大,以使扩大后的区块容纳所述下一个数据IO请求;
提取更新的当前数据IO请求,并将更新的当前数据IO请求作为所述当前数据IO请求,重复执行所述根据待处理的当前数据IO请求的偏移量和占用空间容量到所述并将更新的当前数据IO请求作为所述当前数据IO请求之间的步骤,以将所有数据IO请求划分到各数据IO请求对应的区块。
8.一种电子设备,其特征在于,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810053511.8A CN108304272B (zh) | 2018-01-19 | 2018-01-19 | 一种数据io请求的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810053511.8A CN108304272B (zh) | 2018-01-19 | 2018-01-19 | 一种数据io请求的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108304272A CN108304272A (zh) | 2018-07-20 |
CN108304272B true CN108304272B (zh) | 2020-12-15 |
Family
ID=62865699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810053511.8A Active CN108304272B (zh) | 2018-01-19 | 2018-01-19 | 一种数据io请求的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108304272B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388596B (zh) * | 2018-09-29 | 2019-12-31 | 上海依图网络科技有限公司 | 一种数据操作方法和装置 |
CN110990302B (zh) * | 2019-11-22 | 2021-11-02 | 北京云宽志业网络技术有限公司 | 数据缓存方法、装置、电子设备及存储介质 |
CN111245897B (zh) * | 2019-12-30 | 2022-08-26 | 深圳物缘科技有限公司 | 数据处理方法、装置、系统、存储介质及处理器 |
CN111414135A (zh) * | 2020-03-11 | 2020-07-14 | 国家海洋环境预报中心 | 一种高性能计算机系统的io效率优化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256505A (zh) * | 2007-03-02 | 2008-09-03 | 中国科学院声学研究所 | 基于io事件通知机制的单进程内容服务器装置及方法 |
CN101645837A (zh) * | 2009-09-04 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 实现负载均衡的方法和装置 |
CN102053800A (zh) * | 2010-11-26 | 2011-05-11 | 华为技术有限公司 | 数据存取的方法、消息接收解析器及系统 |
US8230134B2 (en) * | 2009-06-01 | 2012-07-24 | Lsi Corporation | Fast path SCSI IO |
CN105138471A (zh) * | 2015-09-01 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 镜像过程处理方法和装置 |
CN107305473A (zh) * | 2016-04-21 | 2017-10-31 | 华为技术有限公司 | 一种io请求的调度方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375946B (zh) * | 2013-08-16 | 2018-04-20 | 华为技术有限公司 | 一种数据处理的方法及装置 |
-
2018
- 2018-01-19 CN CN201810053511.8A patent/CN108304272B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256505A (zh) * | 2007-03-02 | 2008-09-03 | 中国科学院声学研究所 | 基于io事件通知机制的单进程内容服务器装置及方法 |
US8230134B2 (en) * | 2009-06-01 | 2012-07-24 | Lsi Corporation | Fast path SCSI IO |
CN101645837A (zh) * | 2009-09-04 | 2010-02-10 | 成都市华为赛门铁克科技有限公司 | 实现负载均衡的方法和装置 |
CN102053800A (zh) * | 2010-11-26 | 2011-05-11 | 华为技术有限公司 | 数据存取的方法、消息接收解析器及系统 |
CN105138471A (zh) * | 2015-09-01 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 镜像过程处理方法和装置 |
CN107305473A (zh) * | 2016-04-21 | 2017-10-31 | 华为技术有限公司 | 一种io请求的调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108304272A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
CN113641457B (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
CN107241281B (zh) | 一种数据处理方法及其装置 | |
CN105511954B (zh) | 一种报文处理方法及装置 | |
CN110750341B (zh) | 任务调度方法、装置、系统、终端设备及存储介质 | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
EP3553656A1 (en) | Resource scheduling method and device | |
CN109558344B (zh) | 一种适用于网络传输的dma传输方法及dma控制器 | |
CN113485822A (zh) | 内存管理方法、系统、客户端、服务器及存储介质 | |
CN109408243B (zh) | 一种基于rdma的数据处理方法、装置和介质 | |
CN105468302B (zh) | 一种处理数据的方法、装置及系统 | |
CN102301664B (zh) | 多核处理器的流分发方法及装置 | |
CN105337896A (zh) | 报文处理方法和装置 | |
CN114168302A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN115794317B (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN113157465A (zh) | 基于指针链表的消息发送方法及装置 | |
US11194619B2 (en) | Information processing system and non-transitory computer readable medium storing program for multitenant service | |
CN102098215A (zh) | 一种多应用收包的优先级管理方法 | |
CN107911317B (zh) | 一种报文调度方法及装置 | |
CN112748883B (zh) | 一种io请求流水线处理设备、方法、系统及存储介质 | |
CN115202842A (zh) | 任务调度方法及装置 | |
CN114675954A (zh) | 任务调度方法及装置 | |
CN111290850B (zh) | 一种数据存储方法、装置及设备 | |
CN110764707A (zh) | 数据处理方法及装置 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220324 Address after: No. 407, floor 4, No. 9, No. 9, shangdijiu street, Haidian District, Beijing 100085 Patentee after: Shenzhou Yunke (Beijing) Technology Co.,Ltd. Address before: 518131 F3, 11th floor, No. 8 Kefa Road, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province Patentee before: Shenzhen science and Technology Co.,Ltd. digital cloud data |
|
TR01 | Transfer of patent right |