CN114995748A - 请求处理方法及装置 - Google Patents
请求处理方法及装置 Download PDFInfo
- Publication number
- CN114995748A CN114995748A CN202210499884.4A CN202210499884A CN114995748A CN 114995748 A CN114995748 A CN 114995748A CN 202210499884 A CN202210499884 A CN 202210499884A CN 114995748 A CN114995748 A CN 114995748A
- Authority
- CN
- China
- Prior art keywords
- request
- data processing
- processing
- queue
- target 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 432
- 238000007781 pre-processing Methods 0.000 claims description 4
- 230000003321 amplification Effects 0.000 abstract description 20
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 20
- 238000005192 partition Methods 0.000 description 89
- 238000000034 method Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000010923 batch production Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供请求处理方法及装置,其中所述请求处理方法包括:为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;基于所述请求处理队列对所述目标数据处理请求进行存储。从而避免了由于缓存中大量的存储空间未被使用所导致的写放大现象,进一步节省存储资源。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种请求处理方法。
背景技术
随着计算机技术的不断发展,在消息存储场景下,操作系统会将接收到的消息(例如客户端发送的请求)写入缓存,并通过异步刷盘机制将缓存中的消息直接存储至存储模块(如磁盘、硬盘、云盘等)。在此过程中,由于消息的数据量过于碎小,不能达到一个缓存(例如大小为4K)的单位大小,因此,当操作系统通过刷盘机制将写入缓存的消息存储至存储模块时,由于缓存中大量的存储空间未被使用,所以会产生显著的写放大现象(即实际写入的数据量大于所要求数据量),致使大量的存储资源浪费。
发明内容
有鉴于此,本说明书实施例提供了一种请求处理方法。本说明书一个或者多个实施例同时涉及一种请求处理装置,一种计算设备,一种计算机可读存储介质,一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种请求处理方法,包括:
为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;
将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;
在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;
基于所述请求处理队列对所述目标数据处理请求进行存储。
根据本说明书实施例的第二方面,提供了一种请求处理装置,包括:
确定模块,被配置为为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;
合并模块,被配置为将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;
发送队列模块,被配置为在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;
存储模块,被配置为基于所述请求处理队列对所述目标数据处理请求进行存储。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现所述请求处理方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现所述请求处理方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行所述请求处理方法的步骤。
本说明书提供的请求处理方法,包括:为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;基于所述请求处理队列对所述目标数据处理请求进行存储。
具体地,该方法将初始数据处理请求存储至请求处理队列对应的请求存储单元,并对该初始数据处理请求进行合并处理,获得目标数据处理请求,且在请求存储单元的当前状态信息满足预设存储条件的情况下,通过请求处理队列对目标数据处理请求进行存储,从而避免了由于缓存中大量的存储空间未被使用所导致的写放大现象,进一步节省存储资源。
附图说明
图1是本说明书一个实施例提供的客户端batch方案的示意图;
图2是本说明书一个实施例提供的服务端按分片写单独文件方案的示意图;
图3是本说明书一个实施例提供的一种请求处理方法的应用场景示意图;
图4是本说明书一个实施例提供的一种请求处理方法的流程图;
图5是本说明书一个实施例提供的一种请求处理方法的处理过程流程图;
图6是本说明书一个实施例提供的一种请求处理装置的结构示意图;
图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
Page Cache:页缓存,用于缓存文件的页数据。
CommitLog:是一种预写日志(WriteAhead Log),数据系统一般会将接收的数据首先按照顺序存放在CommitLog中,以加快数据的处理速度。
Page Cache:页缓存,操作统读写磁盘文件时为了提高性能而将一部分文件缓存到内存中,Page Cache每页默认大小4KB。
写放大(WriteAmplificatIOn):是一种IO现象,表述为实际写入的数据量大于所要求数据量。写放大会使得写入成本增高,其产生原因有多种,比如,由于客户端每次IO请求的数据量过于碎小,页缓存数据量不足4KB,此时操作系统触发脏页回写,导致实际写入的数据量大于所要求数据量的多倍。
基于CommitLog的消息引擎通过顺序写入Page Cache、异步刷盘机制,能达到很高的存储性能。但是在多分区碎片消息存储场景下存在如下挑战:比如在IO方面,由于客户端发起写入请求的数据量过于碎小,并不足PageCache的单位大小,例如一个PageCache的单位大小为4K;因此,当操作系统触发IO行为时,会产生显著的写放大现象,致使系统付出数十倍原数据量大小的写入成本。
与此同时,在IO带宽的限制下,形成IO短板,从而产生回压,影响系统整体写入的性能。也即是说,系统是按照4K的大小向磁盘写入数据,但是由于写放大效应,因此导致实际写入的数据量大于所要求数据量,因此,当IO带宽为达到限制(例如单秒吞吐是140兆)的情况下,磁盘的存储空间早已全部使用,导致上层网络的数据无法存储至磁盘中,所以会IO短板,从而产生回压。
同时,在计算方面,由于CommitLog的独占锁,每次IO请求只能由一个线程处理,会阻塞其他所有分区请求,无法高效利用多核并行计算的优势,从而影响写入性能。
因此,针对写放大现象,本说明书提供了两种方案,第一种方案为:客户端batch(合并消息);参见图1,图1是本说明书一个实施例提供的客户端batch方案的示意图;具体地,客户端在接收到消息(Message,例如IO请求、写请求、读请求等)之后,通过RecordAccumulator流程,将消息存储在缓存中,并在缓存中对消息进行合并处理,获得合并消息(batch);之后通过发送模块(Sender)将合并消息发送至Broker。其中,该方案的优缺点在于:客户端batch,可以解决少客户端造成的碎片问题,但无法解决多客户端造成的碎片问题。
第二种方案为:参见图2,图2是本说明书一个实施例提供的服务端按分片写单独文件方案的示意图;具体的,服务端按分片写单独文件。该方案在页缓存中,为每个分区队列(queue)建立对应的存储文件(即图2中的“分区队列0-24”至“分区队列0-28”、以及“分区队列1-724”至“分区队列1-11”),其中,该分区队列中存储有内存中的消息。然后通过上锁写入的方式,将每个分区队列的消息按序写入对应的页缓存中的存储文件。其中,该方案的优缺点在于:这种方式实现了多线程并发写入,提升了写入效率;但是无法解决碎小消息带来的写放大的问题,同时分区队列一旦较多时,就会有文件碎片化问题,在IO上产生大量的随机写,性能会急剧下降。
基于此,在本说明书中,提供了一种请求处理方法,本说明书同时涉及一种请求处理装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。
图3示出了根据本说明书一个实施例提供的一种请求处理方法的应用场景示意图,其中,图3中的301是指Msg(即消息)。图3中的302是指Local batch(即本地批处理缓存)。图3中的303是指batch Buffer(批处理缓存区)。该图3中的术语的英文解释分别可以为:暂存缓冲区(Commit buffer)。合并存储服务(Accumulate Service)。请求(Requests),该请求可以理解为本说明书中的初始数据处理请求。异步回调结果(Future)。Future接口的管理请求(Future manager)。缓存池(Bufferpool)。锁分离请求(Lock separation)。并行批处理请求(Parallel batch)。保存consumer(用户)的位移信息的文件(Offsets)。过期时间(Expire time)。池管理器(pools manager)。拉取批次(Poll batch)。子缓冲池线程(Sub-pool thread)。无竞争(No competition)。自动回收(Automatic recycling)。请求偏移量(Apply offset)。分区队列(Partition queue)。最高优先队列批处理(Top queuebatch)。批处理结果(batches)。合并存储服务或者批处理结果(Accumulate Service getbatches)。检查批处理结果是否满足预设条件(Check follow condition)。等待写入磁盘的批次(Inflight bathes)。最近待提交文件(Last defaultfile)。位点检查(Offsetcheck)。位点重建(Offset rebuild)。写入批处理结果(batch write),该写入批处理结果是指将批处理结果写入至磁盘中。提交日志(Commitlog)。写入完成(Complete)。建立索引(Build index)。回收批处理缓存(Collect batch buffer)。批处理缓存池(pool batchbuffer)。将批处理结果发送至Consume queue(Dispath)。消费队列(Consume queue)。字节缓存区(Bytebuffer)。preen编码(即preen code)可以理解为一种编码。
需要说明的是,图3中的容量已满可以理解为本地批处理缓存的容量已经达到预设容量阈值,该预设容量阈值可以为80%;也即是,该本地批处理缓存已经存满请求,该容量已满可以用Full表示。该请求过期可以理解为本地批处理缓存中存储的请求已过期,该请求过期可以用Expire表示。
参见图3可知,本说明书提供的请求处理方法提供了一种请求处理系统,该系统整体由Commit Buffer和Accumulate Service两个核心子系统组成,其中Commit Buffer负责:分区并行计算,内存池管理,请求合并等核心功能;Accumulate Service负责批量存储,内存回收等核心功能。通过Commit Buffer的执行流程,以及Accumulate Service的执行流程,能够实现分区并行计算、预合并IO请求、批量存储等功能;具体地,本说明书提供的请求处理方法,通过内存池和Local batch,构建分区缓存队列,实现高性能的并行计算。通过分区缓存队列预计算,获得并行计算的收益的同时,不占用磁盘IO资源,实现高性能的并行合并。并通过FIFO队列,Accumulate Service单线程获取合并后的IO请求,保障顺序写的同时批量存储显著减少写放大。从而极大降低IOPS的同时,显著减少了写放大的现象,不仅节约了IO带宽,并且显著提高了消息存储的性能。需要说明的是,该图3中展示的部件实现请求处理方法的具体步骤,可参见下述图4、图5中对应或相应的内容,本说明书在此不过多赘述。
图4示出了根据本说明书一个实施例提供的一种请求处理方法的流程图,具体包括以下步骤。
需要说明的是,本说明书提供的请求处理方法包括两个流程:请求入队列流程,以及请求存储流程。其中,该请求入队列流程包括:为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列。例如上述Commit Buffer流程。
其中,该请求存储流程包括基于所述请求处理队列对所述目标数据处理请求进行存储。例如,Accumulate Service流程。
并且,本说明书提供的请求处理方法可以应用在不同的场景中,例如,在云存储场景中,本说明书提供的请求处理方法可以应用在云存储系统的服务器。其中,该云存储系统可以包括服务器以及数据存储模块(例如云盘、磁盘、固态硬盘等等)。该服务器,用于将接收到的请求和/或消息进行并向合并处理,并将处理后的请求和/或消息发送至数据存储模块中进行存储。该数据存储模块用于对接收到的数据(包括但不限于请求、消息等)进行存储。
例如,在分布式存储场景中,本说明书提供的请求处理方法可以应用在分布式存储系统的请求处理节点。其中,该分布式存储系统可以包括请求处理节点以及请求存储节点。该请求处理节点,用于将接收到的请求和/或消息进行并向合并处理,并将处理后的请求和/或消息发送至请求存储节点中进行存储。该请求存储节点用于对接收到的数据(包括但不限于请求、消息等)进行存储。
步骤402:为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元。
需要说明的是,本说明书提供的请求处理方法能够应用在不同的场景中,为了便于解释,以该请求处理方法应用于云存储场景为例,对该请求处理方法进行说明。在云存储场景的情况下,该请求处理方法应用于云存储系统的服务器。此外,针对请求处理方法应用于其他场景的描述,可参见本说明书中对应或相应的内容,本说明书在此不做具体限制。
其中,该初始数据处理请求可以理解为服务器接收到的请求,该初始数据处理请求包括但不限于读请求、写请求、IO请求等等;
请求处理队列可以理解为能够按照先进先出的规则,对接收到的初始数据处理请求进行存储的队列,例如分区队列;在请求处理方法应用于云存储场景的情况下,该服务器能够按照先进先出的规则,将分区队列中的初始数据处理请求存储至云盘中。
请求存储单元可以理解为可以对需要放入请求处理队列中的请求进行预存的存储单元,例如一块缓存、local batch(本地批处理缓存)等。需要说明的是,本说明书提供的请求处理方法,为了避免写放大现象,需要对接收到的请求进行并行合并处理,之后在完成并行合并处理之后,再将合并后的请求放入队列中,因此,为了保证数据合并处理的顺利进行,会为不同的队列确定对应的缓存,并将该接收到的请求存储在该队列对应的缓存中。
下面以本说明书提供的请求处理方法在基于分区队列通过并向合并的方式批量存储消息的场景下的应用为例,对为接收到的初始数据处理请求确定对应的请求处理队列,和请求存储单元做进一步说明。其中,该初始数据处理请求可以为IO请求,该请求处理队列可以为分区队列,该请求存储单元可以为local batch。
基于此,在云存储场景下,客户端能够向云存储系统的服务器发送IO请求,该服务器在接收到该IO请求之后,能够为该IO请求确定对应的分区队列,并确定该分区队列对应的local batch。
进一步的,在本说明书提供的一实施例中,服务器在接收到的初始数据处理请求之后,能够通过Topic(主题)消息传递模型,将该初始数据处理请求存储至云盘中。而在每个主题对应有多个分区队列,基于此服务器可以根据该初始数据处理请求的请求类型,确定其对应的主题;并从该主题对应的分区队列中选择空闲的分区队列,将该请求存储至云盘中。具体地,所述为接收到的所述初始数据处理请求确定对应的请求处理队列,包括:
确定接收到的初始数据处理请求的请求类型,并确定与所述请求类型对应的队列类型;
确定所述队列类型对应的至少两个请求处理队列,并分别确定所述至少两个请求处理队列的当前状态信息;
基于所述当前状态信息,从所述至少两个请求处理队列中为所述初始数据处理请求确定对应的请求处理队列。
其中,该请求类型可以理解为该初始数据处理请求的类型,例如,在该初始数据处理请求为IO请求的情况下,该请求类型为IO请求类型。在该初始数据处理请求为写请求的情况下,该请求类型为写请求类型。
队列类型可以理解为该请求处理队列的类型,同一类型的请求处理队列用于处理同一类型的数据处理请求,例如,该队列类型可以为该请求处理队列所属的主题。
当前状态信息可以理解为任意能够表征该请求处理队列当前是否空闲的信息,例如,该请求处理队列中当前存储的请求数量等。
具体地,该服务器在接收到初始数据处理请求之后,能够确定该初始数据处理请求的请求类型,并确定该请求类型对应的队列类型。在实际应用中,服务器记录有请求类型与队列类型的对应关系。
之后该服务器确定该队列类型对应的至少两个请求处理队列,并分别确定至少两个请求处理队列中每个请求处理队列的当前状态信息。
基于该当前状态信息,从至少两个请求处理队列中确定性能较优的请求处理队列,并将该性能较优的请求处理队列作为初始数据处理请求对应的请求处理队列。其中,性能较优的请求处理队列可以理解为最空闲的请求处理队列。
沿用上例,该服务器在接收到IO请求之后,能够根据该IO请求的类型为其确定对应的主题,并确定该主题对应的多个分区队列;获取表征每个分区队列空闲状态的信息(如分区队列中的请求数量);基于该信息从多个分区队列中选择出最空闲的分区队列,并将该最空闲的分区队列作为将该IO请求存储至云盘的队列。
在本说明书提供的实施例中,基于该初始数据处理请求的请求类型,快速且准确的从至少两个请求处理队列中,为初始数据处理请求确定对应的请求处理队列。便于后续基于该请求处理队列对该初始数据处理请求进行处理。
进一步地,在本说明书提供的实施例中,服务器在确定请求处理队列对应的请求存储单元的过程中,可能会存在该请求处理队列不存在对应的请求存储单元,或者该请求处理队列对应的请求存储单元的容量,不足以容纳该初始数据处理请求的情况下,在此情况下,为了保证能够对该初始数据处理请求进行合并处理,因此,需要为该请求处理队列创建对应的请求存储单元。也即是说,在确定所述请求处理队列不存在对应的请求存储单元,或者所述请求处理队列对应的请求存储单元不满足请求存储条件的情况下,为所述请求处理队列创建对应的请求存储单元,从而保证针对该初始数据处理请求的合并处理能够顺利的执行,进一步从而避免了由于缓存中大量的存储空间未被使用所导致的写放大现象。具体地,所述确定所述请求处理队列对应的请求存储单元,包括:
在确定所述请求处理队列不存在对应的请求存储单元,或者
所述请求处理队列对应的请求存储单元不满足请求存储条件的情况下,基于所述请求处理队列的属性信息,以及所述初始数据处理请求的属性信息生成单元获取请求;
将所述单元获取请求发送至单元分配模块;
获取所述单元分配模块响应于所述单元获取请求,从预设待分配模块中为所述请求处理队列分配的请求存储单元。
其中,该请求存储单元不满足请求存储条件可以根据实际应用场景进行设置,本说明书对此不做具体限制,例如,在实际应用中,该请求存储单元的剩余存储空间不足以容纳该初始数据处理请求时,确定该请求存储单元不满足请求存储条件。或者,已经将该请求存储单元中的目标数据处理进行存储后,但并未回收该请求存储单元的情况下,确定该请求存储单元不满足请求存储条件。或者,该请求存储单元被设置为禁止访问的情况下,确定该请求存储单元不满足请求存储条件。
请求处理队列的属性信息包括但不限于该请求处理队列的标识信息(例如,该标识信息可以为名称、ID、编号等信息)。
初始数据处理请求的属性信息包括但不限于初始数据处理请求的标识信息、请求类型、大小等信息。
单元分配模块可以理解为服务器中能够为请求处理队列分配对应的请求存储单元的模块,例如,该单元分配模块可以为内存池管理模块。
该单元获取请求可以理解为向单元分配模块申请分配一个请求存储单元的模块。例如,在请求储存单元为local batch的情况下,该单元获取请求为local batch申请。因此,该local batch申请中可以携带分区队列的标识信息、以及该写请求的大小。后续能够基于该标识信息以及该写请求的大小,为该分区队列分配一块能够容纳该写请求的localbatch。
该单元获取请求中可以携带有请求处理队列的标识信息以及初始数据处理请求的大小
预设待分配模块可以理解为单元分配模块为请求处理队列预先确定的、专用于在接收到单元获取请求的情况下,能够为该请求处理队列分配对应的请求存储单元的模块,在实际应用中,该请求存储单元属于预设待分配模块。在实际应用中,内存池管理模块为了快速的为分区队列分配对应的local batch,会预先从内存中为分区队列划分出一块存储区域(即预设待分配模块),当接收到local batch申请(即单元获取请求)时,能从该存储区域中为该分区队列划分出一块符合大小的子区域作为local batch。
沿用上例,服务器在为IO请求选取分区队列之后,需要判断分区队列对应的localbatch是否存在,或者,该分区队列对应的local batch的剩余容量是否容纳IO请求。
在分区队列不存在对应的local batch,或者,该分区队列对应的local batch的剩余容量不能容纳IO请求的情况下,基于该分区队列的标识信息以及该IO请求的大小,向内存池管理模块申请新的local batch。
而该内存池管理模块在接收到该申请之后,能够从预先为所有分区队列划分的内存区域中,为申请新的local batch的分区队列,分配一块大小能够容纳IO请求的区域作为Local batch。
步骤404:将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求。
其中,对初始数据处理请求进行合并处理,可以通过任意一种能够实现请求合并的方式实现,本说明书对此不做具体限制。例如,将local batch中当前存储的所有IO请求进行打包处理,并在local batch中被写入新的请求时,能够新的请求与历史打包的IO重新进行打包,从而实现将该local batch中的IO请求合并。或者,确定IO请求数据存储模块中需要进行操作的逻辑地址,并将逻辑地址连续相接的多个IO请求合并为一个请求。从而实现请求合并。
具体地,服务器将该初始数据处理请求存储至请求存储单元,并对请求存储单元中的初始数据处理请求进行合并处理,获得目标数据处理请求。
进一步地,在将初始数据处理请求存储至请求存储单元的过程中,为了便于后续能够快速、安全的对该初始数据处理请求进行合并处理,会对该初始数据处理请求进行预处理;该预处理包括但不限于序列化操作、数据局部完整性验证、安全性验证等等,本说明书对此不做具体限制,从而保证初始数据处理请求的规整性、完整性、以及完全性。具体地,所述将所述初始数据处理请求存储至所述请求存储单元,包括:
对所述初始数据处理请求进行预处理,获得处理后的初始数据处理请求;
将所述处理后的初始数据处理请求,存储至所述请求存储单元。
该对初始数据处理请求进行预处理,包括但不限于序列化操作、数据局部完整性验证、安全性验证等等,本说说明书对此不做具体限制。并且,该预处理可以通过任意一种方式实现,本说明书对此也不做具体限制。
沿用上例,服务器在将IO请求存储至local batch的过程中,会对该IO请求进行序列化操作、数据局部完整性验证、安全性验证等处理,并将处理后的IO请求存储至localbatch。
进一步地,本说明书提供的实施例中,所述对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求,包括:
在确定所述请求存储单元中存储有至少两个初始数据处理请求的情况下,对所述至少两个初始数据处理请求进行合并处理,获得目标数据处理请求。
沿用上例,服务器在确定该local batch存在至少两个IO请求的情况下,能够对该至少两个IO请求进行合并处理,从而获得合并后的IO请求。从而避免了由于缓存中大量的存储空间未被使用所导致的写放大现象,进一步节省存储资源。
步骤406:在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列。
其中,该当前状态信息可以理解为表征该请求存储单元当前状态的信息,例如,local batch的当前剩余容量、local batch的当前被使用容量、local batch中存储的IO请求的接收时间等等。
该预设存储条件可以根据实际应用场景进行设置,本说明书对此不做具体限制。例如,在当前状态信息为local batch的当前剩余容量的情况下,当local batch的当前剩余容量低于预设容量阈值(例如5%)的情况下,确定该当前状态信息满足预设存储条件。或者,在当前状态信息为local batch中存储的IO请求的接收时间时,为了保证IO请求不丢失,会在该IO请求的接收时间与当前时间的时间差值,大于预设时间阈值(例如1分钟)的情况下,确定该当前状态信息满足预设存储条件。
沿用上例,其中,请求存储单元的当前状态信息为local batch的当前剩余容量;基于此,服务器会实时获取该local batch的当前剩余容量,在确定该当前剩余容量低于预设容量阈值(例如5%)的情况下,确定该当前状态信息满足预设存储条件,则将该localbatch中合并处理后获得的IO请求发送至分区队列中。
步骤406:基于所述请求处理队列对所述目标数据处理请求进行存储。
在本说明书提供的一实施例中,所述基于所述请求处理队列对所述目标数据处理请求进行存储,包括:
从所述请求处理队列中获取目标数据处理请求,并将所述目标数据处理请求存储至请求存储模块。
其中,该请求存储模块可以理解为存储该请求的模块,例如,磁盘、网盘、SSD(固态硬盘)。
具体地,在服务器将目标数据处理请求发送至请求处理队列之后,服务器能够按照先进先出的方式从该请求处理队列中获取目标数据处理请求,并将该目标数据处理请求存储至该请求存储模块。
进一步的,在本说明书提供的实施例中,由于初始数据处理请求的数量较低,可能会出现请求处理队伍中不存在需要存储至请求存储模块中的目标数据处理请求的情况,进一步导致请求存储单元中存储的数据处理请求丢失,基于此,该服务器能够确定该请求处理队列对应的请求存储单元,直接获取该请求存储单元中当前的目标数据处理请求,并将该目标数据处理请求发送至请求处理队列中。具体地,所述从所述请求处理队列中获取目标数据处理请求之前,还包括:
在确定所述请求处理队列中不存在目标数据处理请求的情况下,确定所述请求处理队列对应的所述请求存储单元;
从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列。
沿用上例,服务器确定该分区队列无可写入的batch(合并后的IO请求)的情况下,确定该分区队列对应的local batch,从该local batch中获取合并后的IO请求,并将该IO请求存放在分区队列中,便于后续将该分区队列中的batch(合并后的IO请求)存储至云盘中,从而避免由于初始数据处理请求的数量较低,请求存储单元中存储的数据处理请求丢失的问题。
进一步地,在本说明书提供的实施例中,每个主题对应有多个分区队列,在此情况下,服务器在将分区队列中的目标数据处理请求存储的云盘的过程中,会循环遍历分区队列,从多个分区队列中选取可写入batch,并写入至云盘中,从而通过多个分区队列并行的处理方式,能够提高请求的写入效率。具体地,所述请求处理队列包括至少两个;
相应地,所述从所述请求处理队列中获取目标数据处理请求,包括:
在确定至少两个请求处理队列中存在目标数据处理请求的情况下,从所述至少两个请求处理队列中,获取所述目标数据处理请求。
沿用上例,服务器会循环遍历分区队列,在确定多个分区队列中存在需要写入至云盘的batch的情况下,选取可写入batch,并写入至云盘中。
在本说明书提供的实施例中,由于初始数据处理请求的数量较低,可能会出现请求处理队伍中不存在需要存储至请求存储模块中的目标数据处理请求的情况,进一步导致请求存储单元中存储的数据处理请求丢失,基于此,所述请求处理队列包括至少两个;
相应地,所述从所述请求处理队列中获取目标数据处理请求,包括:
在确定至少两个请求处理队列中不存在目标数据处理请求的情况下,分别确定每个请求处理队列对应的请求存储单元;
从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列。
沿用上例,服务器确定该所有分区队列均无可写入的batch(合并后的IO请求)的情况下,确定每个分区队列对应的local batch,从该local batch中获取合并后的IO请求,并将该IO请求存放在分区队列中,便于后续将该分区队列中的batch(合并后的IO请求)存储至云盘中,从而避免由于初始数据处理请求的数量较低,请求存储单元中存储的数据处理请求丢失的问题。
在本说明书提供的实施例中,在请求处理队列中不存在目标数据处理请求,并请求存储单元中获取目标数据处理请求的过程,是为避免由于初始数据处理请求的数量较低,请求存储单元中存储的数据处理请求丢失的问题,因此,在从请求存储单元中获取目标数据处理请求时,需要确定该目标数据处理请求的创建时间是否大于预设存储时间阈值,且在大于该预设存储时间阈值的情况下,获取该目标数据处理请求,避免由于获取较小的目标数据处理请求进一步造成写放大的问题。具体的,所述从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列,包括:
从所述请求存储单元中确定所述目标数据处理请求,以及所述目标数据处理请求对应的目标时间;
计算目标时间与所述创建时间之间的时间参数,在所述时间参数大于预设存储时间阈值的情况下,获取所述目标数据处理请求;
将所述目标数据处理请求发送至所述请求处理队列。
其中,目标时间可以理解为第一次将初始数据处理请求进行合并处理,获得目标数据处理请求的时间,或者,进行合并处理获得目标数据处理请求的多个初始数据处理请求的接收时间中,最早的接收时间。
时间参数可以理解为目标时间与当前时间的时间差值。该预设存储时间阈值可以根据实际应用场景进行设置,本说明书对此不做具体限制。例如,该预设存储时间阈值可以为1分钟、10秒钟等等。
沿用上例,服务器确定该所有分区队列均无可写入的batch(合并后的IO请求)的情况下,判断分区队列对应的local batch是否满足写入条件,即确定该batch中每个IO请求的接收时间,并从该接收时间中选择最早的时间。计算该时间与当前时间的时间差值,该在时间差值大于预设存储时间阈值(如1分钟)的情况下,从该local batch中获取合并后的IO请求,并将该IO请求存放在分区队列中,从而避免由于初始数据处理请求的数量较低,请求存储单元中存储的数据处理请求丢失的问题,且避免了由于获取较小的目标数据处理请求进一步造成写放大的问题。
本说明书提供的一实施例中,所述基于所述请求处理队列对所述目标数据处理请求进行存储之后,还包括:
清空存储所述目标数据处理请求的请求存储单元。
具体地,在完成对目标数据处理请求的存储工作之后,为了节省缓存资源,会清空存储目标数据处理请求的请求存储单元。例如,在获取可写入的batch,并发起写IO请求顺序写入磁盘之后,服务器会回收batch进入内存池中。
本说明书提供的请求处理方法,将初始数据处理请求存储至请求处理队列对应的请求存储单元,并对该初始数据处理请求进行合并处理,获得目标数据处理请求,且在请求存储单元的当前状态信息满足预设存储条件的情况下,通过请求处理队列对目标数据处理请求进行存储,从而避免了由于缓存中大量的存储空间未被使用所导致的写放大现象,进一步节省存储资源。
下述结合附图5,以本说明书提供的请求处理方法在基于分区队列通过并向合并的方式批量存储消息的场景下的应用为例,对所述请求处理方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种请求处理方法的处理过程流程图,该图5包括图5A和图5B,本说明提供的请求处理方法整体由Commit Buffer和Accumulate Service两个核心子系统组成,其中Commit Buffer负责:分区并行计算。其中,该Commit Buffer流程具体包括以下步骤。
步骤502:接收IO请求。
具体的,服务器接收用户发送的IO请求。
步骤504:确定队列分区。
具体的,服务器为IO请求选取分区队列。
步骤506:确定是否存在local batch。
具体的,服务器确定该分区队列是否存在local batch,若是,则执行步骤514,若否,则执行步骤508。
步骤508:确定内存池管理模块。
具体的,服务器在确定分区队列不存在local batch的情况下,确定服务器自身配置的内存池管理模块。
步骤510:获取内存池。
具体的,服务器通过内存池管理模块,从内存池中预先划分出一块区域。
在实际应用中,内存池管理模块为了快速的为分区队列分配对应的local batch,会预先从内存中为分区队列划分出一块存储区域,后续当接收到local batch申请时,能从该存储区域中为该分区队列划分出一块符合大小的子区域作为local batch。
步骤512:申请batch。
具体的,服务器根据分区队列的标识信息以及该IO请求的大小,向内存池管理模块申请新的local batch。
而该内存池管理模块在接收到该申请之后,能够从预先为所有分区队列划分的内存区域中,为申请新的local batch的分区队列,分配一块大小能够容纳IO请求的区域作为local batch。
步骤514:进行预计算。
具体的,服务器对接收到的IO请求进行预计算。其中,该预计算包括但不限于数据局部完整性验证、安全性验证等等,本说明书对此不做具体限制。并且,该预计算可以通过任意一种方式实现,本说明书对此也不做具体限制。
步骤516:进行序列化。
具体的,服务器对接收到的IO请求进行序列化处理。其中,该序列化处理可以通过任意一种方式实现,本说明书对此不做具体限制。
步骤518:合并请求。
具体的,服务器在local batch进行并行计算,并行合并IO请求。
其中,该并行合并可以通过任意一种能够实现请求合并的方式实现,本说明书对此不做具体限制。
例如,将local batch中当前存储的所有IO请求进行打包处理,并在local batch中被写入新的请求时,能够新的请求与历史打包的IO重新进行打包,从而实现将该localbatch中的IO请求合并。
或者,确定IO请求数据存储模块中需要进行操作的逻辑地址,并将逻辑地址连续相接的多个IO请求合并为一个请求,从而实现请求合并。
步骤520:FIFO入队。
具体的,服务器确定local batch满足写入条件的情况下,将local batch中合并的IO请求发送至FIFO队列
步骤522:重新开始执行步骤502。
具体的,服务器会完成请求合并以及入队之后,会在接收到IO请求的情况下,继续执行Commit Buffer流程。
其中,该Accumulate Service流程具体包括以下步骤。
步骤524:进行队列轮询。
具体的,服务器循环遍历所有的分区队列。
步骤526:确定分区队列。
具体的,服务器在循环遍历所有的分区队列的过程中,对每个分区队列进行检测。
步骤528:确定是否存在batch。
具体的,服务器确定每个分区队列是否存在需要写入磁盘的batch。若存在,则执行步骤534,若不存在,则执行步骤530.
步骤530:确定local batch是否满足写入条件。
具体的,服务器如果确定分区队列中无可写入的batch,判断分区队列对应的local batch是否满足写入条件。若满足,则执行步骤532,若不满足,则执行步骤524。
其中,满足写入条件可以为:服务器确定该batch中每个IO请求的接收时间,并从该接收时间中选择最早的时间。计算该时间与当前时间的时间差值,该在时间差值大于预设存储时间阈值(如1分钟)的情况下,确定该local batch满足写入条件。
在实际应用中,local batch不满足,遍历下一个分区队列。
步骤532:FIFO入队。
具体的,服务器确定local batch满足写入条件的情况下,从该local batch中获取合并后的IO请求,并发送至FIFO队列(即分区队列)。也即是,local batch满足写入条件的情况下,反向拉取local batch进入FIFO队列。
步骤534:获取batch。
具体的,服务器从分区队列中获取batch。
步骤536:合并请求。
具体的,服务器将从分区队列中获取batch(合并后的IO请求)进行合并处理。
步骤538:写入磁盘。
具体的,服务器将合并处理后的batch写入至磁盘。
步骤540:回收batch。
具体的,在获取可写入的batch,并发起写IO请求顺序写入磁盘之后,服务器会回收batch进入内存池中
步骤542:重新开始执行步骤524。
具体的,服务器会完成将batch写入至磁盘之后,会继续进行队列轮询,继续执行Accumulate Service流程。
本说明书提供的请求处理方法,通过Commit Buffer的执行流程,以及AccumulateService的执行流程,能够实现分区并行计算、预合并IO请求、批量存储等功能;具体地,本说明书提供的请求处理方法,通过内存池和local batch,构建分区缓存队列,实现高性能的并行计算。通过分区缓存队列预计算,获得并行计算的收益的同时,不占用磁盘IO资源,实现高性能的并行合并。并通过FIFO队列,Accumulate Service单线程获取合并后的IO请求,保障顺序写的同时批量存储显著减少写放大。从而极大降低IOPS的同时,显著减少了写放大的现象,不仅节约了IO带宽,并且显著提高了消息存储的性能。
与上述方法实施例相对应,本说明书还提供了请求处理装置实施例,图6示出了本说明书一个实施例提供的一种请求处理装置的结构示意图。如图6所示,该装置包括:
确定模块602,被配置为为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;
合并模块604,被配置为将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;
发送队列模块606,被配置为在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;
存储模块608,被配置为基于所述请求处理队列对所述目标数据处理请求进行存储。
可选地,所述确定模块602,还被配置为:
确定接收到的初始数据处理请求的请求类型,并确定与所述请求类型对应的队列类型;
确定所述队列类型对应的至少两个请求处理队列,并分别确定所述至少两个请求处理队列的当前状态信息;
基于所述当前状态信息,从所述至少两个请求处理队列中为所述初始数据处理请求确定对应的请求处理队列。
可选地,所述确定模块602,还被配置为:
在确定所述请求处理队列不存在对应的请求存储单元,或者
所述请求处理队列对应的请求存储单元不满足请求存储条件的情况下,基于所述请求处理队列的属性信息,以及所述初始数据处理请求的属性信息生成单元获取请求;
将所述单元获取请求发送至单元分配模块;
获取所述单元分配模块响应于所述单元获取请求,从预设待分配模块中为所述请求处理队列分配的请求存储单元。
可选地,所述合并模块604,还被配置为:
对所述初始数据处理请求进行预处理,获得处理后的初始数据处理请求;
将所述处理后的初始数据处理请求,存储至所述请求存储单元。
可选地,所述合并模块604,还被配置为:
在确定所述请求存储单元中存储有至少两个初始数据处理请求的情况下,对所述至少两个初始数据处理请求进行合并处理,获得目标数据处理请求。
可选地,所述存储模块608,还被配置为:
从所述请求处理队列中获取目标数据处理请求,并将所述目标数据处理请求存储至请求存储模块。
可选地,所述请求处理装置,还包括获取模块,被配置为:
在确定所述请求处理队列中不存在目标数据处理请求的情况下,确定所述请求处理队列对应的所述请求存储单元;
从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列。
可选地,所述请求处理队列包括至少两个;
相应地,所述存储模块608,还被配置为:
在确定至少两个请求处理队列中存在目标数据处理请求的情况下,从所述至少两个请求处理队列中,获取所述目标数据处理请求。
可选地,所述获取模块,被配置为:
在确定至少两个请求处理队列中不存在目标数据处理请求的情况下,分别确定每个请求处理队列对应的请求存储单元;
从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列。
可选地,所述获取模块,被配置为:
从所述请求存储单元中确定所述目标数据处理请求,以及所述目标数据处理请求对应的目标时间;
计算目标时间与所述创建时间之间的时间参数,在所述时间参数大于预设存储时间阈值的情况下,获取所述目标数据处理请求;
将所述目标数据处理请求发送至所述请求处理队列。
可选地,所述请求处理装置,还包括清空模块,被配置为:
清空存储所述目标数据处理请求的请求存储单元。
本说明书提供的请求处理装置,将初始数据处理请求存储至请求处理队列对应的请求存储单元,并对该初始数据处理请求进行合并处理,获得目标数据处理请求,且在请求存储单元的当前状态信息满足预设存储条件的情况下,通过请求处理队列对目标数据处理请求进行存储,从而避免了由于缓存中大量的存储空间未被使用所导致的写放大现象,进一步节省存储资源。
上述为本实施例的一种请求处理装置的示意性方案。需要说明的是,该请求处理装置的技术方案与上述的请求处理方法的技术方案属于同一构思,请求处理装置的技术方案未详细描述的细节内容,均可以参见上述请求处理方法的技术方案的描述。
图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
其中,处理器720用于执行如下计算机可执行指令,该计算机可执行指令被处理器720执行时实现上述请求处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的请求处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述请求处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述请求处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的请求处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述请求处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述请求处理方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的请求处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述请求处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (14)
1.一种请求处理方法,包括:
为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;
将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;
在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;
基于所述请求处理队列对所述目标数据处理请求进行存储。
2.根据权利要求1所述的请求处理方法,所述为接收到的所述初始数据处理请求确定对应的请求处理队列,包括:
确定接收到的初始数据处理请求的请求类型,并确定与所述请求类型对应的队列类型;
确定所述队列类型对应的至少两个请求处理队列,并分别确定所述至少两个请求处理队列的当前状态信息;
基于所述当前状态信息,从所述至少两个请求处理队列中为所述初始数据处理请求确定对应的请求处理队列。
3.根据权利要求1所述的请求处理方法,所述确定所述请求处理队列对应的请求存储单元,包括:
在确定所述请求处理队列不存在对应的请求存储单元,或者
所述请求处理队列对应的请求存储单元不满足请求存储条件的情况下,基于所述请求处理队列的属性信息,以及所述初始数据处理请求的属性信息生成单元获取请求;
将所述单元获取请求发送至单元分配模块;
获取所述单元分配模块响应于所述单元获取请求,从预设待分配模块中为所述请求处理队列分配的请求存储单元。
4.根据权利要求1所述的请求处理方法,所述将所述初始数据处理请求存储至所述请求存储单元,包括:
对所述初始数据处理请求进行预处理,获得处理后的初始数据处理请求;
将所述处理后的初始数据处理请求,存储至所述请求存储单元。
5.根据权利要求1所述的请求处理方法,所述对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求,包括:
在确定所述请求存储单元中存储有至少两个初始数据处理请求的情况下,对所述至少两个初始数据处理请求进行合并处理,获得目标数据处理请求。
6.根据权利要求1所述的请求处理方法,所述基于所述请求处理队列对所述目标数据处理请求进行存储,包括:
从所述请求处理队列中获取目标数据处理请求,并将所述目标数据处理请求存储至请求存储模块。
7.根据权利要求6所述的请求处理方法,所述从所述请求处理队列中获取目标数据处理请求之前,还包括:
在确定所述请求处理队列中不存在目标数据处理请求的情况下,确定所述请求处理队列对应的所述请求存储单元;
从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列。
8.根据权利要求6所述的请求处理方法,所述请求处理队列包括至少两个;
相应地,所述从所述请求处理队列中获取目标数据处理请求,包括:
在确定至少两个请求处理队列中存在目标数据处理请求的情况下,从所述至少两个请求处理队列中,获取所述目标数据处理请求。
9.根据权利要求6所述的请求处理方法,所述从所述请求处理队列中获取目标数据处理请求之前,还包括:
在确定至少两个请求处理队列中不存在目标数据处理请求的情况下,分别确定每个请求处理队列对应的请求存储单元;
从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列。
10.根据权利要求7或9任意一项所述的请求处理方法,所述从所述请求存储单元中获取所述目标数据处理请求,并将所述目标数据处理请求发送至所述请求处理队列,包括:
从所述请求存储单元中确定所述目标数据处理请求,以及所述目标数据处理请求对应的目标时间;
计算目标时间与所述创建时间之间的时间参数,在所述时间参数大于预设存储时间阈值的情况下,获取所述目标数据处理请求;
将所述目标数据处理请求发送至所述请求处理队列。
11.根据权利要求1所述的请求处理方法,所述基于所述请求处理队列对所述目标数据处理请求进行存储之后,还包括:
清空存储所述目标数据处理请求的请求存储单元。
12.一种请求处理装置,包括:
确定模块,被配置为为接收到的初始数据处理请求确定对应的请求处理队列,并确定所述请求处理队列对应的请求存储单元;
合并模块,被配置为将所述初始数据处理请求存储至所述请求存储单元,并对所述请求存储单元中的所述初始数据处理请求进行合并处理,获得目标数据处理请求;
发送队列模块,被配置为在确定所述请求存储单元的当前状态信息满足预设存储条件的情况下,将所述目标数据处理请求发送至所述请求处理队列;
存储模块,被配置为基于所述请求处理队列对所述目标数据处理请求进行存储。
13.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述请求处理方法的步骤。
14.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述请求处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210499884.4A CN114995748A (zh) | 2022-05-09 | 2022-05-09 | 请求处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210499884.4A CN114995748A (zh) | 2022-05-09 | 2022-05-09 | 请求处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114995748A true CN114995748A (zh) | 2022-09-02 |
Family
ID=83024323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210499884.4A Pending CN114995748A (zh) | 2022-05-09 | 2022-05-09 | 请求处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114995748A (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183319A (zh) * | 2007-12-19 | 2008-05-21 | 杭州华三通信技术有限公司 | 一种实现队列共享存储空间的方法及装置 |
CN102263701A (zh) * | 2011-08-19 | 2011-11-30 | 中兴通讯股份有限公司 | 队列调整方法及装置 |
US20120124296A1 (en) * | 2010-11-17 | 2012-05-17 | Bryant Christopher D | Method and apparatus for reacquiring lines in a cache |
CN103473185A (zh) * | 2013-09-06 | 2013-12-25 | 华为数字技术(苏州)有限公司 | 缓存写入的方法、缓存装置和存储系统 |
CN103634379A (zh) * | 2013-11-13 | 2014-03-12 | 华为技术有限公司 | 一种分布式存储空间的管理方法和分布式存储系统 |
CN106850402A (zh) * | 2017-01-16 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 消息的传输方法和装置 |
CN107483279A (zh) * | 2017-10-10 | 2017-12-15 | 福建星网智慧软件有限公司 | 一种基于以太网侦的本地批量操作网络设备的方法 |
CN107797760A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 基于缓存优化写命令处理的方法、装置与驱动器 |
CN108153685A (zh) * | 2016-12-06 | 2018-06-12 | 阿里巴巴集团控股有限公司 | 一种处理请求的方法、装置及设备、可读介质 |
CN109426434A (zh) * | 2017-08-23 | 2019-03-05 | 北京易华录信息技术股份有限公司 | 一种光盘数据读写方法 |
CN109445690A (zh) * | 2018-10-08 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种raid卡性能优化方法、装置、终端及存储介质 |
CN110058786A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于控制存储系统中的写请求的方法、装置和计算机程序产品 |
CN110134551A (zh) * | 2019-05-21 | 2019-08-16 | 上海英方软件股份有限公司 | 一种持续数据保护方法及装置 |
CN113508368A (zh) * | 2019-02-28 | 2021-10-15 | 美光科技公司 | 用于存储器子系统中的单独的只读高速缓存和写入-读取高速缓存的未完成命令队列的使用 |
CN113568736A (zh) * | 2021-06-24 | 2021-10-29 | 阿里巴巴新加坡控股有限公司 | 数据处理方法及装置 |
CN114006946A (zh) * | 2021-10-29 | 2022-02-01 | 中国平安人寿保险股份有限公司 | 同质资源请求的处理方法、装置、设备及存储介质 |
-
2022
- 2022-05-09 CN CN202210499884.4A patent/CN114995748A/zh active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183319A (zh) * | 2007-12-19 | 2008-05-21 | 杭州华三通信技术有限公司 | 一种实现队列共享存储空间的方法及装置 |
US20120124296A1 (en) * | 2010-11-17 | 2012-05-17 | Bryant Christopher D | Method and apparatus for reacquiring lines in a cache |
CN102263701A (zh) * | 2011-08-19 | 2011-11-30 | 中兴通讯股份有限公司 | 队列调整方法及装置 |
CN103473185A (zh) * | 2013-09-06 | 2013-12-25 | 华为数字技术(苏州)有限公司 | 缓存写入的方法、缓存装置和存储系统 |
CN103634379A (zh) * | 2013-11-13 | 2014-03-12 | 华为技术有限公司 | 一种分布式存储空间的管理方法和分布式存储系统 |
CN107797760A (zh) * | 2016-09-05 | 2018-03-13 | 北京忆恒创源科技有限公司 | 基于缓存优化写命令处理的方法、装置与驱动器 |
CN108153685A (zh) * | 2016-12-06 | 2018-06-12 | 阿里巴巴集团控股有限公司 | 一种处理请求的方法、装置及设备、可读介质 |
CN106850402A (zh) * | 2017-01-16 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 消息的传输方法和装置 |
CN109426434A (zh) * | 2017-08-23 | 2019-03-05 | 北京易华录信息技术股份有限公司 | 一种光盘数据读写方法 |
CN107483279A (zh) * | 2017-10-10 | 2017-12-15 | 福建星网智慧软件有限公司 | 一种基于以太网侦的本地批量操作网络设备的方法 |
CN110058786A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于控制存储系统中的写请求的方法、装置和计算机程序产品 |
CN109445690A (zh) * | 2018-10-08 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种raid卡性能优化方法、装置、终端及存储介质 |
CN113508368A (zh) * | 2019-02-28 | 2021-10-15 | 美光科技公司 | 用于存储器子系统中的单独的只读高速缓存和写入-读取高速缓存的未完成命令队列的使用 |
CN110134551A (zh) * | 2019-05-21 | 2019-08-16 | 上海英方软件股份有限公司 | 一种持续数据保护方法及装置 |
CN113568736A (zh) * | 2021-06-24 | 2021-10-29 | 阿里巴巴新加坡控股有限公司 | 数据处理方法及装置 |
CN114006946A (zh) * | 2021-10-29 | 2022-02-01 | 中国平安人寿保险股份有限公司 | 同质资源请求的处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110663019B (zh) | 用于叠瓦式磁记录(smr)的文件系统 | |
CN114201421B (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
US9838346B2 (en) | Alerting on dual-queue systems | |
WO2015081470A1 (zh) | 数据处理设备和数据处理的方法 | |
US10802753B2 (en) | Distributed compute array in a storage system | |
US9164856B2 (en) | Persistent messaging mechanism | |
CN113419824A (zh) | 数据处理方法、装置、系统及计算机存储介质 | |
US20200319797A1 (en) | System and method for file processing from a block device | |
CN111083933B (zh) | 数据存储及获取方法和装置 | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
WO2023201987A1 (zh) | 请求处理方法、装置、设备及介质 | |
EP4318234A1 (en) | Method and apparatus for starting secure container | |
CN110045924B (zh) | 分级存储方法、装置、电子设备及计算机可读存储介质 | |
US20190243807A1 (en) | Replication of data in a distributed file system using an arbiter | |
US20240036728A1 (en) | Method and apparatus for processing data, reduction server, and mapping server | |
US20090225767A1 (en) | Network packet capturing method | |
CN111435323B (zh) | 信息的传输方法、装置、终端、服务器及存储介质 | |
CN112035428A (zh) | 分布式存储系统、方法、装置、电子设备和存储介质 | |
CN114995748A (zh) | 请求处理方法及装置 | |
CN111459402A (zh) | 磁盘可控缓冲写方法、控制器、混合io调度方法及调度器 | |
US9069821B2 (en) | Method of processing files in storage system and data server using the method | |
CN115878035A (zh) | 一种数据读取方法、装置、电子设备及存储介质 | |
CN112000289B (zh) | 全闪存储服务器系统数据管理方法及相关组件 | |
CN107870877B (zh) | 用于在存储系统中管理数据访问的方法和系统 | |
CN114579404A (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 |