CN111459882B - 分布式文件系统的命名空间事务处理方法和装置 - Google Patents

分布式文件系统的命名空间事务处理方法和装置 Download PDF

Info

Publication number
CN111459882B
CN111459882B CN202010238634.6A CN202010238634A CN111459882B CN 111459882 B CN111459882 B CN 111459882B CN 202010238634 A CN202010238634 A CN 202010238634A CN 111459882 B CN111459882 B CN 111459882B
Authority
CN
China
Prior art keywords
sentences
file system
statement
transaction
index node
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
Application number
CN202010238634.6A
Other languages
English (en)
Other versions
CN111459882A (zh
Inventor
孙研
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010238634.6A priority Critical patent/CN111459882B/zh
Publication of CN111459882A publication Critical patent/CN111459882A/zh
Application granted granted Critical
Publication of CN111459882B publication Critical patent/CN111459882B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/144Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种分布式文件系统的命名空间事务处理方法和装置,此外还提供了一种电子设备和可读存储介质,涉及分布式文件系统技术领域。具体实现方案为:获取用户对文件系统目录树的多个操作请求,将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句,按照多个所述操作请求的先后顺序,将每个所述操作语句依次添加到关联的每个所述索引节点的事务队列中;从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应。本实施例通过事务队列保证读写一致性及隔离属性,提高命名空间的并发事务处理性能。

Description

分布式文件系统的命名空间事务处理方法和装置
技术领域
本申请涉及计算机技术,尤其涉及分布式文件系统技术领域。
背景技术
分布式文件系统的命名空间存储有文件系统目录树(directory tree),文件系统目录树包括多个具有层级结构的索引节点(inode),每个索引节点存储有一文件的元数据。由于在文件系统目录树上的操作往往会跨多个层级的多个索引节点,所以分布式文件系统的Namespace应具备事务属性,且事务之间需要满足串行化隔离(Serializable SnapshotIsolation,SSI)级别,保证文件系统目录树的可靠性。
以Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)为例,HDFS中的命名空间(Namenode)将所有元信息以特定的数据结构组织存放在单个设备的全内存中,在全内存的基础上采用全局锁(Reentrant Read Write Lock)保证读写一致性和隔离性。
上述基于全内存和全局锁的Namespace实现方法,Namespace事务处理逻辑依赖全局锁,这样抑制了Namespace读写的并发能力及系统的吞吐。
发明内容
本申请实施例提供了一种分布式文件系统的命名空间事务处理方法、装置、设备和可读存储介质,以提高命名空间的并发事务处理性能。
第一方面,本申请实施例提供了一种分布式文件系统的命名空间事务处理方法,包括:
获取用户对文件系统目录树的多个操作请求,所述文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点;
将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句;
按照多个所述操作请求的先后顺序,将每个所述操作请求转化为的操作语句依次添加到关联的每个所述索引节点的事务队列中;
从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应。
第二方面,本申请实施例提供了一种分布式文件系统的命名空间事务处理装置,包括:
获取模块,用于获取用户对文件系统目录树的多个操作请求,所述文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点;
转化模块,用于将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句;
添加模块,用于按照多个所述操作请求的先后顺序,将每个所述操作请求转化为的操作语句依次添加到关联的每个所述索引节点的事务队列中;
响应模块,用于从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应。
第三方面,本申请实施例提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行任一实施例所述的分布式文件系统的命名空间事务处理方法。
第四方面,本申请实施例提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行任一实施例项所述的分布式文件系统的命名空间事务处理方法。
根据本申请的技术摒弃了基于全内存和全局锁的命名空间实现方法,通过事务队列保证读写一致性及隔离属性,提高命名空间的并发事务处理性能。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1a是根据本申请实施例提供的第一种分布式文件系统的命名空间事务处理方法的流程示意图;
图1b是根据本申请实施例提供的文件系统目录树的结构示意图;
图2a是根据本申请实施例提供的第二种分布式文件系统的命名空间事务处理方法的流程示意图;
图2b是根据本申请实施例提供的对文件系统目录树进行操作后的结构示意图;
图3a是根据本申请实施例提供的第三种分布式文件系统的命名空间事务处理方法的流程示意图
图3b是根据本申请实施例提供的事务队列的示意图;
图4a是根据本申请实施例提供的第四种分布式文件系统的命名空间事务处理方法的流程示意图;
图4b是根据本申请实施例提供的命名空间事务处理的流程图;
图5是本申请实施例提供的一种分布式文件系统的命名空间事务处理装置的结构图;
图6是用来实现本申请实施例的分布式文件系统的命名空间事务处理方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请实施例中,图1a是根据本申请实施例提供的第一种分布式文件系统的命名空间事务处理方法的流程示意图,本实施例适用于分布式文件系统的命名空间事务处理的情况。其中,分布式文件系统的命名空间存储有文件系统目录树(directory tree),文件系统目录树包括多个具有层级结构的索引节点(inode),图1b是根据本申请实施例提供的文件系统目录树的结构示意图。该文件系统目录树包括一个根节点,4个索引节点,分别为索引节点a、索引节点b、索引节点c和索引节点d。每个索引节点存储有文件的元数据,如存储位置、读写与执行权限、创建者信息和创建时间等。
该方法可以由一种分布式文件系统的命名空间事务处理装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成于电子设备中,可选的,该电子设备可以是终端或服务器,也可以是与终端和服务器进行交互的中间设备。如图1a所示,本实施例提供的一种分布式文件系统的命名空间事务处理方法可以包括:
S110、获取用户对文件系统目录树的多个操作请求,文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点。
分布式文件系统包括多个客户端,用户可以从任一客户端发送对文件系统目录树的操作请求。命名空间从分布式文件系统的客户端接收用户对文件系统目录树的多个操作请求。
可选的,操作请求为符合可移植操作系统接口(Portable Operating SystemInterface of UNIX,POSIX)的操作请求,称为POSIX操作请求。遵守POSIX标准开发的程序在支持POSIX标准的操作系统间运行是不需要依靠类似虚拟机这种中间层的支持的,这就能够在不损失性能的前提下,带来强大的跨平台可移植能力。
本实施例中,POSIX操作请求包括但不限于读(read)、写(write)、创建(creat)、改写(rename)和复制(dup/dup2)等。
S120、将每个操作请求转化为与至少一个索引节点关联的操作语句。
本实施例中,有的操作请求只针对一个索引节点进行操作,即只关联一个索引节点,如读操作和写操作;有的操作请求对两个以上索引节点进行操作,即关联两个以上的索引节点,如改写操作和复制操作。基于此,根据每个操作请求关联的索引节点,将每个操作请求转化为操作语句,得到与至少一个索引节点关联的操作语句。其中,操作语句指针对文件系统目录树的索引节点的可执行语句,操作语句为文件系统目录树的存储载体能够识别的语句,如果文件系统目录树存储在内存中,操作语句为对内存可识别的操作语句;如果文件系统目录树存储在数据库中,操作语句为数据库操作语句。
示例性的,将rename操作请求转化为操作语句1,其中,操作语句1的参数包括源目录(srcdir)和目标目录(dstdir),操作语句1包括从源目录到目标目录的一系列操作的操作语句。
可选的,根据每个操作请求关联的索引节点,将每个操作请求拆分为与每个关联的索引节点对应的子操作请求;将与每个关联的索引节点对应的子操作请求转化为每个操作语句。
其中,根据文件系统目录树的层级结构确定操作请求关联的索引节点。如图1b所示,操作请求为:将索引节点c的位置进行rename得到/b/c/d,其关联的索引节点包括索引节点c和索引节点d。将该操作请求拆分为与索引节点c对应的子操作请求:将索引节点c的位置进行rename得到/b/c,以及与索引节点d对应的子操作请求:将索引节点d的位置进行rename得到/c/d。为了方便描述和区分,将操作请求拆分出的操作请求称为子操作请求。最后,将与索引节点c对应的子操作请求和与索引节点d对应的子操作转化为2个操作语句。
本实施例中,每个子操作请求分别关联一个索引节点,则对操作语句进行响应时,可以按照每个子操作请求转化为的操作语句对每个索引节点进行操作,从而将操作语句解耦,避免索引节点之间操作混乱。
操作语句需要赋予事务属性,来保证文件系统目录树的可靠性。可选的,操作语句具有原子属性,也就是,一操作语句包含的各项操作必须全部成功执行或者全部不执行。任何一项操作失败,将导致整个事务失败,其他已经执行的任务所作的数据操作都将被撤销,只有所有的操作全部成功,整个事务才算是成功完成。因此,即使操作语句添加到两个以上的事务队列中,不会出现两个操作语句死锁。
本实施例中,采用事务队列来保证操作语句的隔离性和一致性。
S130、按照多个操作请求的先后顺序,将每个操作请求转化为的操作语句依次添加到关联的每个索引节点的事务队列中。
获取每个操作语句的时间戳,得到多个操作语句的先后顺序;按照该先后顺序将操作语句依次添加到关联的每个索引节点的事务队列中,即事务队列的尾部。该事务队列满足先进先出规则。
本实施例为每个索引节点维护一个事务队列。示例性的,操作语句1在操作语句2之前,操作语句1关联索引节点a和索引节点b,操作语句2关联索引节点b和索引节点c,则将操作语句1添加到索引节点a的事务队列中,将操作语句1和操作语句2依次添加到索引节点b的事务队列中,将操作语句2添加到索引节点c的事务队列中。
S140、从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应。
按照先进先出的顺序,从每个索引节点的事务队列中依次读取操作语句。读取出的操作语句的数量为至少一个。如果读取出的事务队列的数量为
来源于不同的事务队列,之间实现并行读取。然后,根据读取出的操作语句,对文件系统目录树进行操作。
本实施例中,通过将操作请求转化为与索引节点关联的操作语句,并将操作语句添加到关联的索引节点的事务队列中,从而将用户的操作请求与索引节点相关联,并通过不同索引节点的事务队列保证了操作语句之间的隔离性;通过从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应,即在一个事务队列中,串行读取并响应操作语句,保证不同操作语句串行执行,具有读写一致性,达到串行化隔离级别。本实施例通过将操作请求转化为操作语句,并采用事务队列组织并调度操作语句,摒弃了基于全内存和全局锁的命名空间实现方法,通过事务队列保证读写一致性及隔离属性,提高命名空间的并发事务处理性能;无需锁定,缩短事务处理的时延。
本申请实施例中,图2a是根据本申请实施例提供的第二种分布式文件系统的命名空间事务处理方法的流程示意图,本实施例在上述实施例的基础上进一步优化。
可选的,将操作“将每个操作请求转化为与至少一个索引节点关联的操作语句”优化为“确定每个操作请求关联的索引节点在数据库中的存储记录;根据存储记录,将每个操作请求转化为与存储记录关联的数据库操作语句”,进一步的,将操作“对读取出的操作语句进行响应”优化为“将读取出的数据库操作语句发送至数据库,以供数据库通过执行数据库操作语句,对存储记录中的信息进行操作”,实现命名空间的高可扩展性。
图2a提供的分布式文件系统的命名空间事务处理方法包括以下步骤:
S210、获取用户对文件系统目录树的多个操作请求,文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点。
命名空间包括数据库,数据库可以是分布式数据库。由于采用事务队列保证事务属性,本实施例无需采用具有事务特性的数据库,如各种新的可扩展/高性能数据库(NewSQL),而采用不具有事务特征的数据库即可,如键值对(Key-value,KV)数据库。
具体的,将文件系统目录树按照工作台(Table)的方式存储在Mysql Cluster中。文件系统目录树中每个索引节点的信息分别存储在数据库的不同记录中。具体的,一个记录存储一个索引节点的信息,包括索引节点的标识、索引节点的父节点的标识和索引节点存储的文件的元数据。
可选的,记录的主键包括索引节点的标识字段和索引节点的父节点的标识字段,从而通过主键表达索引节点之间的层级关系。
可选的,文件系统目录树的数量为至少两个时,每个文件系统目录树中索引节点的信息分别存储在数据库的不同分片(partition)中。这样,保证同一个文件系统目录树的索引节点存储在同一个分片中,实现文件系统目录树之间的隔离。
S220、确定每个操作请求关联的索引节点在数据库中的存储记录。
根据文件系统目录树的层级结构确定操作请求关联的索引节点。可选的,获取操作请求关联的索引节点的标识,根据索引节点的标识查询数据库,得到该索引节点的标识存储在的记录,称为存储记录。根据上述描述,该存储记录还存储有该索引节点存储的文件的元数据和父节点的标识。
S230、根据存储记录,将每个操作请求转化为与存储记录关联的数据库操作语句。
由于操作请求包括至少一个子操作请求,则将每个子操作请求转化为数据库操作语句,即将每个子操作请求转化为对对应索引节点的存储记录进行操作的数据库操作语句。
接着上述示例,将与索引节点c对应的子操作请求转化为对索引节点c的存储记录进行操作的数据库操作语句。将与索引节点d对应的子操作请求转化为对索引节点d的存储记录进行操作的数据库操作语句。
基于上述描述,可以将每个操作请求转化为至少一条数据库操作语句,如果数据库操作语句的数量为两条以上,则对不同的存储记录进行操作,不会出现读写冲突。
S240、按照多个操作请求的先后顺序,将每个操作请求转化为的数据库操作语句依次添加到关联的每个索引节点的事务队列中。
S250、从每个索引节点的事务队列中依次读取数据库操作语句,并将数据库操作语句发送至数据库,以供数据库通过执行数据库操作语句,对存储记录中的信息进行操作。
接着上述示例,数据库通过执行数据库操作语句,将索引节点c的父节点的标识修改为b,将索引节点d的父节点的标识修改为c,从而成功执行了用户对文件系统目录树的操作请求:将索引节点c的位置进行rename得到/b/c/d,并保证了一致性,如图2b所示。
本实施例采用数据库的不同记录存储不同索引节点的信息,基于数据库自带的行的扩展性,保证了命名空间的高可扩展性,解决了现有技术中全内存的实现方法在扩展性上的先天不足;通过确定每个操作请求关联的索引节点在数据库中的存储记录,并根据存储记录,将每个操作请求转化为与存储记录关联的数据库操作语句,巧妙的实现了基于数据库的命名空间事务处理方法,而且不需要数据库具备事务特性。
本申请实施例中,图3a是根据本申请实施例提供的第三种分布式文件系统的命名空间事务处理方法的流程示意图,本实施例在上述实施例的基础上进一步优化。
可选的,将操作“从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应”优化为“从每个索引节点的事务队列中读取第一操作语句;对第一操作语句进行响应;在对第一操作语句响应结束后,从每个索引节点的事务队列中读取第一操作语句的后继操作语句,并将后继操作语句作为第一操作语句;返回执行对第一操作语句进行响应的操作,直到全部操作语句执行完毕”,提供一种对操作语句进行读取和响应的方法。
图3a提供的分布式文件系统的命名空间事务处理方法包括以下步骤:
S310、获取用户对文件系统目录树的多个操作请求,文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点。
S320、将每个操作请求转化为与至少一个索引节点关联的操作语句。
S330、按照多个操作请求的先后顺序,将每个操作请求转化为的操作语句依次添加到关联的每个索引节点的事务队列中。
本实施例中,事务队列为无锁(Lock Free)队列,即操作语句的出队和入队是无需加锁的,以最大限度提高事务处理性能。
S340、从每个索引节点的事务队列中读取第一操作语句。
为了方便描述和区分,将一次、并行读取出的操作语句称为第一操作语句,第一操作语句的数量为至少一个,两个以上的操作语句应关联不同的索引节点。
为了保证读取出的操作语句关联不同的索引节点,应对各事务队列的待出队操作语句进行选取。具体的,对全部事务队列中待出队的操作语句进行统计,得到不同操作语句的数量;如果不同操作语句的数量为两个以上,从待出队的操作语句中选取属于不同事务队列的操作语句,作为第一操作语句;读取第一操作语句。其中,待出队的操作语句是队首的操作语句。
图3b是根据本申请实施例提供的事务队列的示意图。文件系统目录树包括索引节点a、索引节点b、索引节点c和索引节点d。每个索引节点维护一事务队列。各事务队列中的操作语句如图3b所示。按照从上到下的顺序,待出队的操作语句包括操作语句1、操作语句1、操作语句1和操作语句2,统计到的不同的操作语句为操作语句1和操作语句2。从索引节点a的事务队列发现操作语句1和操作语句2属于同一事务队列,且操作语句1靠前,则将操作语句1作为第一操作语句,操作语句1执行完毕后,才会执行操作语句2。
S350、对第一操作语句进行响应。
首先将第一操作语句出队,再对第一操作语句进行响应。
S360、判断全部操作语句是否执行完毕,如果是,执行S380;如果否,执行S370。
S370、在对第一操作语句响应结束后,从每个索引节点的事务队列中读取第一操作语句的后继操作语句,并将后继操作语句作为第一操作语句。返回执行S350。
其中,第一操作语句的后继操作语句为排在第一操作语句之后的一操作语句。后继操作语句的数量为至少一个,两个以上的后继操作语句应关联不同的索引节点,并一次、并行读取。
与S340的读取过程类似,为了保证读取出的后继操作语句关联不同的索引节点,应对各事务队列的待出队操作语句进行选取。具体的,对全部事务队列中待出队的操作语句进行统计,得到不同操作语句的数量;如果不同操作语句的数量为两个以上,从待出队的操作语句中选取属于不同事务队列的操作语句,作为第一操作语句的后继操作语句;读取后继操作语句。
其中,待出队的操作语句是队首的操作语句。可选的,对第一操作语句响应结束后,自动唤醒第一操作语句所在的事务队列中的下一操作语句,作为待出队的操作语句;进一步的,还会唤醒第一操作语句不在的事务队列中队首的操作语句。
继续参考图3b,按照从上到下的顺序,在对操作语句1响应结束后,待出队的操作语句包括操作语句2、操作语句5、操作语句6和操作语句2,统计到的不同的操作语句为操作语句2、操作语句5和操作语句6。从索引节点b的事务队列发现操作语句5和操作语句6属于同一事务队列,且操作语句5靠前,则将操作语句2和操作语句5作为后继操作语句。并行读取操作语句2和操作语句5,并行对操作语句2和操作语句5进行响应。
S380、结束本次操作。
本实施例中,通过对读取出的第一操作语句响应结束后,再读取第一操作语句的后继操作语句并进行响应,直到全部操作语句执行完毕,保证操作语句处理完毕后,再执行后继操作语句,保证事务的原子性。
进一步的,通过读取并响应属于不同事务队列的操作语句,保证隔离性的同时,提高命名空间事务处理速率。
本申请实施例中,图4a是根据本申请实施例提供的第四种分布式文件系统的命名空间事务处理方法的流程示意图,本实施例在上述实施例的基础上进一步优化。
可选的,将操作“从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应”优化为“从线程池中唤醒多个线程,并通过多个线程从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应”,提高响应效率。
图4a提供的分布式文件系统的命名空间事务处理方法包括以下步骤:
S410、获取用户对文件系统目录树的多个操作请求,文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点。
S420、将每个操作请求转化为与至少一个索引节点关联的操作语句。
S430、按照多个操作请求的先后顺序,将每个操作请求转化为的操作语句依次添加到关联的每个索引节点的事务队列中。
S440、从线程池中唤醒多个线程,并通过多个线程从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应。
在事务队列后设置一线程池(Thread Pool),当读取操作语句时,从线程池中唤醒多个线程,多个线程分别从每个索引节点的事务队列中读取操作语句,并对读取出的操作语句进行响应;然后,该多个线程返回线程池,待对操作语句响应完毕后,重新从线程池中唤醒多个线程,读取并响应后继操作语句。
在一应用场景中,图4b是根据本申请实施例提供的命名空间事务处理的流程图。命名空间包括多个事务队列、线程池和线程池后的数据库。从线程池中唤醒多个线程,多个线程从每个索引节点的事务队列中读取操作语句,对于不同的操作语句采用不同线程进行读取,例如图4b中对操作语句1和操作语句2分别采用不同线程读取。确定读取出的操作语句关联的索引节点在数据库中的存储记录;根据存储记录,将读取出的操作语句转化为数据库操作语句;将数据库操作语句发送至数据库,然后,该多个线程返回线程池,待数据库对存储记录中的信息操作完毕后,重新从线程池中唤醒多个线程,读取并响应后继操作语句。
值得说明的是,当命名空间分布在多个设备上时,用户的操作请求需要先经过Raft服务器,采用一致性算法对操作请求进行一致性处理,执行保证每个设备上的命名空间接收到的操作请求是一致的。
本实施例,通过线程池对操作语句进行批量读取和响应,提高整体系统吞吐。
本申请实施例中,图5是本申请实施例提供的一种分布式文件系统的命名空间事务处理装置的结构图,本申请实施例适用于分布式文件系统的命名空间事务处理的情况,该装置采用软件和/或硬件实现,并具体配置于具备一定数据运算能力的电子设备中。
如图5所示的一种分布式文件系统的命名空间事务处理装置500,包括:获取模块501、转化模块502、添加模块503和响应模块504;其中,
获取模块501,用于获取用户对文件系统目录树的多个操作请求,文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点;
转化模块502,用于将每个操作请求转化为与至少一个索引节点关联的操作语句;
添加模块503,用于按照多个操作请求的先后顺序,将每个操作请求转化为的操作语句依次添加到关联的每个索引节点的事务队列中;
响应模块504,用于从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应。
本实施例中,通过将操作请求转化为与索引节点关联的操作语句,并将操作语句添加到关联的索引节点的事务队列中,从而将用户的操作请求与索引节点相关联,并通过不同索引节点的事务队列保证了操作语句之间的隔离性;通过从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应,即在一个事务队列中,串行读取并响应操作语句,保证不同操作语句串行执行,具有读写一致性,达到串行化隔离级别。本实施例通过将操作请求转化为操作语句,并采用事务队列组织并调度操作语句,摒弃了基于全内存和全局锁的命名空间实现方法,通过事务队列保证读写一致性及隔离属性,提高命名空间的并发事务处理性能;无需锁定,缩短事务处理的时延。
可选的,命名空间包括数据库,文件系统目录树中每个索引节点的信息分别存储在数据库的不同记录中;转化模块502具体用于:确定每个操作请求关联的索引节点在数据库中的存储记录;根据存储记录,将每个操作请求转化为与存储记录关联的数据库操作语句;响应模块504,具体用于从每个索引节点的事务队列中依次读取操作语句,并将读取出的数据库操作语句发送至数据库,以供数据库通过执行数据库操作语句,对存储记录中的信息进行操作。
可选的,记录的主键包括索引节点的标识字段和索引节点的父节点的标识字段。
可选的,文件系统目录树的数量为至少两个,每个文件系统目录树中索引节点的信息分别存储在数据库的不同分片中。
可选的,转化模块502具体用于:根据每个操作请求关联的索引节点,将每个操作请求拆分为与每个关联的索引节点对应的子操作请求;将与每个关联的索引节点对应的子操作请求转化为操作语句。
可选的,响应模块504包括第一读取单元、响应单元、第二读取单元和返回单元。其中,第一读取单元用于从每个索引节点的事务队列中读取第一操作语句;响应单元用于对第一操作语句进行响应;第二读取单元用于在对第一操作语句响应结束后,从每个索引节点的事务队列中读取第一操作语句的后继操作语句,并将后继操作语句作为第一操作语句;返回单元用于返回执行对第一操作语句进行响应的操作,直到全部操作语句执行完毕。
可选的,第一读取单元具体用于:对全部事务队列中待出队的操作语句进行统计,得到不同操作语句的数量;如果不同操作语句的数量为两个以上,从待出队的操作语句中选取属于不同事务队列的操作语句,作为第一操作语句;读取第一操作语句。
可选的,响应模块504具体用于:从线程池中唤醒多个线程,并通过多个线程从每个索引节点的事务队列中依次读取操作语句,并对读取出的操作语句进行响应。
可选的,事务队列为无锁队列。
本实施例可执行上述任一实施例提供的分布式文件系统的命名空间事务处理方法,并具体对应的技术效果。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图6所示,是根据本申请实施例的分布式文件系统的命名空间事务处理的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的终端设备,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。
存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的分布式文件系统的命名空间事务处理的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的分布式文件系统的命名空间事务处理的方法。
存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的分布式文件系统的命名空间事务处理的方法对应的程序指令/模块(例如,附图5所示的获取模块501、转化模块502、添加模块503和响应模块504)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的分布式文件系统的命名空间事务处理的方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据分布式文件系统的命名空间事务处理的电子设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至分布式文件系统的命名空间事务处理的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
分布式文件系统的命名空间事务处理的方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。
输入装置603可接收输入的数字或字符信息,以及产生与分布式文件系统的命名空间事务处理的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (10)

1.一种分布式文件系统的命名空间事务处理方法,其特征在于,包括:
获取用户对文件系统目录树的多个操作请求,所述文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点;
将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句;
按照多个所述操作请求的先后顺序,将每个所述操作请求转化为的操作语句依次添加到关联的每个所述索引节点的事务队列中;
从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应,包括:
对全部所述事务队列中待出队的操作语句进行统计,得到不同操作语句的数量;如果不同操作语句的数量为两个以上,从所述待出队的操作语句中选取属于不同事务队列的操作语句,作为第一操作语句;读取所述第一操作语句;
对所述第一操作语句进行响应;
在对所述第一操作语句响应结束后,从每个所述索引节点的事务队列中读取所述第一操作语句的后继操作语句,并将所述后继操作语句作为所述第一操作语句;
返回执行对所述第一操作语句进行响应的操作,直到全部操作语句执行完毕。
2.根据权利要求1所述的方法,其特征在于,所述命名空间包括数据库,所述文件系统目录树中每个索引节点的信息分别存储在所述数据库的不同记录中;
所述将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句,包括:
确定每个所述操作请求关联的索引节点在所述数据库中的存储记录;
根据所述存储记录,将每个所述操作请求转化为与所述存储记录关联的数据库操作语句;
所述对读取出的操作语句进行响应,包括:
将读取出的所述数据库操作语句发送至所述数据库,以供所述数据库通过执行所述数据库操作语句,对所述存储记录中的信息进行操作。
3.根据权利要求2所述的方法,其特征在于,所述记录的主键包括索引节点的标识字段和所述索引节点的父节点的标识字段。
4.根据权利要求2所述的方法,其特征在于,所述文件系统目录树的数量为至少两个,每个所述文件系统目录树中索引节点的信息分别存储在所述数据库的不同分片中。
5.根据权利要求1所述的方法,其特征在于,所述将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句,包括:
根据每个所述操作请求关联的索引节点,将每个所述操作请求拆分为与每个关联的索引节点对应的子操作请求;
将与每个关联的索引节点对应的子操作请求转化为操作语句。
6.根据权利要求1所述的方法,其特征在于,所述从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应,包括:
从线程池中唤醒多个线程,并通过所述多个线程从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述事务队列为无锁队列。
8.一种分布式文件系统的命名空间事务处理装置,其特征在于,包括:
获取模块,用于获取用户对文件系统目录树的多个操作请求,所述文件系统目录树存储在分布式文件系统的命名空间中,包括多个索引节点;
转化模块,用于将每个所述操作请求转化为与至少一个所述索引节点关联的操作语句;
添加模块,用于按照多个所述操作请求的先后顺序,将每个所述操作请求转化为的操作语句依次添加到关联的每个所述索引节点的事务队列中;
响应模块,用于从每个所述索引节点的事务队列中依次读取所述操作语句,并对读取出的操作语句进行响应;
所述响应模块包括第一读取单元、响应单元、第二读取单元和返回单元;
所述第一读取单元,用于对全部所述事务队列中待出队的操作语句进行统计,得到不同操作语句的数量;如果不同操作语句的数量为两个以上,从所述待出队的操作语句中选取属于不同事务队列的操作语句,作为第一操作语句;读取所述第一操作语句;
所述响应单元,用于对所述第一操作语句进行响应;
所述第二读取单元,用于在对所述第一操作语句响应结束后,从每个所述索引节点的事务队列中读取所述第一操作语句的后继操作语句,并将所述后继操作语句作为所述第一操作语句;
所述返回单元,用于返回执行对所述第一操作语句进行响应的操作,直到全部操作语句执行完毕。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的分布式文件系统的命名空间事务处理方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的分布式文件系统的命名空间事务处理方法。
CN202010238634.6A 2020-03-30 2020-03-30 分布式文件系统的命名空间事务处理方法和装置 Active CN111459882B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010238634.6A CN111459882B (zh) 2020-03-30 2020-03-30 分布式文件系统的命名空间事务处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010238634.6A CN111459882B (zh) 2020-03-30 2020-03-30 分布式文件系统的命名空间事务处理方法和装置

Publications (2)

Publication Number Publication Date
CN111459882A CN111459882A (zh) 2020-07-28
CN111459882B true CN111459882B (zh) 2023-08-29

Family

ID=71680122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010238634.6A Active CN111459882B (zh) 2020-03-30 2020-03-30 分布式文件系统的命名空间事务处理方法和装置

Country Status (1)

Country Link
CN (1) CN111459882B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380184B (zh) * 2020-11-20 2024-06-28 北京百度网讯科技有限公司 事务处理方法、装置、电子设备及可读存储介质
CN117573730B (zh) * 2024-01-16 2024-04-05 腾讯科技(深圳)有限公司 数据处理方法、装置、设备、可读存储介质及程序产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103020315A (zh) * 2013-01-10 2013-04-03 中国人民解放军国防科学技术大学 一种基于主从分布式文件系统的海量小文件存储方法
CN103294786A (zh) * 2013-05-17 2013-09-11 华中科技大学 一种分布式文件系统的元数据组织管理方法和系统
CN105868398A (zh) * 2016-04-20 2016-08-17 国网福建省电力有限公司 一种基于Fat-B树的分布式文件系统低开销数据传输方法
CN106570113A (zh) * 2016-10-25 2017-04-19 中国电力科学研究院 一种海量矢量切片数据云存储方法及系统
US9934147B1 (en) * 2015-06-26 2018-04-03 Emc Corporation Content-aware storage tiering techniques within a job scheduling system
CN109144413A (zh) * 2018-07-27 2019-01-04 郑州云海信息技术有限公司 一种元数据管理方法及装置
CN109165258A (zh) * 2018-08-14 2019-01-08 郑州云海信息技术有限公司 一种数据同步方法与装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495381B2 (en) * 2005-01-12 2016-11-15 Wandisco, Inc. Geographically-distributed file system using coordinated namespace replication over a wide area network
US9720992B2 (en) * 2013-11-22 2017-08-01 Sap Se DML replication with logical log shipping

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103020315A (zh) * 2013-01-10 2013-04-03 中国人民解放军国防科学技术大学 一种基于主从分布式文件系统的海量小文件存储方法
CN103294786A (zh) * 2013-05-17 2013-09-11 华中科技大学 一种分布式文件系统的元数据组织管理方法和系统
US9934147B1 (en) * 2015-06-26 2018-04-03 Emc Corporation Content-aware storage tiering techniques within a job scheduling system
CN105868398A (zh) * 2016-04-20 2016-08-17 国网福建省电力有限公司 一种基于Fat-B树的分布式文件系统低开销数据传输方法
CN106570113A (zh) * 2016-10-25 2017-04-19 中国电力科学研究院 一种海量矢量切片数据云存储方法及系统
CN109144413A (zh) * 2018-07-27 2019-01-04 郑州云海信息技术有限公司 一种元数据管理方法及装置
CN109165258A (zh) * 2018-08-14 2019-01-08 郑州云海信息技术有限公司 一种数据同步方法与装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于PRO*C的开发研究及其在网络监测系统的应用;张英, 冯豫华, 朱京华, 占传杰;计算机与现代化(第07期);全文 *

Also Published As

Publication number Publication date
CN111459882A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
US20130227194A1 (en) Active non-volatile memory post-processing
US10176205B2 (en) Using parallel insert sub-ranges to insert into a column store
CN111241108B (zh) 基于键值对kv系统的索引方法、装置、电子设备和介质
US11907260B2 (en) Compare processing using replication log-injected compare records in a replication environment
CN111258957B (zh) 分布式文件系统目录更新方法、装置、设备和介质
CN111459882B (zh) 分布式文件系统的命名空间事务处理方法和装置
JP7397928B2 (ja) 分散データベースのグローバルセカンダリインデックス方法及びその装置
EP3825865A2 (en) Method and apparatus for processing data
US20160210228A1 (en) Asynchronous garbage collection in a distributed database system
CN111488492A (zh) 用于检索图数据库的方法和装置
CN110781159B (zh) Ceph目录文件信息读取方法、装置、服务器及存储介质
CN111290714B (zh) 数据读取方法和装置
CN116431590A (zh) 一种数据处理的方法及相关设备
Marcu et al. Virtual log-structured storage for high-performance streaming
US10776344B2 (en) Index management in a multi-process environment
Lawson et al. EMPRESS: Accelerating Scientific Discovery through Descriptive Metadata Management
US10282243B2 (en) Performance enhancement for platform data dump collection
CN112799585A (zh) 数据处理方法、装置、电子设备及可读存储介质
US20210288938A1 (en) Network Data Processing Method, Apparatus, Electronic Device, and Storage Medium
CN111159218B (zh) 数据处理方法、装置及可读存储介质
US20240045857A1 (en) Increasing oltp throughput by improving the performance of logging using persistent memory storage
US20240045613A1 (en) Increasing oltp throughput by improving the performance of logging using persistent memory storage
US20240045591A1 (en) Increasing oltp throughput by improving the performance of logging using persistent memory storage
Bortnikov Open-source grid technologies for web-scale computing
CN118245044A (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