CN111722785A - 一种缓存更新方法和装置 - Google Patents
一种缓存更新方法和装置 Download PDFInfo
- Publication number
- CN111722785A CN111722785A CN201910217386.4A CN201910217386A CN111722785A CN 111722785 A CN111722785 A CN 111722785A CN 201910217386 A CN201910217386 A CN 201910217386A CN 111722785 A CN111722785 A CN 111722785A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- updated
- buffer
- level
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004590 computer program Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种缓存更新方法和装置。该方法包括:通过前台任务接收用户发送的IO请求;通过前台任务响应所述IO请求来确定待更新数据,以及将所述待更新数据发送至第一缓冲区;基于所述第一缓冲区,通过后台任务对缓存进行更新。本公开可以减少缓存更新对与IO请求对应的IO关键路径的影响,从而可以降低IO关键路径的延迟,有效提高IO关键路径的IO性能,提高用户使用体验。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种缓存更新方法和装置。
背景技术
在一般的存储***中,使用容量小性能高的存储介质作为缓存层,例如,内存、固态硬盘(SSD,Solid State Drives)等。数据在写入底层大容量介质,例如,硬盘驱动(HDD,Hard Disk Drive),或从底层大容量介质读取数据后,需要将写入或读取的数据更新到缓存中以备后续使用。缓存更新会引入额外的数据拷贝、元数据更新、旧数据淘汰等操作,若缓存更新发生在用户当前输入输出(IO,Input Output)请求的路径上,会导致IO延迟明显增加,降低用户使用体验。
发明内容
有鉴于此,本公开提出了一种缓存更新方法和装置,使得可以减少缓存更新对IO延迟的影响,有效提高IO关键路径的IO性能。
根据本公开的第一方面,提供了一种缓存更新方法,包括:通过前台任务接收用户发送的IO请求;通过前台任务响应所述IO请求来确定待更新数据,以及将所述待更新数据发送至第一缓冲区;基于所述第一缓冲区,通过后台任务对缓存进行更新。
在一种可能的实现方式中,所述第一缓冲区位于LSM-Tree结构的第一层级,所述缓存位于所述LSM-Tree结构的第二层级,所述第一层级中的数据具有可读写特性,所述第二层级中的数据具有只读特性。
在一种可能的实现方式中,基于所述第一缓冲区,通过后台任务对缓存进行更新,包括:当所述第一缓冲区中的数据量超过阈值时,将所述第一缓冲区转化为第二缓冲区,所述第二缓冲区位于所述LSM-Tree结构的第三层级,所述第三层级中的数据具有只读特性;在所述第一层级中生成新的空的第一缓冲区;将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并,在所述第二层级中得到更新后的缓存。
在一种可能的实现方式中,所述LSM-Tree结构中的数据包括元数据以及与所述元数据对应的数据。
在一种可能的实现方式中,所述方法还包括:在将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并之后,释放所述第二缓冲区。
在一种可能的实现方式中,将所述待更新数据发送至第一缓冲区之后,所述方法还包括:通过前台任务在所述缓存中对所述待更新数据的元数据进行更新。
在一种可能的实现方式中,基于所述第一缓冲区,通过后台任务对缓存进行更新,包括:通过后台任务在所述缓存中对所述待更新数据进行更新。
根据本公开的第二方面,提供了一种缓存更新装置,包括:前台任务处理模块,用于通过前台任务接收用户发送的IO请求;所述前台任务处理模块,还用于通过前台任务响应所述IO请求来确定待更新数据,以及将所述待更新数据发送至第一缓冲区;后台任务处理模块,用于基于所述第一缓冲区,通过后台任务对缓存进行更新。
在一种可能的实现方式中,所述第一缓冲区位于LSM-Tree结构的第一层级,所述缓存位于所述LSM-Tree结构的第二层级,所述第一层级中的数据具有可读写特性,所述第二层级中的数据具有只读特性。
在一种可能的实现方式中,所述后台任务处理模块包括:转化子模块,用于当所述第一缓冲区中的数据量超过阈值时,将所述第一缓冲区转化为第二缓冲区,所述第二缓冲区位于所述LSM-Tree结构的第三层级,所述第三层级中的数据具有只读特性;生成子模块,用于在所述第一层级中生成新的空的第一缓冲区;缓存更新子模块,用于将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并,在所述第二层级中得到更新后的缓存。
在一种可能的实现方式中,所述LSM-Tree结构中的数据包括元数据以及与所述元数据对应的数据。
在一种可能的实现方式中,后台任务处理模块还包括:释放子模块,用于将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并之后,释放所述第二缓冲区。
在一种可能的实现方式中,所述前台任务处理模块,还用于将所述待更新数据发送至所述第一缓冲区之后,通过前台任务在所述缓存中对所述待更新数据的元数据进行更新。
在一种可能的实现方式中,所述后台任务处理模块具体用于:通过后台任务在所述缓存中对所述待更新数据进行更新。
根据本公开的第三方面,提供了一种缓存更新装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述第一方面所述的缓存更新方法。
根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述第一方面所述的缓存更新方法。
通过前台任务接收用户发送的IO请求,响应该IO请求来确定待更新数据,以及将待更新数据发送至第一缓冲区,通过后台任务基于第一缓冲区对缓存进行更新,使得减少缓存更新对与IO请求对应的IO关键路径的影响,从而可以降低IO关键路径的延迟,有效提高IO关键路径的IO性能,提高用户使用体验。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出一种存储***中传统缓存更新方法的示意图;
图2示出本公开一实施例的缓存更新方法的流程示意图;
图3示出本公开一实施例的对缓存进行更新的示意图;
图4示出本公开一实施例的基于LSM-Tree结构对缓存进行更新的示意图;
图5示出本公开一实施例的对缓存进行更新的示意图;
图6示出本公开一实施例的缓存更新装置的结构示意图;
图7示出本公开一实施例的电子设备的结构示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在一般的存储***中,使用容量小性能高的存储介质(内存、SSD等)作为缓存层。数据在写入底层大容量介质(HDD),或从底层大容量介质(HDD)读取数据后,需要将写入或读取的数据更新到缓存中以备后续使用。
图1示出一种存储***中传统缓存更新方法的示意图。如图1所示,当存储***接收到用户发送的IO请求时,该IO请求的路径为IO关键路径。若该IO请求对应的数据未在缓存中命中,则需要在IO关键路径上进行缓存更新。缓存更新过程包括下述至少一种操作:将写入HDD或从HDD中读取的与IO请求对应的待更新数据拷贝到缓存中;更新缓存中该待更新数据的元数据;删除缓存中与该待更新数据对应的旧数据。
正如背景技术部分陈述的,缓存更新发生在IO关键路径上,会导致IO关键路径上延迟增加,降低IO关键路径的IO性能,影响用户使用体验。
本公开提供的缓存更新方法,可以减少缓存更新对IO关键路径的影响,从而可以降低IO关键路径的延迟,有效提高IO关键路径的IO性能,提高用户使用体验。
图2示出本公开一实施例的缓存更新方法的流程示意图。如图2所示,该方法可以包括:
步骤S21,通过前台任务接收用户发送的IO请求。
步骤S22,通过前台任务响应IO请求来确定待更新数据,以及将待更新数据发送至第一缓冲区。
步骤S23,基于第一缓冲区,通过后台任务对缓存进行更新。
将缓存更新划分为前台任务部分和后台任务部分。当前台任务接收到用户发送的IO请求,并确定该IO请求对应的数据未在缓存中命中时,前台任务确定该IO请求对应的待更新数据,并将该待更新数据发送至第一缓冲区。后台任务基于第一缓冲区,完成后续缓存更新。相对于现有的在IO关键路径上进行缓存更新的操作,本公开将缓存更新转移到后台任务处理,使得可以减少缓存更新对IO关键路径的影响,从而实现降低IO关键路径的延迟。
通过后台任务对缓存进行更新的方式包括但不限于下述两种。
第一种:
在一种可能的实现方式中,第一缓冲区位于日志结构合并树(LSM-Tree,LogStructured Merge Tree)结构的第一层级,缓存位于LSM-Tree结构的第二层级,第一层级中的数据具有可读写特性,第二层级中的数据具有只读特性。
在一种可能的实现方式中,基于第一缓冲区,通过后台任务对缓存进行更新,包括:当第一缓冲区中的数据量超过阈值时,将第一缓冲区转化为第二缓冲区,第二缓冲区位于LSM-Tree结构的第三层级,第三层级中的数据具有只读特性;在第一层级中生成新的空的第一缓冲区;将第二缓冲区中的数据与缓存中的数据进行数据合并,在第二层级中得到更新后的缓存。
在一种可能的实现方式中,第一缓冲区为Active Buffer,第二缓冲区为Immutable buffer。
图3示出本公开一实施例的对缓存进行更新的示意图。在图3中,针对IO请求,前台任务将IO请求对应的待更新数据发送至LSM-Tree结构第一层级中的Active Buffer之后,IO请求的IO关键路径结束。后续通过LSM-Tree结构的分层存储以及数据合并特性,实现对LSM-Tree结构第二层级中缓存的更新。
图4示出本公开一实施例的基于LSM-Tree结构对缓存进行更新的示意图。在图4所示的缓存更新过程中,随着前台任务向Active Buffer中发送待更新数据的增加,当ActiveBuffer中待更新数据的数据量超过阈值,将Active Buffer转化为LSM-Tree结构中第三层级中的Immutable buffer,以及在第一层级中生成新的空的Active Buffer,新生成的Active Buffer用于后续继续接收前台任务发送的待更新数据。其中,第三层级位于第一层级和第二层级之间,第三层级中Immutable buffer中的数据具有只读特性。将第三层级中Immutable buffer中的数据与第二层级中缓存中的数据进行数据合并,得到第二层级中更新后的缓存。
在基于LSM-Tree结构的数据存储***中,数据的存储格式为键值对(key-value)结构,value为数据的数据值,key值(关键字)为数据的索引参数。LSM-Tree结构中的数据分层存储,关键字相同的数据可以存储在不同层级中,存储在较高层级中的数据相对于存储在较低层级中的数据为新数据。也即,若Immutable buffer和缓存中存在关键字相同的数据,Immutable buffer中该关键字对应的数据相对于缓存中该关键字对应的数据为新数据,在Immutable buffer与缓存进行数据合并时,Immutable buffer中该关键字对应的数据覆盖缓存中该关键字对应的数据。
仍以上述图4为例,如图4所示,Immutable buffer中包括:待更新数据a以及待更新数据b。缓存中包括:数据c和数据d。其中,待更新数据a与数据c为关键字相同的数据,Immutable buffer中待更新数据a相对于缓存中数据c为新数据(数据c为旧数据),因此,在数据合并过程中,Immutable buffer中的待更新数据a覆盖缓存中的数据c(即删除旧数据c)。在得到的更新后的中,包括:数据a、数据b,以及数据d。
在一种可能的实现方式中,LSM-Tree结构中的数据包括元数据以及与元数据对应的数据。
LSM-Tree结构中的数据包括元数据以及与元数据对应的数据,上述基于LSM-Tree结构对缓存进行更新的方法,即基于LSM-Tree结构,将IO关键路径对应的待更新数据以及待更新数据的元数据均在后台任务中进行缓存更新,使得可以有效减少缓存更新对IO关键路径的影响,从而实现降低IO关键路径的延迟。
由于IO关键路径对应的待更新数据以及待更新数据的元数据均在后台任务中进行缓存更新,使得可以采用更加复杂的缓存更新算法以提高更新准确率,而不会增加IO关键路径的延迟。
在一种可能的实现方式中,还包括:在将第二缓冲区中的数据与缓存中的数据进行数据合并之后,释放第二缓冲区。
在LSM-Tree结构中将第三层级中Immutable buffer中的数据与第二层级中缓存中的数据进行数据合并之后,释放第三层级中Immutable buffer,以提高资源利用率。
第二种:
在一种可能的实现方式中,将待更新数据发送至第一缓冲区之后,还包括:通过前台任务在缓存中对待更新数据的元数据进行更新。
在一种可能的实现方式中,基于第一缓冲区,通过后台任务对缓存进行更新,包括:通过后台任务在缓存中对待更新数据进行更新。
在一种可能的实现方式中,第一缓冲区为Buffer。
图5示出本公开一实施例的对缓存进行更新的示意图。在图5中,针对IO请求,前台任务将IO请求对应的待更新数据发送至存储***的一个Buffer,以及根据该Buffer在缓存中对待更新数据的元数据进行更新,IO请求的IO关键路径结束。此时,由于仅在缓存中对待更新数据的元数据进行更新,而并未将待更新数据更新至缓存中,需要对缓存中待更新数据的元数据增加标识,该标识可以用于表示缓存中尚未更新待更新数据。
后台任务基于该Buffer在缓存中对待更新数据进行更新,并在更新完成之后,再次在缓存中对待更新数据的元数据的标识进行更新,使得更新后的标识可以用于表示缓存中对待更新数据的更新完成。
在一种可能的实现方式中,还包括:在缓存中对待更新数据的元数据和待更新数据更新完成之后,释放buffer。
在缓存中对待更新数据的元数据和待更新数据更新完成之后,释放buffer,以提高资源利用率。
针对IO请求,通过前台任务对IO请求对应的待更新数据的元数据进行缓存更新,通过后台任务对IO请求对应的待更新数据进行缓存更新,可以部分程度上减少缓存更新对IO关键路径的影响,降低IO关键路径的延迟。
通过前台任务接收用户发送的IO请求,响应该IO请求来确定待更新数据,以及将待更新数据发送至第一缓冲区,通过后台任务基于第一缓冲区对缓存进行更新,使得减少缓存更新对与IO请求对应的IO关键路径的影响,从而可以降低IO关键路径的延迟,有效提高IO关键路径的IO性能,提高用户使用体验。
图6示出本公开一实施例的缓存更新装置的结构示意图。图6所示的装置60可以用于执行上述图2所示方法实施例的步骤,装置60包括:
前台任务处理模块61,用于通过前台任务接收用户发送的IO请求;
前台任务处理模块61,还用于通过前台任务响应IO请求来确定待更新数据,以及将待更新数据发送至第一缓冲区;
后台任务处理模块62,用于基于第一缓冲区,通过后台任务对缓存进行更新。
在一种可能的实现方式中,第一缓冲区位于LSM-Tree结构的第一层级,缓存位于LSM-Tree结构的第二层级,第一层级中的数据具有可读写特性,第二层级中的数据具有只读特性。
在一种可能的实现方式中,后台任务处理模块62包括:
转化子模块,用于当第一缓冲区中的数据量超过阈值时,将第一缓冲区转化为第二缓冲区,第二缓冲区位于LSM-Tree结构的第三层级,第三层级中的数据具有只读特性;
生成子模块,用于在第一层级中生成新的空的第一缓冲区;
缓存更新子模块,用于将第二缓冲区中的数据与缓存中的数据进行数据合并,在第二层级中得到更新后的缓存。
在一种可能的实现方式中,LSM-Tree结构中的数据包括元数据以及与元数据对应的数据。
在一种可能的实现方式中,后台任务处理模块62还包括:
释放子模块,用于将第二缓冲区中的数据与缓存中的数据进行数据合并之后,释放第二缓冲区。
在一种可能的实现方式中,前台任务处理模块61,还用于通过前台任务在缓存中对待更新数据的元数据进行更新。
在一种可能的实现方式中,后台任务处理模块62具体用于:
通过后台任务在缓存中对待更新数据进行更新。
本公开提供的装置60能够实现图2所示方法实施例中的各个步骤,并实现相同的技术效果,为避免重复,这里不再赘述。
图7示出本公开一实施例的电子设备的结构示意图。如图7所示,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(Non-Volatile Memory,NVM),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成缓存更新装置。处理器,执行存储器所存放的程序,并具体执行:通过前台任务接收用户发送的IO请求;通过前台任务响应IO请求来确定待更新数据,以及将待更新数据发送至第一缓冲区;基于第一缓冲区,通过后台任务对缓存进行更新。
在一种可能的实现方式中,第一缓冲区位于LSM-Tree结构的第一层级,缓存位于LSM-Tree结构的第二层级,第一层级中的数据具有可读写特性,第二层级中的数据具有只读特性。
在一种可能的实现方式中,处理器被具体配置为执行:当第一缓冲区中的数据量超过阈值时,将第一缓冲区转化为第二缓冲区,第二缓冲区位于LSM-Tree结构的第三层级,第三层级中的数据具有只读特性;在第一层级中生成新的空的第一缓冲区;将第二缓冲区中的数据与缓存中的数据进行数据合并,在第二层级中得到更新后的缓存。
在一种可能的实现方式中,LSM-Tree结构中的数据包括元数据以及与元数据对应的数据。
在一种可能的实现方式中,处理器被具体配置为执行:在将第二缓冲区中的数据与缓存中的数据进行数据合并之后,释放第二缓冲区。
在一种可能的实现方式中,处理器被具体配置为执行:将待更新数据发送至第一缓冲区之后,通过前台任务在缓存中对待更新数据的元数据进行更新。
在一种可能的实现方式中,处理器被具体配置为执行:通过后台任务在缓存中对待更新数据进行更新。
处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备可执行图2所示方法实施例执行的方法,并实现上述图2所示方法实施例的功能,本说明书实施例在此不再赘述。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图2所示实施例中的缓存方法,并具体执行图2所示方法实施例的步骤。
本公开可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种缓存更新方法,其特征在于,包括:
通过前台任务接收用户发送的输入输出IO请求;
通过前台任务响应所述IO请求来确定待更新数据,以及将所述待更新数据发送至第一缓冲区;
基于所述第一缓冲区,通过后台任务对缓存进行更新。
2.根据权利要求1所述的方法,其特征在于,所述第一缓冲区位于日志结构合并树LSM-Tree结构的第一层级,所述缓存位于所述LSM-Tree结构的第二层级,所述第一层级中的数据具有可读写特性,所述第二层级中的数据具有只读特性。
3.根据权利要求2所述的方法,其特征在于,基于所述第一缓冲区,通过后台任务对缓存进行更新,包括:
当所述第一缓冲区中的数据量超过阈值时,将所述第一缓冲区转化为第二缓冲区,所述第二缓冲区位于所述LSM-Tree结构的第三层级,所述第三层级中的数据具有只读特性;
在所述第一层级中生成新的空的第一缓冲区;
将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并,在所述第二层级中得到更新后的缓存。
4.根据权利要求2或3所述的方法,其特征在于,所述LSM-Tree结构中的数据包括元数据以及与所述元数据对应的数据。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并之后,释放所述第二缓冲区。
6.根据权利要求1所述的方法,其特征在于,将所述待更新数据发送至第一缓冲区之后,所述方法还包括:
通过前台任务在所述缓存中对所述待更新数据的元数据进行更新。
7.根据权利要求6所述的方法,其特征在于,基于所述第一缓冲区,通过后台任务对缓存进行更新,包括:
通过后台任务在所述缓存中对所述待更新数据进行更新。
8.一种缓存更新装置,其特征在于,包括:
前台任务处理模块,用于通过前台任务接收用户发送的IO请求;
所述前台任务处理模块,还用于通过前台任务响应所述IO请求来确定待更新数据,以及将所述待更新数据发送至第一缓冲区;
后台任务处理模块,用于基于所述第一缓冲区,通过后台任务对缓存进行更新。
9.根据权利要求8所述的装置,其特征在于,所述第一缓冲区位于LSM-Tree结构的第一层级,所述缓存位于所述LSM-Tree结构的第二层级,所述第一层级中的数据具有可读写特性,所述第二层级中的数据具有只读特性。
10.根据权利要求9所述的装置,其特征在于,所述后台任务处理模块包括:
转化子模块,用于当所述第一缓冲区中的数据量超过阈值时,将所述第一缓冲区转化为第二缓冲区,所述第二缓冲区位于所述LSM-Tree结构的第三层级,所述第三层级中的数据具有只读特性;
生成子模块,用于在所述第一层级中生成新的空的第一缓冲区;
缓存更新子模块,用于将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并,在所述第二层级中得到更新后的缓存。
11.根据权利要求9或10所述的装置,其特征在于,所述LSM-Tree结构中的数据包括元数据以及与所述元数据对应的数据。
12.根据权利要求10所述的装置,其特征在于,后台任务处理模块还包括:
释放子模块,用于将所述第二缓冲区中的数据与所述缓存中的数据进行数据合并之后,释放所述第二缓冲区。
13.根据权利要求8所述的装置,其特征在于,
所述前台任务处理模块,还用于将所述待更新数据发送至所述第一缓冲区之后,通过前台任务在所述缓存中对所述待更新数据的元数据进行更新。
14.根据权利要求13所述的装置,其特征在于,所述后台任务处理模块具体用于:
通过后台任务在所述缓存中对所述待更新数据进行更新。
15.一种缓存更新装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-7任一项所述的缓存更新方法。
16.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-7任一项所述的缓存更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910217386.4A CN111722785A (zh) | 2019-03-21 | 2019-03-21 | 一种缓存更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910217386.4A CN111722785A (zh) | 2019-03-21 | 2019-03-21 | 一种缓存更新方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111722785A true CN111722785A (zh) | 2020-09-29 |
Family
ID=72563193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910217386.4A Pending CN111722785A (zh) | 2019-03-21 | 2019-03-21 | 一种缓存更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722785A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385067A (zh) * | 2020-10-19 | 2022-04-22 | 澜起科技股份有限公司 | 用于存储器***的数据更新方法和存储器控制器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102763091A (zh) * | 2010-02-17 | 2012-10-31 | 国际商业机器公司 | 将闪存高速缓存集成到大型存储*** |
US20130318283A1 (en) * | 2012-05-22 | 2013-11-28 | Netapp, Inc. | Specializing i/0 access patterns for flash storage |
CN104809237A (zh) * | 2015-05-12 | 2015-07-29 | 百度在线网络技术(北京)有限公司 | LSM-tree索引的优化方法和装置 |
CN104956311A (zh) * | 2013-10-09 | 2015-09-30 | 株式会社日立制作所 | 存储***以及存储控制方法 |
US20170212680A1 (en) * | 2016-01-22 | 2017-07-27 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
CN108733316A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 用于管理存储***的方法和管理器 |
US20190073301A1 (en) * | 2017-09-05 | 2019-03-07 | International Business Machines Corporation | Asynchronous update of metadata tracks in response to a cache hit generated via an i/o operation over a bus interface |
-
2019
- 2019-03-21 CN CN201910217386.4A patent/CN111722785A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102763091A (zh) * | 2010-02-17 | 2012-10-31 | 国际商业机器公司 | 将闪存高速缓存集成到大型存储*** |
US20130318283A1 (en) * | 2012-05-22 | 2013-11-28 | Netapp, Inc. | Specializing i/0 access patterns for flash storage |
CN104956311A (zh) * | 2013-10-09 | 2015-09-30 | 株式会社日立制作所 | 存储***以及存储控制方法 |
CN104809237A (zh) * | 2015-05-12 | 2015-07-29 | 百度在线网络技术(北京)有限公司 | LSM-tree索引的优化方法和装置 |
US20170212680A1 (en) * | 2016-01-22 | 2017-07-27 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
CN108733316A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 用于管理存储***的方法和管理器 |
US20190073301A1 (en) * | 2017-09-05 | 2019-03-07 | International Business Machines Corporation | Asynchronous update of metadata tracks in response to a cache hit generated via an i/o operation over a bus interface |
Non-Patent Citations (2)
Title |
---|
杜晨杰;李君;姚英彪;: "缓冲区管理层对固态盘的有效性研究", 浙江万里学院学报, no. 02, 15 March 2017 (2017-03-15) * |
马留英;蔡杰明;刘浏;刘振军;: "一种加速广域文件***读写访问的缓存策略", 计算机研究与发展, no. 1 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385067A (zh) * | 2020-10-19 | 2022-04-22 | 澜起科技股份有限公司 | 用于存储器***的数据更新方法和存储器控制器 |
CN114385067B (zh) * | 2020-10-19 | 2023-07-18 | 澜起科技股份有限公司 | 用于存储器***的数据更新方法和存储器控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870728B (zh) | 用于移动数据的方法和设备 | |
CN108228646B (zh) | 用于访问数据的方法和电子设备 | |
US11288210B2 (en) | Method, device and computer program product for managing storage system | |
US10817383B2 (en) | Method, apparatus and computer program product for managing data backup | |
US10223257B2 (en) | Multi-section garbage collection | |
CN111857550A (zh) | 用于数据去重的方法、设备以及计算机可读介质 | |
US11210003B2 (en) | Method, device and computer program product for restoring data based on replacing child node identifiers with parent node identifier | |
CN112748863A (zh) | 用于处理数据的方法、电子设备和计算机程序产品 | |
CN110765036A (zh) | 在控制设备处管理元数据的方法、设备和计算机程序产品 | |
JP2022159405A (ja) | データのアペンド方法、装置、電子機器、記憶媒体およびコンピュータプログラム | |
CN111694992B (zh) | 一种数据处理方法和装置 | |
US10747675B2 (en) | Method and device for managing caches | |
CN111625180B (zh) | 数据写入方法及装置、存储介质 | |
CN111722785A (zh) | 一种缓存更新方法和装置 | |
US8533423B2 (en) | Systems and methods for performing parallel multi-level data computations | |
US9697018B2 (en) | Synthesizing inputs to preserve functionality | |
CN113568561A (zh) | 用于信息处理的方法、电子设备和计算机存储介质 | |
CN111342981A (zh) | 局域网环境下设备间的仲裁方法、电子设备、局域网*** | |
US11431349B2 (en) | Method, electronic device and computer program product for processing data | |
US11494100B2 (en) | Method, device and computer program product for storage management | |
CN111459398B (zh) | 一种分布式***的数据处理方法和装置 | |
CN115994151B (zh) | 数据请求变更方法、装置、电子设备和计算机可读介质 | |
CN115297169B (zh) | 数据处理方法、装置、电子设备及介质 | |
CN117472556A (zh) | 数据处理方法、电子设备和计算机程序产品 | |
CN112486404A (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 |