CN118034572A - 数据处理方法、数据处理设备、计算机设备及存储介质 - Google Patents
数据处理方法、数据处理设备、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN118034572A CN118034572A CN202211353877.XA CN202211353877A CN118034572A CN 118034572 A CN118034572 A CN 118034572A CN 202211353877 A CN202211353877 A CN 202211353877A CN 118034572 A CN118034572 A CN 118034572A
- Authority
- CN
- China
- Prior art keywords
- metadata
- log
- logs
- writing
- file
- 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 20
- 238000012545 processing Methods 0.000 title claims abstract description 13
- 230000002776 aggregation Effects 0.000 claims abstract description 62
- 238000004220 aggregation Methods 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 51
- 230000004931 aggregating effect Effects 0.000 claims abstract description 15
- 238000012986 modification Methods 0.000 claims description 17
- 230000004048 modification Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 16
- 230000003993 interaction Effects 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 4
- 238000012216 screening Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提出一种数据处理方法、数据处理设备、计算机设备及存储介质,该方法包括:获取对至少一个文件进行修改产生的多条元数据日志;判断多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;获取至少一个目标文件对应的多个元数据键值条目;对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将至少一个聚合后的元数据键值条目写入目标服务器。本申请由于聚合后的元数据键值条目的数量远远小于元数据日志的数量,可以减少文件系统服务器和元数据存储服务器之间的交互次数更少,提高元数据日志写入效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、数据处理设备、计算机设备及存储介质。
背景技术
分布式文件系统对文件进行读写操作时,对文件和文件目录进行修改时会产生元数据,为了保证元数据写入的原子性,减少写入时延,先将元数据修改内容以元数据日志方式追加写入到元数据存储服务器,然后在后台将修改文件对应的元数据转化为元数据键值(KeyValue,KV)条目,并将元数据键值条目存储到元数据存储服务器中。目前分布式文件系统中元数据的写入过程存在以下问题:
将元数据存储到元数据存储服务器时,元数据键值条目很多,每次将元数据KV条目写入元数据存储服务器,都会产生一个元数据操作(Operation,OP),因此将每个元数据KV条目写入到元数据存储服务器时,产生的元数据操作也很多,文件系统服务器和元数据存储服务器交互十分频繁,从而造成元数据存储服务器压力较大。因此,分布式文件系统中元数据相关操作效率低下,分布式文件系统的中央处理器(Central Processing Unit,CPU)资源和输入输出(Input and Output,IO)资源消耗也比较大,从而影响该分布式文件系统的性能。
发明内容
本申请提供一种数据处理方法、数据处理设备、计算机设备及存储介质,其主要目的在于减少文件系统服务器和元数据存储服务器之间的数据交互次数,有效提高元数据写入效率。
第一方面,本申请提供一种数据处理方法,包括:
获取对至少一个文件进行修改产生的多条元数据日志,其中,每条元数据日志对应对所述至少一个文件的一次修改;
判断所述多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从所述至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;
获取所述至少一个目标文件对应的多个元数据键值条目;
对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将所述至少一个聚合后的元数据键值条目写入目标服务器。
优选地,所述获取对文件进行修改产生的多条元数据日志,之后还包括:
获取每一元数据日志对应的预设指令;
若存在至少一个元数据日志对应的预设指令为存盘指令,则将每一元数据日志写入所述目标服务器。
优选地,所述获取对文件进行修改产生的多条元数据日志,之后还包括:
若每一元数据日志对应的预设指令均不为所述存盘指令,则将每一元数据日志写入缓存,并将每一元数据日志对应的回调记录写入所述缓存。
优选地,所述将每一元数据日志写入缓存,之后还包括:
接收写日志指令,判断所述缓存中每一元数据日志是否是需要写入的元数据日志;
若是,则从所述缓存中获取所有需要写入的元数据日志;
将需要写入的元数据日志进行聚合后写入所述目标服务器。
优选地,所述将需要写入的元数据日志写入所述目标服务器,之后还包括:
判断需要写入的元数据日志进行聚合后是否成功写入所述目标服务器;
若不成功,则重复N次将需要写入的元数据日志进行聚合后写入所述目标服务器,若N次均不成功,则异常退出,N为正整数,N表示预设重复次数。
优选地,所述将所述聚合操作包写入目标服务器,之后还包括:
删除已经写入到所述目标服务器的元数据日志。
第二方面,本申请提供一种数据处理设备,包括:
修改模块,用于获取对至少一个文件进行修改产生的多条元数据日志,其中,每条元数据日志对应对所述至少一个文件的一次修改;
判断模块,用于判断所述多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从所述至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;
键值模块,用于获取所述至少一个目标文件对应的多个元数据键值条目;
聚合模块,用于对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将所述至少一个聚合后的元数据键值条目写入目标服务器。
第三方面,本申请实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据处理方法的步骤。
第四方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
本申请提出的一种数据处理方法、数据处理设备、计算机设备及存储介质,先确定需要写入服务器的目标文件,然后通过将每个目标文件对应的多个元数据键值条目进行聚合,得到聚合后的元数据键值条目,并通过将聚合后的元数据键值条目写入到目标服务器,从而达到将元数据日志写入目标服务器的目的。本申请中通过对目标文件对应的多个元数据键值条目进行聚合,得到聚合后的元数据键值条目,一个聚合后的元数据键值条目包括多个元数据键值条目,每次将一个聚合后的元数据键值条目写入目标服务器,与传统方法中直接将每个元数据日志写入元数据存储服务器相比,可以减少写入次数,从而减少文件系统服务器和元数据存储服务器之间的交互次数,因此可以提高元数据日志写入效率。
附图说明
图1为现有技术中元数据日志写入元数据存储服务器的流程图;
图2为本申请实施例提供的一种数据处理方法的应用场景示意图;
图3为本申请实施例提供的一种数据处理方法的流程图;
图4为现有技术中将元数据写入元数据存储服务器的流程图;
图5为现有技术中元数据日志上电重写的流程图;
图6为本申请一实施例中一种数据处理方法的流程图;
图7为本申请一实施例中写入元数据键值条目的流程图;
图8为本申请一实施例中写入元数据日志的流程图;
图9为本申请实施例提供的一种数据处理设备的结构示意图;
图10为本申请实施例的提供了一种计算机设备的结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了清楚明白的说明本申请的技术方案,下面先对本申请中出现的技术术语一一解释:
元数据:表示文件系统记录文件索引、属性的数据。
元数据日志:记录文件修改的操作日志,记录文件操作方式、操作对象、操作类型等信息。
元数据键值条目:文件元数据编码得到元数据键值条目,存储在元数据存储服务器。
元数据操作:文件系统服务器发向元数据存储服务的读写请求。
图1为现有技术中元数据日志写入元数据存储服务器的流程图,如图1所示,该元数据日志写入元数据存储服务器的工作流程为,当开启元数据日志写入服务器的线程后,获取文件系统服务器产生的元数据日志总数量,如果数量达到设定的阈值,那么将超过部分的元数据日志提取出来,获取超过部分的元数据日志对应的文件,然后将该文件对应的元数据转换为元数据键值条目,并且将得到的元数据键值条目写入到元数据存储服务器中;然后删除已经编码成元数据键值条目并且已经存储到元数据存储服务器的元数据日志。由于一个文件常常对应多个元数据键值条目,所以将元数据存储到元数据存储服务器时,元数据键值条目很多,每次将元数据键值条目写入元数据存储服务器,都会产生一个元数据操作,因此将每个元数据键值条目写入到元数据存储服务器时,产生的元数据操作也很多,文件系统服务器和元数据存储服务器交互十分频繁,从而造成元数据存储服务器压力较大。
针对该问题,本申请实施例提供一种数据处理方法,该方法一般应用在分布式文件系统中,分布式文件系统的具体架构可以根据实际需要进行确定,目标服务器可以是分布式文件系统中可以写入元数据的任何服务器,具体可以根据实际情况进行确定。为了方便解释,本申请实施例中以分布式文件系统包括文件系统服务器和元数据存储服务器为例进行说明,文件系统服务器用来存储文件并可以对文件进行相关的操作,元数据存储服务器用来存储元数据以及与元数据相关的数据,本申请实施例中的目标服务器为元数据存储服务器,对文件进行修改产生元数据日志的为文件系统服务器。
图2为本申请实施例提供的一种数据处理方法的应用场景示意图,如图2所示,文件系统服务器对文件进行修改时,会产生元数据和元数据日志,首先文件系统服务器获取对文件进行修改时产生的元数据日志,并获取元数据日志的数量,将该数量和预设数量阈值进行比较,如果元数据日志的数量超过了该预设数量阈值,则获取超过部分的元数据日志。然后获取超过部分元数据日志对应的目标文件,即目标文件修改产生了该超过部分的元数据日志,对每个目标文件对应的元数据进行编码,得到每个目标文件对应的元数据键值条目,并对每个目标文件对应的所有元数据键值条目进行聚合,得到聚合后的元数据键值条目,一个聚合后的元数据键值条目包括多个元数据键值条目,通过将聚合后的元数据键值条目写入到元数据存储服务器,以达到进元数据日志写入到元数据存储服务器的目的。需要说明的是,文件系统服务器和元数据存储服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。文件系统服务器和元数据存储服务器可以通过蓝牙、USB(UniversalSerial Bus,通用串行总线)或者其他通讯连接方式进行连接,本申请实施例在此不做限制。
本申请中通过对目标文件对应的多个元数据键值条目进行聚合,得到聚合后的元数据键值条目,一个聚合后的元数据键值条目包括多个元数据键值条目,每次将一个聚合后的元数据键值条目写入目标服务器,与传统方法中直接将每个元数据日志写入元数据存储服务器相比,可以减少写入次数,从而减少文件系统服务器和元数据存储服务器之间的交互次数,因此可以提高元数据日志写入效率。
图3为本申请实施例提供的一种数据处理方法的流程图,如图3所示,该方法包括:
S310,获取对至少一个文件进行修改产生的多条元数据日志,其中,每条元数据日志对应对所述至少一个文件的一次修改;
本申请实施例的执行主体为文件系统服务器,首先文件系统服务器对文件进行修改时产生了元数据和元数据日志,一般说来,文件修改一次就会产生一条元数据日志,获取至少一个文件修改时产生的多条元数据日志,具体可以是一个文件进行多次修改时产生的多条元数据日志,也可以是多个文件分别进行修改时产生的多条元数据日志,具体可以根据实际情况进行确定,本申请实施例对此不做具体限定。
S320,判断所述多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从所述至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;
判断产生的多条元数据日志的数量是否超过预设数量阈值,如果超过,则获取超过部分的元数据日志,根据超过部分的元数据日志,从上面进行修改的至少一个文件中,选取出超过部分的元数据日志对应的目标文件,该目标文件可以是一个,也可以是多个,具体根据实际情况进行确定,本申请实施例对此不做具体限定。
在具体实施时,在某一时间点,获取该时间点文件系统服务器中所有元数据日志的数量,将该数量与预设数量阈值进行比较,如果小于该预设数量阈值,则不操作,如果大于该预设数量阈值,可以是根据时间的先后顺序来确定超过部分的元数据日志,以参考时间点为基准,该参考时间点对应的元数据日志数量刚好为预设数量阈值,则在参考时间点之后产生的元数据日志就是超过部分的元数据日志;还可以按照随机的方法,保留预设数量阈值个元数据日志,剩下的元数据日志作为超过部分的元数据日志;具体筛选方法可以根据实际情况进行确定,本申请实施例对此不做具体限定。本申请实施例中的预设数量阈值为预先设定好的,可以根据实际情况进行确定,本申请实施例对此不做具体地的限定。
S330,获取所述至少一个目标文件对应的多个元数据键值条目;
然后获取超过部分元数据日志对应的所有目标文件,具体地,由于元数据日志是为了记录文件修改的操作日志,因此,根据筛选出的超过部分元数据日志,找到该目标文件,超过部分元数据日志就是目标文件修改产生的,根据该目标文件,获取目标文件对应的元数据,然后将该目标文件对应的元数据进行编码,得到目标文件对应的元数据键值条目,一个目标文件对应的多个元数据键值条目。
本申请实施例在具体实施的过程中,对于每个目标文件,将每个目标文件对应的所有元数据键值条目都分别放到一个单独的元数据操作包中,元数据操作包中包括每个目标文件对应的所有元数据键值条目,也就是进行一次元数据操作就能将一个目标文件对应的元数据日志都写入到元数据存储服务器中,而不用对每个元数据日志都进行一次读写操作。
S340,对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将所述至少一个聚合后的元数据键值条目写入目标服务器。
然后对每个目标文件对应的元数据键值条目进行聚合,得到多个聚合后的元数据键值条目,每个聚合后的元数据键值条目中包括多条元数据键值条目,每次将一个聚合后的元数据键值条目写入目标服务器,与传统方法中直接将每个元数据日志写入元数据存储服务器相比,可以减少写入次数,从而减少文件系统服务器和元数据存储服务器之间的交互次数,因此可以提高元数据日志写入效率。
本申请在具体实施过程中,对每个目标文件对应的元数据操作包进行聚合,具体的聚合方法可以是通过哈希算法进行聚合,得到聚合操作包,此处的聚合操作包即为聚合后的元数据键值条目,每个聚合操作包是将多个目标文件对应的元数据操作包聚合到一起,由于聚合操作包的数量远远小于元数据日志的数量。需要说明的是,本申请实施例中目标服务器可以是需要写入数据的任何服务器,本申请实施例中以元数据存储服务器为目标服务器为例进行说明,但不限于此。因此,本申请实施例通过将聚合操作包写入到元数据存储服务器,而不是元数据日志写入元数据存储服务器,减少了与元数据存储服务交互次数,提高了元数据写入效率。
本申请实施例提供一种数据处理方法,先确定需要写入服务器的目标文件,然后通过将每个目标文件对应的多个元数据键值条目进行聚合,得到聚合后的元数据键值条目,并通过将聚合后的元数据键值条目写入到目标服务器,从而达到将元数据日志写入目标服务器的目的。本申请中通过对目标文件对应的多个元数据键值条目进行聚合,得到聚合后的元数据键值条目,一个聚合后的元数据键值条目包括多个元数据键值条目,每次将一个聚合后的元数据键值条目写入目标服务器,与传统方法中直接将每个元数据日志写入元数据存储服务器相比,可以减少写入次数,从而减少文件系统服务器和元数据存储服务器之间的交互次数,因此可以提高元数据日志写入效率。
在上述实施例的基础上,优选地,将所述聚合操作包写入目标服务器具体包括如下几个步骤:
对于当前聚合操作包,将所述当前聚合操作包写入目标服务器;
判断是否所有聚合操作包都已写入完成,若否,则将下一个聚合操作包重新作为所述当前聚合操作包,重复上述过程,直到所有聚合操作包写入完成。
具体地,将聚合操作包写入到元数据存储服务器,由于聚合操作包的数量为多个,首先获取一个聚合操作包,本申请实施例中称之为当前聚合操作包,将该当前聚合操作包写入到元数据存储服务器,然后判断该当前聚合操作包是不是最后一个聚合操作包,如果是,就说明所有的聚合操作包已经写入完成,如果不是,将下一个聚合操作包重新作为当前聚合操作包,重复上述写入的过程,直到当前聚合操作包是最后一个聚合操作包。该方法可以保证所有的聚合操作包都写入到元数据存储服务器,由于聚合操作包的数量相对元数据日志的数量较少,因此本申请可以避免因遗漏而导致重要数据无法恢复的问题,进一步提升了本申请的准确度。
在上述实施例的基础上,优选地,所述将所述聚合操作包写入目标服务器,之后还包括:
删除已经写入到所述目标服务器的元数据日志。
具体地,在聚合操作包写入到元数据存储服务器后,其包含的元数据日志也被写入到元数据存储服务器了,元数据日志的目的是为了防止数据丢失或被误删,通过元数据日志可以恢复相关数据,一旦元数据日志写入到元数据存储服务器后,其就永久保存下来了,因此已经写入成功的元数据日志就可以删除了,以节约存储空间。
图4为现有技术中将元数据写入元数据存储服务器的流程图,如图4所示,现有方法中对于分布式文件系统下文件系统服务器在文件、目录修改时产生的元数据,先将元数据以元数据日志的方式快速记录到元数据存储服务器中。图5为现有技术中元数据日志上电重写的流程图,如图5所示,在主机掉电重启时,重写元数据日志,在内存中生成元数据信息,以保证数据完整。
上述过程中,元数据日志每次写入元数据存储服务器的数据量比较小,元数据的频繁修改导致产生大量的元数据日志,从而元数据存储服务器中存在大量的小IO写操作,导致数据写入效率低下。针对该问题,本申请实施例提供的一种元数据写入方法,在上述实施例的基础上,优选地,图6为本申请一实施例中一种数据处理方法的流程图,如图6所示,所述获取对文件进行修改产生的多条元数据日志,之后还包括:
S610,获取每一元数据日志对应的预设指令;
在实际操作过程中,有些数据涉及到重大安全指标,比如最重要级别项目产生的数据,这些数据十分重要,为了避免突然断电或者其它故障导致重要数据丢失的问题,这些数据一旦生成就需要立即存储到元数据存储服务器中。为了适应某些元数据日志一旦生成就需要立即存盘的需求,本申请实施例中为每个元数据日志分配一个预设指令,具体哪些元数据日志需要立即存盘,哪些元数据日志不需要立即存盘,都是预先设置的。该预设指令用来指示该元数据日志是否有立即存盘的需要,比如如果需要立即存盘,将预设指令设置为1,1即表示存盘指令,如果不需要立即存盘,将预设指令设置为0,0即为非存盘指令,也可以通过其它方式来实现预设指令的设置,具体根据实际情况进行确定,本申请实施例对此不做具体限定。
S620,若存在至少一个元数据日志对应的预设指令为存盘指令,则将每一元数据日志写入所述目标服务器。
对每个元数据日志对应的预设指令都进行判断,判断该元数据日志对应的预设指令是否为存盘指令,如果是,就说明该元数据日志需要立即进行存盘,将该元数据日志写入到元数据存储服务器中。
在上述实施例的基础上,优选地,所述获取对文件进行修改产生的多条元数据日志,之后还包括:
S630,若每一元数据日志对应的预设指令均不为所述存盘指令,则将每一元数据日志写入缓存,将每一元数据日志对应的回调记录写入所述缓存。。
如果每个元数据日志对应的预设指令均不是存盘指令,则将该每个元数据日志写入到缓存中,此种方式称为将元数据追加式写入,缓存的容量比内存小但交换速度快,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。
将每个元数据日志对应的回调记录写入缓存,在具体实施的过程中,生成元数据日志的同时也会生成回调函数,在将每个元数据日志写入到缓存的同时,也将每个元数据日志对应的回调函数写入到缓存中,这样在写入完成后,根据该回调函数退出缓存,回到调用的地方。本申请实施例中通过回调函数保证该方法能正确的运行。
本申请实施例中通过预设指令来区分需要立即存盘的元数据日志,通过该预设指令可以在相应的元数据日志生成后立即存入元数据存储服务器,避免了重要数据因断电或死机等故障丢失,提高了本方法的可靠性;并且,将不需要的元数据日志写入缓存,可以加快数据的读取速度。
在上述实施例的基础上,优选地,所述将每一元数据日志写入缓存,之后包括:
接收写日志指令,判断所述缓存中每一元数据日志是否是需要写入的元数据日志;
若是,则从所述缓存中获取所有需要写入的元数据日志;
将需要写入的元数据日志进行聚合后写入所述目标服务器。
将元数据日志写入缓存后,如果接收到元数据日志写入指令,即写日志指令,该写日志指令可以是由系统发送,也可以是由相关进程发送,具体可以根据实际情况进行确定,本申请实施例对此不做具体限定。接收到写日志指令后,判断该缓存中存储的每个元数据日志是不是需要写入的元数据日志,具体判断方法可以根据元数据日志中包含的产生时间、操作类型、操作对象等进行确定,比如可以将某一段产生时间的元数据日志作为需要写入的元数据日志,也可以是将操作类型是对文件进行修改的元数据日志作为需要写入的元数据日志,还可以是将操作对象为PDF格式的文件对应的元数据日志作为需要写入的元数据日志,也可以是产生时间、操作类型和操作对象之间任意组合来进行确定,具体可以根据实际情况进行确定,本申请实施例对此不做具体限定。最后将需要写入的元数据日志进行聚合,具体地聚合方法可以是计算每个需要写入的元数据日志的文本相似度,然后将相似度搞得元数据日志进行聚合后,写入到元数据存储服务器;也可以是采用现有的日志聚合工具对需要写入的元数据日志进行聚合,常用的日志聚合工具有Elastic Stack、Graylog、Fluentd等等,具体可以根据实际情况进行选择,本申请实施例对此不做具体限定。
需要说明的是,将元数据日志写入缓存和从缓存中获得需要写入的元数据日志可以同时进行,相当于边存边取,通过同时进行的方法,可以提高写数据的效率。
本申请实施例中在接收到写日志指令后,先筛选出需要写入的元数据日志,然后对需要写入的元数据日志进行聚合,使得多个元数据日志可以通过一个写操作就能写入到元数据存储服务器中,与传统方法中对每个元数据日志分别进行写操作相比,降低了写元数据日志的每秒读写次数,提高元数据日志写入效率。
在上述实施例的基础上,优选地,所述将需要写入的元数据日志写入所述目标服务器,之后还包括:
判断需要写入的元数据日志是否成功写入所述目标服务器;
若不成功,则重复N次将需要写入的元数据日志写入所述目标服务器,若N次均不成功,则异常退出,N为正整数,N表示预设重复次数。
具体地,写操作完成后,需要判断写入元数据存储服务器是否写入成功,具体判断方法可以是在根据元数据存储服务器的返回值进行判断,每当一个元数据日志聚合写入到元数据存储服务器后,如果写入成功,元数据存储服务器会返回成功指令,如果失败,元数据存储服务器会返回失败指令,因此可以根据元数据存储服务器返回的指令来判断元数据日志是否写入成功;也可以采用其它方法来进行判断,具体可以根据实际情况进行确定,本申请实施例对此不做具体限定。
如果判断元数据日志聚合写入失败,说明对应的元数据日志没有写入到元数据存储服务器中,则再将需要写入的元数据日志进行聚合后重新写入到元数据存储服务器中,最多重复N次,如果N次均失败,那么就异常退出,如果在达到N次之前,有一次写入成功,说明元数据日志写入成功。
本申请实施例通过对写入元数据存储服务器的操作成功与否进行判断,最大程度确保元数据日志成功写入元数据存储服务器,保证了数据安全。
图7为本申请一实施例中写入元数据键值条目的流程图,如图7所示,首先获取文件系统服务器对文件进行修改时产生的所有元数据日志,判断元数据日志的数量是否超过预设数量阈值,如果超过,获取超过部分的元数据日志,如果不超过则返回到获取元数据日志步骤;并且根据超过部分的元数据日志对应的目标文件,将每个目标文件对应的所有元数据键值条目放入到一个元数据操作包中,然后对所有目标文件的元数据操作包进行聚合,得到聚合操作包;接着判断是否所有超过部分的元数据日志都完成聚合,如果不是,继续获取元数据日志对应的目标文件,按照相同的步骤得到聚合操作包,直到将所有元数据日志都完成聚合,最后得到所有的聚合操作包。当需要将聚合操作包写入到元数据存储服务器后,先从所有的聚合操作包中取出一个聚合操作包,将该聚合操作包作为当前聚合操作包,将当前聚合操作包写入到元数据存储服务器,接着判断该当前聚合操作包是否为最后一个聚合操作包,如果不是,则将下一个聚合操作包重新作为当前聚合操作包,重复上述过程,直到当前聚合操作包是最后一个聚合操作包,说明所有聚合操作包都被写入到元数据存储服务器;如果是,则说明所有元数据日志都已写入到元数据存储服务器,然后删除已经写入元数据存储服务器的元数据日志。
本申请实施例提供一种元数据写入方法,通过将每个目标文件对应的元数据键值条目分别放到一个元数据操作包中,然后对每个目标文件对应的元数据操作包进行聚合,得到聚合操作包,并通过将聚合操作包写入到元数据存储服务器,达到将元数据日志写入元数据存储服务器的目的。与传统方法中直接将每个元数据日志写入元数据存储服务器相比,由于聚合操作包的数量远远小于元数据日志的数量,本申请中文件系统服务器和元数据存储服务器之间的交互次数更少,因此可以提高元数据日志写入效率。并且,一旦元数据日志写入到元数据存储服务器后,其就永久保存下来了,因此已经写入成功的元数据日志就可以删除了,以节约存储空间。
图8为本申请一实施例中写入元数据日志的流程图,如图8所示,本实施例中在具体实施时开辟两个线程,其中一个线程将元数据日志和回调函数写入到缓存中,将元数据日志写入完成后,根据该元数据日志对应的回调函数退出该缓存,并返回到该线程中,此时,该线程向另一线程发送写日志指令。另一线程接收到写日志指令后,判断缓存中是否存在需要写入的元数据日志,如果不存在,则进入睡眠状态,直到下次再接收到写日志指令;如果存在需要写入的元数据日志,则从缓存中取出需要写入的元数据日志,并对需要写入的元数据日志进行聚合,将聚合后的元数据日志写入到元数据存储服务器中。然后判断写入是否成功,如果成功,则返回到等待写日志指令处,如果不成功,则重新写入,如果重新写入失败次数达到N次,则直接服务异常退出,如果在N次之前写入成功,则返回等待写日志指令。
本申请实施例中通过预设指令来区分需要立即存盘的元数据日志,通过该预设指令可以在相应的元数据日志生成后立即存入元数据存储服务器,避免了重要数据因断电或死机等故障丢失,提高了本方法的可靠性;并且,将不需要的元数据日志写入缓存,可以加快数据的读取速度。
另外,将元数据日志写入缓存和从缓存中获得需要写入的元数据日志可以同时进行,相当于边存边取,通过同时进行的方法,可以提高写数据的效率。
再者,在接收到写日志指令后,先筛选出需要写入的元数据日志,然后对需要写入的元数据日志进行聚合,使得多个元数据日志可以通过一个写操作就能写入到元数据存储服务器中,与传统方法中对每个元数据日志分别进行写操作相比,降低了写元数据日志的每秒读写次数,提高元数据日志写入效率。
最后,本申请实施例通过对写入元数据存储服务器的操作成功与否进行判断,最大程度确保元数据日志成功写入元数据存储服务器,保证了数据安全。
图9为本申请实施例提供的一种数据处理设备的结构示意图,如图9所示,该系统包括修改模块910、判断模块920、键值模块930和聚合模块940,其中:
修改模块910用于获取对至少一个文件进行修改产生的多条元数据日志,其中,每条元数据日志对应对所述至少一个文件的一次修改;
判断模块920用于判断所述多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从所述至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;
键值模块930用于获取所述至少一个目标文件对应的多个元数据键值条目;
聚合模块940用于对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将所述至少一个聚合后的元数据键值条目写入目标服务器。
在上述实施例的基础上,优选地,还包括指令模块和第一缓存模块,其中:
所述指令模块用于获取每一元数据日志对应的预设指令;
所述第一缓存模块用于若存在至少一个元数据日志对应的预设指令为存盘指令,则将每一元数据日志写入所述目标服务器。
在上述实施例的基础上,优选地,还包括第二缓存模块,其中:
所述第二缓存模块用于若每一元数据日志对应的预设指令均不为所述存盘指令,则将每一元数据日志写入缓存,并将每一元数据日志对应的回调记录写入所述缓存。
在上述实施例的基础上,优选地,所述缓存模块包括缓存单元、筛选单元和聚合单元,其中:
所述缓存单元用于接收写日志指令,判断所述缓存中每一元数据日志是否是需要写入的元数据日志;
所述筛选单元用于若是,则从所述缓存中获取所有需要写入的元数据日志;
所述聚合单元用于将需要写入的元数据日志进行聚合后写入所述目标服务器。
在上述实施例的基础上,优选地,所述缓存模块还包括成功单元和重复单元,其中:
所述成功单元用于判断需要写入的元数据日志进行聚合后是否成功写入所述目标服务器;
所述重复单元用于若不成功,则重复N次将需要写入的元数据日志进行聚合后写入所述目标服务器,若N次均不成功,则异常退出,N为正整数,N表示预设重复次数。
在上述实施例的基础上,优选地,所述聚合模块包括当前单元和操作单元,其中:
所述当前单元用于对于当前聚合操作包,将所述当前聚合操作包写入目标服务器;
所述操作单元用于判断是否所有聚合操作包都已写入完成,若否,则将下一个聚合操作包重新作为所述当前聚合操作包,重复上述过程,直到所有聚合操作包写入完成。
在上述实施例的基础上,优选地,还包括删除模块,其中:
所述删除模块用于删除已经写入到所述目标服务器的元数据日志。
本实施例为与上述方法对应的系统实施例,其具体实施过程与上述方法实施例相同,详情请参考上述方法实施例,本系统实施例对此不做具体限定。
上述元数据写入系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图10为本申请实施例的提供了一种计算机设备的结构示意图,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括计算机存储介质、内存储器。该计算机存储介质存储有操作系统、计算机程序和数据库。该内存储器为计算机存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行元数据写入方法过程中生成或获取的数据,如预设数量阈值、元数据、元数据日志。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种元数据写入方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中的元数据写入方法的步骤。或者,处理器执行计算机程序时实现元数据写入系统这一实施例中的各模块/单元的功能。
在一实施例中,提供一计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中元数据写入方法的步骤。或者,该计算机程序被处理器执行时实现上述元数据写入系统这一实施例中的各模块/单元的功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (7)
1.一种数据处理方法,其特征在于,包括:
获取对至少一个文件进行修改产生的多条元数据日志,其中,每条元数据日志对应对所述至少一个文件的一次修改;
判断所述多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从所述至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;
获取所述至少一个目标文件对应的多个元数据键值条目;
对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将所述至少一个聚合后的元数据键值条目写入目标服务器。
2.根据权利要求1所述的数据处理方法,其特征在于,所述获取对文件进行修改产生的多条元数据日志,之后还包括:
获取每一元数据日志对应的预设指令;
若存在至少一个元数据日志对应的预设指令为存盘指令,则将每一元数据日志写入所述目标服务器。
3.根据权利要求2所述的数据处理方法,其特征在于,所述获取对文件进行修改产生的多条元数据日志,之后还包括:
若每一元数据日志对应的预设指令均不为所述存盘指令,则将每一元数据日志写入缓存,并将每一元数据日志对应的回调记录写入所述缓存。
4.根据权利要求3所述的数据处理方法,其特征在于,所述将每一元数据日志写入缓存,之后还包括:
接收写日志指令,判断所述缓存中每一元数据日志是否是需要写入的元数据日志;
若是,则从所述缓存中获取所有需要写入的元数据日志;
将需要写入的元数据日志进行聚合后写入所述目标服务器。
5.一种数据处理设备,其特征在于,包括:
修改模块,用于获取对至少一个文件进行修改产生的多条元数据日志,其中,每条元数据日志对应对所述至少一个文件的一次修改;
判断模块,用于判断所述多条元数据日志的数量是否超过预设数量阈值,若超过,则根据超过部分的元数据日志从所述至少一个文件中确定所述超过部分的元数据日志关联的至少一个目标文件;
键值模块,用于获取所述至少一个目标文件对应的多个元数据键值条目;
聚合模块,用于对每一目标文件对应的元数据键值条目进行聚合,获取至少一个聚合后的元数据键值条目,并将所述至少一个聚合后的元数据键值条目写入目标服务器。
6.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述数据处理方法的步骤。
7.一种计算机存储介质,所述计算机存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211353877.XA CN118034572A (zh) | 2022-11-01 | 2022-11-01 | 数据处理方法、数据处理设备、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211353877.XA CN118034572A (zh) | 2022-11-01 | 2022-11-01 | 数据处理方法、数据处理设备、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118034572A true CN118034572A (zh) | 2024-05-14 |
Family
ID=90997398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211353877.XA Pending CN118034572A (zh) | 2022-11-01 | 2022-11-01 | 数据处理方法、数据处理设备、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118034572A (zh) |
-
2022
- 2022-11-01 CN CN202211353877.XA patent/CN118034572A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733306B (zh) | 一种文件合并方法及装置 | |
CN113064859B (zh) | 一种元数据处理方法、装置及电子设备和存储介质 | |
CN110888602A (zh) | 基于固态硬盘的读性能提升方法、装置及计算机设备 | |
CN110727698A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN110674145B (zh) | 数据一致性的检测方法、装置、计算机设备和存储介质 | |
CN114253483B (zh) | 基于命令的写缓存管理方法、装置、计算机设备及存储介质 | |
CN109522273B (zh) | 一种实现数据写入的方法及装置 | |
CN111459764A (zh) | 一种日志管理方法及终端 | |
US20150261454A1 (en) | Database device, computer program product and data processing method | |
CN111008233B (zh) | 一种kv数据库的访问方法、装置及设备 | |
US11467896B2 (en) | Sections in crash dump files | |
CN111858402A (zh) | 一种基于cache的读写数据处理方法及系统 | |
CN118034572A (zh) | 数据处理方法、数据处理设备、计算机设备及存储介质 | |
CN113704027B (zh) | 文件聚合兼容方法、装置、计算机设备和存储介质 | |
CN115470155A (zh) | 支持固态硬盘多场景复用的l2p表缓存方法和装置 | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
CN115563021A (zh) | 基于固态硬盘的重复读性能提升方法、装置和计算机设备 | |
CN114780489A (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
CN111782622B (zh) | 日志处理方法、装置、服务器及存储介质 | |
CN111324668B (zh) | 数据库数据同步处理方法、装置及存储介质 | |
CN110515751B (zh) | 一种加载运行VxWorks实时保护进程的方法及系统 | |
CN110750215A (zh) | 提升固态硬盘随机读性能方法、装置和计算机设备 | |
CN114185620B (zh) | 加速ssd固件加载实现方法、装置、计算机设备及存储介质 | |
CN111176568A (zh) | 一种数据分析的方法和装置 | |
CN114047880B (zh) | 多Pass编程的NAND写入功耗优化方法、装置及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |