CN112685334A - 一种分块缓存数据的方法、装置及存储介质 - Google Patents
一种分块缓存数据的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112685334A CN112685334A CN202011515896.9A CN202011515896A CN112685334A CN 112685334 A CN112685334 A CN 112685334A CN 202011515896 A CN202011515896 A CN 202011515896A CN 112685334 A CN112685334 A CN 112685334A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- computing
- block
- caching
- 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 78
- 238000004364 calculation method Methods 0.000 claims abstract description 36
- 230000008569 process Effects 0.000 claims abstract description 19
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 abstract description 2
- 238000005192 partition Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000011068 loading method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种分块缓存数据的方法、装置及存储介质。该方法包括:在接收计算任务的缓存数据请求之后,先确定所述计算任务所需要的目标数据及所述目标数据所包括的多个数据分块;之后,每次在缓存中仅缓存其中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,再缓存下一个数据分块,直至所述多个数据分块中的每一个数据分块都被缓存过。在分块缓存数据的上述过程中,每次仅缓存多个数据分块中的一个数据分块,对缓存数据所需的存储空间要求较低,可最大程度地利用现有的存储空间,降低硬件成本,减少存储空间不够用的情况。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种分块缓存数据的方法、装置及存储介质。
背景技术
众所周知,数据缓存是提升数据访问速度的一个有效途径,被广泛应用于各大数据处理系统。近些年,随着网络通信和计算机技术的日益发展和普及,大数据的应用也越来越广泛,这也给数据的缓存空间提出了更高的要求,特别是对于设置有多个缓存级别的大型数据处理系统。
现有的大数据缓存机制,通常采用全数据加载的方式,这样常常会因为数据量过于庞大,内存空间不够而导致无法完成缓存操作。此外,采用全数据加载的方式,即使数据量不大,在内存空间或磁盘空间被某些关键进程大量占用而导致不足时,也会频频发生缓存操作无法完成的情况。
针对上述问题,如果只是一味地通过添加存储空间的方式来解决必然会导致硬件建设和维护的成本增加。而且,对于有些不具备扩展性,也无法再增加存储空间的系统来说,这一方式可能意味着重建,从而造成资源的极大浪费
因此,如何在不增加存储空间的情况下,通过改进数据缓存方法来更加充分地利用缓存空间而减少存储空间不够用的情况,仍然是一个尚待解决的技术问题。
发明内容
针对以上问题,本发明人创造性地提供一种分块缓存数据的方法、装置及存储介质。
根据本发明实施例第一方面,一种分块缓存数据的方法,该方法包括:接收计算任务的缓存数据请求,其中计算任务包括多个可并发执行的计算单元;确定计算任务所需要的目标数据及目标数据所包括的多个数据分块,其中多个数据分块中的每一数据分块用于多个计算单元中至少一个计算单元的计算;缓存多个数据分块中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,缓存下一个数据分块,直至多个数据分块中的每一个数据分块都被缓存过。
根据本发明实施例一实施方式,在确定计算任务所需要的目标数据及目标数据所包括的多个数据分块之前,该方法还包括:配置目标数据所包括的数据分块的数目;根据数据分块的数目,将目标数据划分为相互独立的多个数据分块。
根据本发明实施例一实施方式,在缓存多个数据分块中的一个数据分块之前,该方法还包括:判断目标数据的所有数据分块是否都可以被缓存,若否,则继续后面的操作。
根据本发明实施例一实施方式,缓存多个数据分块中的一个数据分块之前,该方法还包括:获取多个数据分块中每个数据分块的标识并对多个数据分块的所有标识进行排序得到一个有序队列;相应地,缓存多个数据分块中的一个数据分块,包括:从有序队列中取出一个数据分块的标识,并缓存与相应标识对应的数据分块。
根据本发明实施例一实施方式,确认相应数据分块对应的计算单元得以执行并得到计算结果,包括:在并发执行计算单元的过程中,获取相应数据分块的引用数,其中引用数为相应数据分块被所有计算单元使用的次数;当相应数据分块的引用数为0时,则确认相应数据分块对应的计算单元得以执行并得到计算结果。
根据本发明实施例一实施方式,在获取相应数据分块的引用数之前,该方法还包括:对计算任务的每一计算单元进行分析以获取每一计算单元对目标数据的使用次数;累计每一计算单元对相应数据分块的使用次数得到目标数据的引用数;获取目标数据所包括的多个数据分块中每一数据分块的标识;通过每一数据分块的标识,将目标数据的引用数记录为相应数据分块的引用数。
根据本发明实施例一实施方式,在并发执行计算单元的过程中,该方法还包括:若计算单元使用了缓存得相应数据分块,则使相应数据分块的引用数减1。
根据本发明实施例一实施方式,在缓存下一个数据分块之前,该方法还包括:从缓存中清除相应数据分块。
根据本发明实施例第二方面,一种分块缓存数据的装置,该装置包括:缓存数据请求接收模块,接收计算任务的缓存数据请求,其中计算任务包括多个可并发执行的计算单元;目标数据及数据分块确定模块,用于确定计算任务所需要的目标数据及目标数据所包括的多个数据分块,其中多个数据分块中的每一数据分块用于多个计算单元中至少一个计算单元的计算;数据分块缓存模块,用于缓存多个数据分块中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,清除当前的数据分块,缓存下一个数据分块,直至多个数据分块中的每一个数据分块都被缓存过。
根据本发明实施例第三方面,提供一种计算机存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项分块缓存数据的方法。
本发明实施例提供一种分块缓存数据的方法、装置及存储介质,该方法包括:在接收计算任务的缓存数据请求之后,先确定所述计算任务所需要的目标数据及所述目标数据所包括的多个数据分块;之后,每次在缓存中仅缓存其中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,再缓存下一个数据分块,直至所述多个数据分块中的每一个数据分块都被缓存过。此时,上述计算任务的所有计算单元也执行完毕,可继续后续计算过程得到计算任务的最终结果。在分块缓存数据的上述过程中,每次仅缓存多个数据分块中的一个数据分块,对缓存数据所需的存储空间要求较低,可最大程度地利用现有的存储空间,降低硬件成本,减少存储空间不够用的情况。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本发明实施例分块缓存数据方法的实现流程示意图;
图2为本发明实施例分块缓存数据方法一应用的具体实现流程示意图;
图3为本发明实施例分块缓存数据装置的组成结构示意图。
具体实施方式
为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
图1示出了本发明实施例分块缓存数据的方法的实现流程。参考图1,该方法包括:操作110,接收计算任务的缓存数据请求,其中计算任务包括多个可并发执行的计算单元;操作120,确定计算任务所需要的目标数据及目标数据所包括的多个数据分块,其中多个数据分块中的每一数据分块用于多个计算单元中至少一个计算单元的计算;操作130,缓存多个数据分块中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,缓存下一个数据分块,直至多个数据分块中的每一个数据分块都被缓存过。
需要说明的是,数据缓存的主要目的是使计算单元更快地获取到计算所需地数据,因此,本发明实施例分块缓存数据的方法通常要与计算任务的调度执行过程相结合,协同进行。通常,可以通过不同线程来分别进行任务调度执行和数据缓存的操作,另设置一个主控程序进行协同推进;也可以通过主线程和从线程的方式。实施者可根据需要选择任何适用的实现方式。
操作110中,缓存数据请求可能只是一个触发过程或是初始化缓存管理工具的一个命令,通过这一请求缓存管理程序可为下一步缓存数据做好各种资源准备,例如获取相应的存储空间等。
计算单元主要指可执行的最小计算单元,例如,某个函数、子任务、或是某个操作等。
在操作120中,此处的目标数据通常较大,因此会根据需要划分为相互独立的数据分块。所谓相互独立,主要指数据分块之间没有耦合关系,且每一个数据分块最少包括有相应计算单元一次计算所需的全部数据。例如,一个表中存有1万条记录,在每个计算中需要使用其中的一条记录,则每条记录就是可分块的最小单位,如果预先定义了分块数为10的划,则可以分成10个数据分块,则每个数据分块可包括一定条数(例如几千到几百)的记录,各个数据分块中的数据互不重复且加起来正好是原有的1万条记录。计算任务所需的数据分块,可以由计算任务告知;也可以事先维护一个计算任务与数据的对应关系,在运行时通过任务标识获取与任务对应的数据块标识来获取;以及其它任何可行的方式。
在操作130中,必须要确保需要使用该数据分块的计算单元都已获取相应的数据,否则,如果有计算单元没拿到数据而无法完成计算的话可能会导致整个计算任务无法继续后面的计算而失败。在确认相应数据分块对应的计算单元得以执行并得到计算结果时,可通过逐个检测各个计算单元要使用的分块数据和计算单元的执行状态,但这一方式会增加相应操作,占用一部分计算资源;也可以通过事先获取数据块的引用数,在执行时通过引用数协同推进数据的缓存和计算的执行;还可以通过其它任何可行的方式。
根据本发明实施例一实施方式,在确定计算任务所需要的目标数据及目标数据所包括的多个数据分块之前,该方法还包括:配置目标数据所包括的数据分块的数目;根据数据分块的数目,将目标数据划分为相互独立的多个数据分块。
在本实施方式中,实施者可根据存储空间的大小和其它相关需求,配置数据分块的数目,并根据数据分块的数目将目标数据划分为相互独立的多个数据分块。如此,可根据实施条件灵活调整分块的大小,使缓存的利用率更高。
根据本发明实施例一实施方式,在缓存多个数据分块中的一个数据分块之前,该方法还包括:判断目标数据的所有数据分块是否都可以被缓存,若否,则继续后面的操作。
如果可供缓存分配和使用的存储空间足够大,可以放下所有的数据分块,那使用传统的缓存方法,即缓存整个目标数据,会减少更换数据分块的操作,效率更高。因此,在本实施方式中,会先做个判断。如此,可根据不同运行条件,择优选取最佳的缓存数据的方法。
根据本发明实施例一实施方式,缓存多个数据分块中的一个数据分块之前,该方法还包括:获取多个数据分块中每个数据分块的标识并对多个数据分块的所有标识进行排序得到一个有序队列;相应地,缓存多个数据分块中的一个数据分块,包括:从有序队列中取出一个数据分块的标识,并缓存与相应标识对应的数据分块。
在本实施方式中,通过对数据分块的标识的排序,可以有序缓存数据分块,确保每一个数据分块都被缓存到,以免遗漏。与此同时,通过排序的方式,还可作为一种与计算任务协同操作的手段,即在计算任务的调度执行的另一个线程中可采取同样的排序进行缓存数据的读取。
根据本发明实施例一实施方式,确认相应数据分块对应的计算单元得以执行并得到计算结果,包括:在并发执行计算单元的过程中,获取相应数据分块的引用数,其中引用数为相应数据分块被所有计算单元使用的次数;当相应数据分块的引用数为0时,则确认相应数据分块对应的计算单元得以执行并得到计算结果。
在本实施方式中,就是通过预先获取数据分块的引用数,在运行时,通过引用数来协同计算过程和数据缓存过程的。
根据本发明实施例一实施方式,在获取相应数据分块的引用数之前,该方法还包括:对计算任务的每一计算单元进行分析以获取每一计算单元对目标数据的使用次数;累计每一计算单元对相应数据分块的使用次数得到目标数据的引用数;获取目标数据所包括的多个数据分块中每一数据分块的标识;通过每一数据分块的标识,将目标数据的引用数记录为相应数据分块的引用数。
在本实施方式中,通过分析每一计算单元对目标数据的引用数,累加后变成目标数据总的引用数,而该引用数也就是目标数据所包括的每一个数据分块的引用数。这一分析通常都是在运行前,通过对代码和数据之间的调用关系,通过静态分析获取的。实施者可以利用现有的代码分析工具获取代码和数据之间的调用关系,并在此基础之上,统计每一计算单元对目标数据的引用数。
根据本发明实施例一实施方式,在并发执行计算单元的过程中,该方法还包括:若计算单元使用了缓存得相应数据分块,则使相应数据分块的引用数减1。
在控制或调度各个计算单元并发执行的过程中,通常是可以在完成计算过程之后,加入一些处理逻辑的,其中就可以包括使引用数减1的操作。
根据本发明实施例一实施方式,在缓存下一个数据分块之前,该方法还包括:从缓存中清除相应数据分块。
当数据分块的引用数为0时,或已经确认相应数据分块对应的计算单元得以执行并得到计算结果后,基本上就既可以确定当前的计算任务不再需要缓存中的数据分块。在本实施方式中,清除相应数据分块,可为下一个数据分块腾出更多的存储空间,进一步提高了缓存的利用率。
图2示出了本发明实施例分块缓存数据方法一应用的具体实现流程示意图。该应用利用Spark平台中的缓存管理工具,并结合计算任务的调度管理,实现了对目标数据的数据分块的分块缓存。
在Spark中,可以定义弹性分布式数据集(RDD),而数据集可以分为多个数据分块,数据分块的个数是可以根据数据文件数量、Spark默认并行度或者计算输出预先定义的。此外,Spark还提供有数据缓存管理工具(Spark Cache),非常适合实现本发明实施例所提供的分块缓存数据的方法。
如图2所示,这一过程的具体步骤包括:
步骤2010,从有向无环图(Directed Acyclic Graph,DAG)中分析数据引用计数;
在Spark中,使用DAG对RDD的关系进行建模,描述了RDD的依赖关系,因此,可以对DAG进行分析就可以获得各个数据分块数据的引用计数。
该引用计数可存在一个临时变量中,并通过参数的方式被主控程序读取或更新,而对该临时变量的操作可以定义在主控程序调度并发任务的逻辑判断后的相应操作中。
步骤2020,启动计算,按照DAG图执行多个并发计算(Task),同时启动另一个缓存管理线程进行缓存数据的管理和操作;
步骤2030,缓存管理线程接收缓存请求之后,确定与计算任务之对应的所有数据分块。
步骤2040,对数据分块的Id进行排序得到一个有序队列;
步骤2050,从有序队列中取出一个数据分块的Id(第一次是取队列的第一个元素的值,之后依次取队列中的下一个元素的值),并缓存相应的数据分块;
步骤2060,在负责进行任务调度和执行多个并发计算的主线程中,按照DAG继续计算流程,包括读取缓存中的数据;
步骤2070,检测缓存中的数据是否已经缓存有数据分块(第一次)或是否已经更新了数据分块,若是,则继续步骤2080,若否,则等待;
步骤2080,使用缓存中的数据分块完成相应的计算,其中,如果任何计算使用到缓存的数据分块,对引用数进行减1操作;
对于并发执行的每个计算来说,会先确定要使用的下一个数据分块的id,并与缓存中缓存的数据分块的id作比较:如果相同,则取出数据进行计算;如果不同,则进行阻塞等待有了新的数据分块后再被唤醒。
步骤2090,与此同时,在缓存管理线程中,不断检测该数据分块的引用数是否为0,若是,则继续步骤2100,若否,则等待;
步骤2100,清除缓存的数据分块;
步骤2110,判断是否还有数据分块没有缓存过(是否已经是有序队列中的最后一个元素),若还有(不是最后一个元素),则获取下一个数据分块,返回步骤2050,若没有(已是最后一个元素),则结束缓存管理线程。
步骤2120,与此同时,在主线程中,当使用缓存的数据块完成了相应的计算之后,检测是否还有计算没有完成,若有,则返回步骤2060,继续读取缓存中的数据,若没有,则结束计算任务,返回计算结果。
需要说明的是上述实施例一应用的具体实现流程,仅为示例性说明,并发对本发明实施例实施方式或应用场景的限定。实施者可根据具体实施条件采用任何适用的实施方式应用于任何适用的应用场景中。
进一步地,本发明实施例还提供一种分块缓存数据的装置,如图3所示,该装置30包括:缓存数据请求接收模块301,接收计算任务的缓存数据请求,其中计算任务包括多个可并发执行的计算单元;目标数据及数据分块确定模块302,用于确定计算任务所需要的目标数据及目标数据所包括的多个数据分块,其中多个数据分块中的每一数据分块用于多个计算单元中至少一个计算单元的计算;数据分块缓存模块303,用于缓存多个数据分块中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,清除当前的数据分块,缓存下一个数据分块,直至多个数据分块中的每一个数据分块都被缓存过。
根据本发明实施例一实施方式,该装置30还包括:数据分块数目的配置模块,用于配置目标数据所包括的数据分块的数目;数据分块划分模块,用于根据数据分块的数目,将目标数据划分为相互独立的多个数据分块。
根据本发明实施例一实施方式,该装置30还包括数据缓存负载判断模块,用于判断目标数据的所有数据分块是否都可以被缓存,若否,则继续后面的操作。
根据本发明实施例一实施方式,该装置30还包括数据分块排序模块,用于获取多个数据分块中每个数据分块的标识并对多个数据分块的所有标识进行排序得到一个有序队列;相应地,数据分块缓存模块具体用于从有序队列中取出一个数据分块的标识,并缓存与相应标识对应的数据分块。
根据本发明实施例一实施方式,数据分块缓存模块303包括:引用数获取子模块,用于在并发执行计算单元的过程中,获取相应数据分块的引用数,其中引用数为相应数据分块被所有计算单元使用的次数;计算单元执行状态判断子模块,用于当相应数据分块的引用数为0时,则确认相应数据分块对应的计算单元得以执行并得到计算结果。
根据本发明实施例一实施方式,该装置30还包括数据分块引用数统计模块,用于对计算任务的每一计算单元进行分析以获取每一计算单元对目标数据的使用次数;累计每一计算单元对相应数据分块的使用次数得到目标数据的引用数;获取目标数据所包括的多个数据分块中每一数据分块的标识;通过每一数据分块的标识,将目标数据的引用数记录为相应数据分块的引用数。
根据本发明实施例一实施方式,该装置30还包括引用数更新模块,用于若计算单元使用了缓存得相应数据分块,则使相应数据分块的引用数减1。
根据本发明实施例一实施方式,该装置30还包括数据清除模块,用于从缓存中清除相应数据分块。
根据本发明实施例第三方面,提供一种计算机存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项分块缓存数据的方法。
这里需要指出的是:以上对分块缓存数据的装置实施例的描述和以上针对计算机存储介质实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本发明对分块缓存数据的装置实施例的描述和对计算机存储介质实施例的描述尚未披露的技术细节,请参照本发明前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种分块缓存数据的方法,所述方法包括:
接收计算任务的缓存数据请求,其中所述计算任务包括多个可并发执行的计算单元;
确定所述计算任务所需要的目标数据及所述目标数据所包括的多个数据分块,其中所述多个数据分块中的每一数据分块用于所述多个计算单元中至少一个计算单元的计算;
缓存所述多个数据分块中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,缓存下一个数据分块,直至所述多个数据分块中的每一个数据分块都被缓存过。
2.根据权利要求1所述的方法,在确定所述计算任务所需要的目标数据及所述目标数据所包括的多个数据分块之前,所述方法还包括:
配置所述目标数据所包括的数据分块的数目;
根据数据分块的数目,将所述目标数据划分为相互独立的多个数据分块。
3.根据权利要求1所述的方法,在所述缓存所述多个数据分块中的一个数据分块之前,所述方法还包括:
判断所述目标数据的所有数据分块是否都可以被缓存,若否,则继续后面的操作。
4.根据权利要求1所述的方法,所述缓存所述多个数据分块中的一个数据分块之前,所述方法还包括:
获取所述多个数据分块中每个数据分块的标识并对所述多个数据分块的所有标识进行排序得到一个有序队列;
相应地,缓存所述多个数据分块中的一个数据分块,包括:
从所述有序队列中取出一个数据分块的标识,并缓存与相应标识对应的数据分块。
5.根据权利要求1所述的方法,所述确认相应数据分块对应的计算单元得以执行并得到计算结果,包括:
在并发执行所述计算单元的过程中,获取相应数据分块的引用数,其中所述引用数为相应数据分块被所有计算单元使用的次数;
当所述相应数据分块的引用数为0时,则确认相应数据分块对应的计算单元得以执行并得到计算结果。
6.根据权利要求5所述的方法,在所述获取相应数据分块的引用数之前,所述方法还包括:
对所述计算任务的每一计算单元进行分析以获取每一计算单元对所述目标数据的使用次数;
累计每一计算单元对相应数据分块的使用次数得到所述目标数据的引用数;
获取所述目标数据所包括的多个数据分块中每一数据分块的标识;
通过所述每一数据分块的标识,将所述目标数据的引用数记录为相应数据分块的引用数。
7.根据权利要求5所述的方法,在并发执行所述计算单元的过程中,所述方法还包括:
若所述计算单元使用了缓存得相应数据分块,则使所述相应数据分块的引用数减1。
8.根据权利要求1所述的方法,在所述缓存下一个数据分块之前,所述方法还包括:
从缓存中清除相应数据分块。
9.一种分块缓存数据的装置,所述装置包括:
缓存数据请求接收模块,接收计算任务的缓存数据请求,其中所述计算任务包括多个可并发执行的计算单元;
目标数据及数据分块确定模块,用于确定所述计算任务所需要的目标数据及所述目标数据所包括的多个数据分块,其中所述多个数据分块中的每一数据分块用于所述多个计算单元中至少一个计算单元的计算;
数据分块缓存模块,用于缓存所述多个数据分块中的一个数据分块,在确认相应数据分块对应的计算单元得以执行并得到计算结果后,清除当前的数据分块,缓存下一个数据分块,直至所述多个数据分块中的每一个数据分块都被缓存过。
10.一种计算机存储介质,在所述计算存储介质上存储了程序指令,其中,所述程序指令在运行时用于执行如权利要求1至8任一项所述的分块缓存数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011515896.9A CN112685334A (zh) | 2020-12-21 | 2020-12-21 | 一种分块缓存数据的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011515896.9A CN112685334A (zh) | 2020-12-21 | 2020-12-21 | 一种分块缓存数据的方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112685334A true CN112685334A (zh) | 2021-04-20 |
Family
ID=75449592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011515896.9A Pending CN112685334A (zh) | 2020-12-21 | 2020-12-21 | 一种分块缓存数据的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685334A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103238140A (zh) * | 2010-09-03 | 2013-08-07 | 赛门铁克公司 | 基于去重复的存储系统中用于可扩展引用管理的系统和方法 |
CN106155934A (zh) * | 2016-06-27 | 2016-11-23 | 华中科技大学 | 一种云环境下基于重复数据的缓存方法 |
CN108829613A (zh) * | 2018-05-24 | 2018-11-16 | 中山市江波龙电子有限公司 | 数据存储方法及存储设备 |
CN110058804A (zh) * | 2018-01-19 | 2019-07-26 | 三星电子株式会社 | 数据存储系统和用于写入键值对的对象的方法 |
CN111240613A (zh) * | 2018-11-28 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 屏幕显示方法、装置、存储介质、处理器及计算机设备 |
-
2020
- 2020-12-21 CN CN202011515896.9A patent/CN112685334A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103238140A (zh) * | 2010-09-03 | 2013-08-07 | 赛门铁克公司 | 基于去重复的存储系统中用于可扩展引用管理的系统和方法 |
CN106155934A (zh) * | 2016-06-27 | 2016-11-23 | 华中科技大学 | 一种云环境下基于重复数据的缓存方法 |
CN110058804A (zh) * | 2018-01-19 | 2019-07-26 | 三星电子株式会社 | 数据存储系统和用于写入键值对的对象的方法 |
CN108829613A (zh) * | 2018-05-24 | 2018-11-16 | 中山市江波龙电子有限公司 | 数据存储方法及存储设备 |
CN111240613A (zh) * | 2018-11-28 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 屏幕显示方法、装置、存储介质、处理器及计算机设备 |
Non-Patent Citations (1)
Title |
---|
刘纪平;吴立新;董春;张福浩;亢晓琛;: "一种大规模空间数据流式并行处理方法研究", 测绘科学, no. 01, pages 2 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN116028388B (zh) * | 2023-01-17 | 2023-12-12 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9417935B2 (en) | Many-core process scheduling to maximize cache usage | |
US7844853B2 (en) | Methods and apparatus for restoring a node state | |
US20120222043A1 (en) | Process Scheduling Using Scheduling Graph to Minimize Managed Elements | |
JP5516744B2 (ja) | スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法 | |
US9112750B2 (en) | Job management server and job management method | |
EP2851799A1 (en) | Fault tolerant batch processing | |
US10013288B2 (en) | Data staging management system | |
CN108574645B (zh) | 一种队列调度方法及装置 | |
US12164970B2 (en) | Scaling virtualization resource units of applications | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN116225709A (zh) | 一种gpu实时任务算力动态调配方法及装置 | |
CN107528871B (zh) | 存储系统中的数据分析 | |
CN112685334A (zh) | 一种分块缓存数据的方法、装置及存储介质 | |
JP5776813B2 (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム | |
CN103593606B (zh) | 上下文信息管理方法及系统 | |
CN114116790A (zh) | 数据处理的方法及装置 | |
JP2018132948A (ja) | 読込プログラム、読込方法および情報処理装置 | |
US11797729B2 (en) | Hyper-converged infrastructure (HCI) operation predictor | |
JP6051733B2 (ja) | 制御システム、制御方法、及び、制御プログラム | |
CN111090627A (zh) | 基于池化的日志存储方法、装置、计算机设备及存储介质 | |
CN106959888B (zh) | 云存储系统中的任务处理方法及装置 | |
US20160019143A1 (en) | Garbage collection for selecting region to reclaim on basis of update to reference source information | |
CN114840331A (zh) | 一种vcpu调度方法、装置及控制设备 | |
CN117194002A (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 |