CN116266101A - 一种分布式对象存储系统处理方法及装置、存储介质 - Google Patents
一种分布式对象存储系统处理方法及装置、存储介质 Download PDFInfo
- Publication number
- CN116266101A CN116266101A CN202111553500.4A CN202111553500A CN116266101A CN 116266101 A CN116266101 A CN 116266101A CN 202111553500 A CN202111553500 A CN 202111553500A CN 116266101 A CN116266101 A CN 116266101A
- Authority
- CN
- China
- Prior art keywords
- target task
- request
- task
- object storage
- storage system
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 115
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims abstract description 85
- 230000004044 response Effects 0.000 claims description 14
- 238000005304 joining Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 101100121776 Arabidopsis thaliana GIG1 gene Proteins 0.000 description 1
- 101100267551 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) YME1 gene Proteins 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000000977 initiatory effect Effects 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
- 230000007958 sleep Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000007723 transport mechanism 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种分布式对象存储系统处理方法及装置、存储介质。所述分布式对象存储系统处理方法应用于分布式对象存储系统,包括:工作线程从调度队列中取出目标任务,当成功获取归置组锁,且存在任务处于等待状态或者存在与所述目标任务冲突的请求未执行完毕时,则所述目标任务进入等待状态,释放获取的所述归置组锁;当成功获取归置组锁,且无任务处于等待状态,且不存在与所述目标任务冲突的请求处于执行过程中时,则执行所述目标任务,执行所述目标任务完毕后释放获取的所述归置组锁。本实施例提供的方案,可以实现同步执行不冲突的请求,允许多个工作线程同时读取一个归置组内的对象,提高并发效率。
Description
技术领域
本文涉及计算机技术,尤指一种分布式对象存储系统处理方法及装置、存储介质。
背景技术
在分布式对象存储系统中,可用的操作如下:
(1)读取一个对象
(2)写入一个对象(包括创建、更新)
(3)删除一个对象
(4)重命名一个对象
(5)复制一个对象
(6)列出所有对象
由于对象的数量很多,以对象为粒度进行管理很不方便,于是计算出对象名称的哈希(hash)值,将对象按照hash值进行分组管理,这里把hash值相同的一类对象的集合称之为一个归置组(Placement Group,PG)。
每个调度队列都配备了多个工作(worker)线程,用来从调度队列取出任务进行处理。如果调度队列有M个,每个队列有N个worker线程,那么在任务互不排斥且数量充足的情况下,能够同时处理M*N个任务。
为了保证数据一致性,同一时间一个PG只允许一个线程来操作。当多个线程需要操作相同的PG时,那么只有一个线程能进行,其他的线程必须等待。这里使用了归置组锁(PG lock)来实现这一点,最早获得PG lock的线程才能开始执行,线程执行完任务后要释放PG lock,供后续的线程继续征用。如图2所示,worker线程1从调度队列中取出一个任务,尝试获取PG lock,获取成功后,处理任务,处理完毕后,释放PG lock;worker线程2从调度队列中取出一个任务,尝试获取PG lock,获取失败则worker线程2休眠,在worker线程1释放PG lock后,worker线程2被唤醒,worker线程2重新尝试获取PG lock,获取成功后,处理任务,处理完毕后,释放PG lock。这种实现方式的效率较低。
发明内容
本申请实施例提供了一种分布式对象存储系统处理方法及装置、存储介质,可以提高处理效率。
本公开实施例提供了一种分布式对象存储系统处理方法,应用于分布式对象存储系统,所述分布式对象存储系统包括至少一个对象存储进程,所述对象存储进程承载至少一个归置组,所述对象存储进程包括至少一个调度进程,所述调度进程管理至少一个调度队列,所述调度队列包括至少一个任务,所述调度队列对应至少一个工作线程,所述分布式对象存储系统处理方法包括:
工作线程从调度队列中取出目标任务,获取归置组锁;
当成功获取归置组锁,且存在任务处于等待状态或者存在与所述目标任务冲突的请求未执行完毕时,则所述目标任务进入等待状态,释放获取的所述归置组锁;
当成功获取归置组锁,且无任务处于等待状态,且不存在与所述目标任务冲突的请求处于执行过程中时,则执行所述目标任务,执行所述目标任务完毕后释放获取的所述归置组锁。
在一示例性实施例中,所述方法还包括,当未成功获取归置组锁时,所述目标任务进入等待状态;
以及,所述目标任务执行完毕且该目标任务为所属的请求的最后阶段,且不存在与所述目标任务对应的请求类型相同的请求处于执行过程中时,将处于等待状态的任务重新加入所述调度队列。
在一示例性实施例中,所述方法还包括:所述归置组对应引用表,所述引用表中包含请求类型和请求类型对应的引用计数;所述引用表用于记录未执行完毕的请求;
根据所述引用表中的请求类型和引用计数判断是否存在与所述目标任务冲突的请求处于执行过程中或者是否存在与所述目标任务对应的请求类型相同的请求处于执行过程中。
在一示例性实施例中,所述方法还包括,执行所述目标任务完毕后,当所述目标任务是所属的请求的第一阶段时,将所述目标任务涉及的归置组对应的引用表中所述目标任务对应的请求类型的引用计数增加一次;当所述目标任务是所属的请求的最后一个阶段时,将所述引用表中所述目标任务对应的请求类型的引用计数减少一次;
所述引用表中,目标任务对应的请求类型的引用计数为0次时,确定不存在与目标任务对应的请求类型相同的请求处于执行过程中。
在一示例性实施例中,所述引用表中,与所述目标任务冲突的请求类型的引用计数大于0次时,确定存在与所述目标任务冲突的请求未执行完毕;
所述引用表中,与所述目标任务冲突的请求类型的引用计数为0次时,确定不存在与目标任务冲突的请求处于执行过程中。
在一示例性实施例中,所述请求类型包括:读对象、写对象、删除对象、重命名对象、复制对象和列举对象;或者,所述请求类型包括读类型和写类型,所述读类型对应读对象操作和列举对象操作,所述写类型对应写对象操作、删除对象操作、重命名对象操作和复制对象操作。
在一示例性实施例中,所述方法还包括:所述归置组对应等待队列;
所述目标任务进入等待状态包括:将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列;
所述将处于等待状态的任务重新加入所述调度队列包括:将所述等待队列的任务加入到所述调度队列。
在一示例性实施例中,一个归置组对应一个等待队列;
将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列包括:
将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列的尾部;
将所述等待队列的任务加入到所述调度队列包括:将所述等待队列的任务从尾部开始依次加入到所述调度队列的首部。
在一示例性实施例中,所述归置组承载在一个主对象存储进程和至少一个从对象存储进程中,所述方法还包括:所述主对象存储进程接收客户端的读取对象请求,其中,所述读取对象请求包括如下四个阶段的任务:
第一阶段:主对象存储进程根据读取对象请求生成子请求,分发所述子请求至所述主对象存储进程和从对象存储进程;
第二阶段,从对象存储进程向存储设备发送读事务;
第三阶段,从对象存储进程接收存储设备返回的信息,返回应答至主对象存储进程;
第四阶段,主对象存储进程根据针对所述子请求的应答,返回应答至所述客户端;
所述工作线程执行所述第二阶段任务之后,执行所述第三阶段任务之前,可执行其他任务。
本公开实施例提供一种分布式对象存储系统处理装置,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现上述任一实施例所述的分布式对象存储系统处理方法。
本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的分布式对象存储系统处理方法。
与相关技术相比,本申请实施例包括一种分布式对象存储系统处理方法及装置、存储介质。所述分布式对象存储系统处理方法应用于分布式对象存储系统,所述分布式对象存储系统包括至少一个对象存储进程,所述对象存储进程承载至少一个归置组,所述对象存储进程包括至少一个调度进程,所述调度进程管理至少一个调度队列,所述调度队列包括至少一个任务,所述调度队列对应至少一个工作线程,所述分布式对象存储系统处理方法包括:工作线程从调度队列中取出目标任务,当成功获取归置组锁,且存在任务处于等待状态或者存在与所述目标任务冲突的请求未执行完毕时,则所述目标任务进入等待状态,释放获取的所述归置组锁;当成功获取归置组锁,且无任务处于等待状态,且不存在与所述目标任务冲突的请求处于执行过程中时,则执行所述目标任务,执行所述目标任务完毕后释放获取的所述归置组锁。本实施例提供的方案,在不存在与目标任务冲突的请求处于执行过程中时,可以执行该目标任务,因此,可以实现同步执行不冲突的请求,允许多个工作线程同时读取一个归置组内的对象,提高并发效率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为一技术方案提供的OSD处理示意图;
图2为一技术方案提供的工作线程处理示意图;
图3为一技术方案提供的主OSD和从OSD示意图;
图4为一技术方案提供的读盘请求示意图;
图5为本公开实施例提供的分布式对象存储系统处理方法流程图;
图6为一示例性实施例提供的分布式对象存储系统处理方法流程图;
图7为本公开实施例提供的分布式对象存储系统处理装置框图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
一个客户端请求,可能要分成好几个阶段来处理,不同阶段可能是在不同的线程中,甚至是不同的OSD中完成的。因此worker线程处理的任务,只是某个请求其中一个阶段的流程,不代表这个请求的完整流程。但是请求的第一阶段和最后阶段,必定是由worker线程处理的,请求的其他阶段可能由worker线程外的其他线程处理。
为了保障数据冗余性,每个PG都要生成一定数量的副本(副本策略)或分片(纠删策略),交给不同的OSD进行保存,每个PG对应一组OSD,该组OSD按一定规则排序,将第一个OSD称为主OSD,其他OSD称为从OSD。其中,主从OSD是相对于一个PG而言的,对于其他的PG,OSD的主从关系可能发生变化。
在副本策略中,主OSD和从OSD保存的内容是相同的。在纠删策略中,主OSD和从OSD保存的是不同内容,需要把它们各自的内容拼凑起来,才是完整的内容。
举例说明纠删策略,比如一个32K的对象,以4K为单位进行分割,用4个OSD保存该对象的有效数据,数据分布如下表1所示,数据所处的地址范围决定了它由哪个OSD保存。
表1 OSD数据分布
OSD1 | OSD2 | OSD3 | OSD4 |
0~4K | 4~8K | 8~12K | 12~16K |
16~20K | 20~24K | 24~28K | 28~32K |
下面以纠删策略和“读取对象”请求为例,说明请求处理的各个阶段:
(1)准备阶段:这一阶段主OSD基于客户端请求,为自己和从OSD分别生成子请求,派发给这些OSD同时处理。如图3所示。
(2)实施阶段:这一阶段从OSD会收到来自主OSD的子请求,然后根据要求,从自己的存储设备读取对象信息,封装成报文,应答给主OSD。
(3)响应阶段:这一阶段主OSD会收到来自某个从OSD的应答,此时主OSD检查是否全部的子请求都完成了。仅当子请求全部完成时,才会整合现有信息对客户端进行应答,这样客户端请求就算是真正执行完毕。如果还有子请求未完成,worker线程就什么也不做,遵循常规流程,释放PG lock,继续从调度队列取出任务执行。如图4所示。
上述流程存在如下问题:
第一个问题是,从OSD在做一些读操作时(比如从存储设备读取对象信息,或是列举全部对象),采用的是同步形式,即存储设备返回结果前,当前worker线程会保持阻塞,无法继续处理其他任务。
第二个问题是,从OSD执行读操作时,处于PG lock上下文中,这就使得PG lock长时间无法释放。此时如果有另一个worker线程需要获取相同的PG lock,那么这个worker线程会受到牵连也变成阻塞状态,影响并发效率。
本公开实施例提供一种分布式对象存储系统处理方法,可以同步执行不冲突的操作,从而提高并发效率。
图5为本公开实施例提供的一种分布式对象存储系统处理方法流程图。如图5所示,本实施例提供一种分布式对象存储系统的处理方法,应用于分布式对象存储系统,所述分布式对象存储系统包括至少一个对象存储进程,所述对象存储进程承载至少一个归置组,所述对象存储进程包括至少一个调度进程,所述调度进程管理至少一个调度队列,所述调度队列包括至少一个任务,所述调度队列对应至少一个工作线程,所述分布式对象存储系统处理方法包括:
步骤501,工作线程从调度队列中取出目标任务,获取归置组锁;
即从调度队列中取出一个任务,将取出的任务称为目标任务;
步骤502,当成功获取归置组锁,且存在任务处于等待状态或者存在与所述目标任务冲突的请求未执行完毕时,所述目标任务进入等待状态,释放所述归置组锁;以及,
当成功获取归置组锁,且无任务处于等待状态,且不存在与所述目标任务冲突的请求处于执行过程中时,则执行所述目标任务,执行所述目标任务完毕后释放获取的所述归置组锁。
本实施例提供的方案,可以同步执行不冲突的请求,允许多个工作线程同时读取一个归置组内的对象,提高并发效率。
在一示例性实施例中,所述方法还包括,当未成功获取归置组锁时,所述目标任务进入等待状态;
以及,所述目标任务执行完毕且该目标任务为所属的请求的最后阶段,且不存在与所述目标任务对应的请求类型相同的请求处于执行过程中时,将处于等待状态的任务重新加入所述调度队列。
在一示例性实施例中,可以使用引用表来记录正在执行执行的请求,即,所述方法还包括:所述归置组对应引用表,所述引用表中包含请求类型和请求类型对应的引用计数;所述引用表用于记录未执行完毕的请求;
根据所述引用表中的请求类型和引用计数判断是否存在与所述目标任务冲突的请求处于执行过程中或者是否存在与所述目标任务对应的请求类型相同的请求处于执行过程中。
在一示例性实施例中,所述方法还包括,执行所述目标任务完毕后,当所述目标任务是所属的请求的第一阶段时,将所述目标任务涉及的归置组对应的引用表中所述目标任务对应的请求类型的引用计数增加一次;当所述目标任务是所属的请求的最后一个阶段时,将所述引用表中所述目标任务对应的请求类型的引用计数减少一次;
所述引用表中,目标任务对应的请求类型的引用计数为0次时,确定不存在与目标任务对应的请求类型相同的请求处于执行过程中。比如,目标任务为读对象,而引用表中读类型的请求类型的引用计数为0次,则不存在与目标任务对应的请求类型相同的请求处于执行过程中。
在一示例性实施例中,所述引用表中,与所述目标任务冲突的请求类型的引用计数大于0次时,确定存在与所述目标任务冲突的请求未执行完毕;比如,当前为读对象,而引用表中写类型(写对象、删除对象、重命命对象、复制对象)的请求类型的引用计数大于0次,则存在与目标任务冲突的请求未执行完毕;
所述引用表中,与所述目标任务冲突的请求类型的引用计数为0次时,确定不存在与目标任务冲突的请求处于执行过程中。
本实施例提供的方案,通过引用表记录处于执行过程中的请求,避免出现冲突操作,从而使得多个worker线程可以同时读取一个PG内的对象。
在一示例性实施例中,所述请求类型可以包括:读对象、写对象、删除对象、重命名对象、复制对象和列举对象;或者,所述请求类型可以包括读类型和写类型,所述读类型对应读对象操作和列举对象操作,所述写类型对应写对象操作、删除对象操作、重命名对象操作和复制对象操作。在另一示例性实施例中,所述请求类型可以包括:读对象、写对象、列举对象、变更对象,其中,所述变更对象可以对应删除对象操作、重命名对象操作和复制对象操作。即引用表中可以记录每种操作的引用计数,也可以将操作按是否冲突分类为两种或更多种。其中,读对象操作与写对象、变更对象操作存在冲突,列举对象操作与变更对象操作存在冲突。
在一示例性实施例中,所述方法还包括,将处于等待状态的任务重新加入所述调度队列后,保持任务之间的执行顺序与任务未被从调度队列中取出时的执行顺序一致。即任务初始加入到调度队列的顺序,与任务进入等待状态后重新加入调度队列后的彼此之间的执行顺序不变,可以防止存在先后顺序的请求的执行出错。
在一示例性实施中,所述方法还包括:所述归置组对应等待队列;
所述目标任务进入等待状态包括:将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列;
所述将处于等待状态的任务重新加入所述调度队列包括:将所述等待队列的任务加入到所述调度队列。
本实施例提供的方案,提供等待队列来记录进入等待状态的任务。其中,可以为一个归置组提供一个等待队列,同一归置组处于等待状态的任务加入该等待队列,或者,为一个归置组提供多个等待队列,可以根据引用表中的请求类型提供相应数量的等待队列,比如,引用表中包括读类型和写类型,则为读类型设置一个等待队列,为写类型设置一个等待队列。将等待队列的任务加入到调度队列可以是:将与目标任务对应的请求类型的等待队列的任务加入到调度队列。比如,读类型的引用计数归0,将读类型的等待队列的任务加入到调度队列中,写类型的等待队列的任务可以暂时不加入到调度队列中,后续在写类型的引用计数归0时,将写类型的等待队列的任务加入到调度队列中。
在一示例性实施例中,一个归置组可以对应一个等待队列;将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列包括:
将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列的尾部;
将所述等待队列的任务加入到所述调度队列包括:将所述等待队列的任务从尾部开始依次加入到所述调度队列的首部。本实施例提供的方案,提供一个等待队列,且可以通过从等待队列的尾部取出任务加入到调度队列首部保持任务的执行顺序不变。
在一示例性实施例中,所述调度队列可以对应多个工作线程。即一个调度队列对应多个工作线程,本实施例提供的方案,使用多个工作线程,使得一个调度队列的压力能被多个工作线程分担。
在一示例性实施例中,所述归置组承载在一个主对象存储进程和至少一个从对象存储进程中,所述方法还包括:所述主对象存储进程接收客户端的读取对象请求,其中,所述读取对象请求包括如下四个阶段的任务:
第一阶段:主对象存储进程根据读取对象请求生成子请求,分发所述子请求至所述主对象存储进程和从对象存储进程;
第二阶段,从对象存储进程向存储设备发送读事务;
第三阶段,从对象存储进程接收存储设备返回的信息,返回应答至主对象存储进程;
第四阶段,主对象存储进程根据针对所述子请求的应答,返回应答至客户端;
所述工作线程执行所述第二阶段任务之后,执行所述第三阶段任务之前,可执行其他任务。
本实施例提供的方案,将读盘操作改为异步模式,使得worker线程在底层响应前,可以执行其他的任务,提高系统利用率。此处仅为示例,可以将其他耗时操作改为异步模式,提高系统利用率。
下面通过一个具体示例对本公开实施例的技术方案作进一步说明。
本实施例中,为每个PG设置一个引用表和一个等待队列。引用表的一个示例如下表2所示,它记录了当前正在操作PG的请求类型(即表中的操作类型)和请求个数(即表中的引用数,或称引用计数)。
表2引用表
操作类型 | 引用数 |
读对象 | 3 |
写对象 | 0 |
删除对象 | 0 |
重命名对象 | 0 |
复制对象 | 0 |
列举对象 | 2 |
图6为本实施例提供的分布式对象存储系统处理方法的流程图。如图6所示,本实施例提供的分布式对象存储系统处理方法包括:
步骤601,worker线程从调度队列的首部取出一个任务,称为目标任务;
步骤602,worker线程为所取出的目标任务尝试获取PG lock,获取PG lock成功,执行步骤603,获取PG lock失败,则执行步骤614;
步骤603,worker线程在获取到PG lock后,检查该目标任务涉及的PG对应的等待队列是否为空,如果为空则执行步骤604;如果不为空,等待队列非空说明有任务不满足处理条件而阻塞,为了确保处理顺序,并且避免饥饿问题,执行步骤605;
步骤604,判断目标任务涉及的PG对应的引用表是否存在与目标任务冲突的操作,如果存在,执行步骤605,如果不存在,执行步骤606;
其中,根据引用表检查是否存在与目标任务冲突的操作,即检查引用表中冲突操作的引用数是否大于0。比如目标任务是写类型(写对象、删除对象、复制对象、重命名对象之一),检查表2,发现读操作的引用数为3,大于0,而读操作与写类型的操作是互斥的,则将目标任务加入到该目标任务涉及的PG对应的等待队列中,然后释放PG lock。如果目标任务是读类型的(读对象、列举对象之一),由于当前没有写类型的操作在引用PG,即写类型的操作的引用数为0(表2中,写对象、删除对象、复制对象、重命名对象的引用数均为0),那么目标任务可以不受影响继续通行。
步骤605,将目标任务加入到等待队列的尾部,执行步骤613;
步骤606,处理目标任务;任务处理仍然在PG lock上下文进行。
步骤607,在目标任务处理完成后,检查该目标任务是否为该目标任务所属的请求的第一阶段;如果是,执行步骤608;如果不是,执行步骤609;
请求通常划分为多个任务,该请求即为任务所属的请求。
步骤608,在目标任务涉及的PG对应的引用表中的该目标任务对应的操作类型的引用数增加一次计数,执行步骤613;
目标任务是请求的第一阶段时,增加引用计数,指示目标任务对应的操作类型存在请求处于执行过程中。
增加一次计数可以是将引用数加1,但本公开实施例不限于此,可以用增加其他值代表一次引用计数。比如,目标任务为读对象操作,则将引用表中读对象的引用数加1。
步骤609,判断目标任务是否为该目标任务所属请求的最后阶段,如果是,执行步骤610,如果不是,执行步骤613;
步骤610,在目标任务涉及的PG对应的引用表中的该目标任务对应的操作类型的引用数减少一次计数,执行步骤611;
任务是请求的最后阶段时,减少引用计数,指示目标任务对应的操作类型存在一个请求已执行完毕。
减少一次计数可以是将引用数减1,但本公开实施例不限于此,可以用其他值代表一次引用计数。比如,目标任务为列举对象,则将引用表中列举对象的引用数减1。
步骤611,判断目标任务对应的操作类型的引用数是否归0,如果是,执行步骤612,如果不是,执行步骤613;
当存在引用数归0时,说明有一种操作类型的请求执行完毕,等待队列中相同操作类型的任务可以重新进行执行,因此,将等待队列中的任务放入调度队列以便重新执行。本实施例中,将等待队列中其他操作类型的任务也重新加入到调度队列中。在另一实施例中,可以建立多个等待队列,比如,建立两个等待队列,引用表中包括读类型和写类型,为读类型建立一个等待队列,为写类型建立一个等待队列,在读类型的引用数归零时,将读类型对应的等待队列中的任务重新加入调度队列,在写类型的引用数归零时,将写类型对应的等待队列中的任务重新加入调度队列,可以预先记录调度队列中任务的执行顺序,将等待队列中的任务加入调度队列时根据预先记录的执行顺序调整调度队列中任务的顺序。
步骤612,将任务从等待队列取出,按照任务在等待队列中的顺序,将任务重新插入到调度队列的首部;
比如,等待队列中有三个任务,从首部到尾部依次为任务1,任务2,任务3,则将等待队列中的任务插入到调度队列后,调度队列的前3个任务依次为任务1,任务2,任务3,即与等待队列中任务的顺序一致。
步骤613,释放PG lock,结束;
步骤614,将任务放入等待队列尾部,结束。
后续worker线程继续从调度队列首部取出下一个任务。
可以注意到,PG lock的占用时间取决于worker线程处理任务的时间,worker线程仍然存在PG lock竞争耗时的问题。为了降低竞争耗时,可以尽可能减少PG lock的占用时间,可以将一些耗时操作,从PG lock上下文中分离出来。
以读盘操作为例,可以分成2个阶段处理:一是向存储设备提交读事务,二是在存储设备完成事务后发起回调流程。
将一技术方案中“读对象”请求的3个阶段,变成4个阶段:
(1)第一阶段,即准备阶段,主OSD分发子请求至主OSD和从OSD;
(2)第二阶段,即提交阶段,主OSD和从OSD分别向对应的存储设备发送读事务;
(3)第三阶段,即回调阶段,从OSD接收存储设备返回的信息,将信息封装成报文发送给主OSD,即针对子请求发送应答至主OSD;
(4)第四阶段,即应答阶段,主OSD整合各个子请求的结果,向客户端发送应答。
工作线程执行所述第二阶段任务之后,执行所述第三阶段任务之前,可执行其他任务。
本实施例中,将原本的“实施阶段”拆分为“提交阶段”和“回调阶段”,主要耗时的环节在“提交阶段”和“回调阶段”之间,本实施例中,这段时间内worker线程是自由的,可以处理其他任务,从而有效利用CPU,且第二阶段和第三阶段之间不会占用PG lock,提高了worker线程的并发效率。
上述读对象请求仅为示例,可以将其类型的操作修改为异步形式,以便提高并发效率。
本实施例提供的方案,将耗时操作改为异步形式,使得耗时环节从PG lock上下文分离,提高worker线程的CPU利用率,并降低PG lock带来的竞争耗时。另外,采用引用表来辅助PG lock,确保上述异步操作的中间环节,不会因为失去了PG lock的保护,而引起一些访问冲突的问题。
如图7所示,本公开实施例提供一种分布式对象存储系统处理装置70,包括存储器710和处理器720,所述存储器710存储有程序,所述程序在被所述处理器720读取执行时,实现上述任一实施例所述的分布式对象存储系统处理方法。
本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一实施例所述的分布式对象存储系统处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种分布式对象存储系统处理方法,其特征在于,应用于分布式对象存储系统,所述分布式对象存储系统包括至少一个对象存储进程,所述对象存储进程承载至少一个归置组,所述对象存储进程包括至少一个调度进程,所述调度进程管理至少一个调度队列,所述调度队列包括至少一个任务,所述调度队列对应至少一个工作线程,所述分布式对象存储系统处理方法包括:
工作线程从调度队列中取出目标任务,获取归置组锁;
当成功获取归置组锁,且存在任务处于等待状态或者存在与所述目标任务冲突的请求未执行完毕时,则所述目标任务进入等待状态,释放获取的所述归置组锁;
当成功获取归置组锁,且无任务处于等待状态,且不存在与所述目标任务冲突的请求处于执行过程中时,则执行所述目标任务,执行所述目标任务完毕后释放获取的所述归置组锁。
2.根据权利要求1所述的分布式对象存储系统处理方法,其特征在于,所述方法还包括,当未成功获取归置组锁时,所述目标任务进入等待状态;
以及,所述目标任务执行完毕且该目标任务为所属的请求的最后阶段,且不存在与所述目标任务对应的请求类型相同的请求处于执行过程中时,将处于等待状态的任务重新加入所述调度队列。
3.根据权利要求2所述的分布式对象存储系统处理方法,其特征在于,
所述方法还包括:所述归置组对应引用表,所述引用表中包含请求类型和请求类型对应的引用计数;所述引用表用于记录未执行完毕的请求;
根据所述引用表中的请求类型和引用计数判断是否存在与所述目标任务冲突的请求处于执行过程中或者是否存在与所述目标任务对应的请求类型相同的请求处于执行过程中。
4.根据权利要求3所述的分布式对象存储系统处理方法,其特征在于,所述方法还包括,执行所述目标任务完毕后,当所述目标任务是所属的请求的第一阶段时,将所述目标任务涉及的归置组对应的引用表中所述目标任务对应的请求类型的引用计数增加一次;当所述目标任务是所属的请求的最后一个阶段时,将所述引用表中所述目标任务对应的请求类型的引用计数减少一次;
所述引用表中,目标任务对应的请求类型的引用计数为0次时,确定不存在与目标任务对应的请求类型相同的请求处于执行过程中。
5.根据权利要求3所述的分布式对象存储系统处理方法,其特征在于,
所述引用表中,与所述目标任务冲突的请求类型的引用计数大于0次时,确定存在与所述目标任务冲突的请求未执行完毕;
所述引用表中,与所述目标任务冲突的请求类型的引用计数为0次时,确定不存在与目标任务冲突的请求处于执行过程中。
6.根据权利要求3所述的分布式对象存储系统处理方法,其特征在于,所述请求类型包括:读对象、写对象、删除对象、重命名对象、复制对象和列举对象;或者,所述请求类型包括读类型和写类型,所述读类型对应读对象操作和列举对象操作,所述写类型对应写对象操作、删除对象操作、重命名对象操作和复制对象操作。
7.根据权利要求2所述的分布式对象存储系统处理方法,其特征在于,所述方法还包括:所述归置组对应等待队列,且一个归置组对应一个等待队列;
所述目标任务进入等待状态包括:将所述目标任务加入到所述目标任务涉及的归置组对应的等待队列的尾部;
所述将处于等待状态的任务重新加入所述调度队列包括:
将所述等待队列的任务从尾部开始依次加入到所述调度队列的首部。
8.根据权利要求1至7任一所述的分布式对象存储系统处理方法,其特征在于,所述归置组承载在一个主对象存储进程和至少一个从对象存储进程中,所述方法还包括:所述主对象存储进程接收客户端的读取对象请求,其中,所述读取对象请求包括如下四个阶段的任务:
第一阶段:主对象存储进程根据读取对象请求生成子请求,分发所述子请求至所述主对象存储进程和从对象存储进程;
第二阶段,从对象存储进程向存储设备发送读事务;
第三阶段,从对象存储进程接收存储设备返回的信息,返回应答至主对象存储进程;
第四阶段,主对象存储进程根据针对所述子请求的应答,返回应答至所述客户端;
所述工作线程执行所述第二阶段任务之后,执行所述第三阶段任务之前,可执行其他任务。
9.一种分布式对象存储系统处理装置,其特征在于,包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现如权利要求1至8任一所述的分布式对象存储系统处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至8任一所述的分布式对象存储系统处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111553500.4A CN116266101A (zh) | 2021-12-17 | 2021-12-17 | 一种分布式对象存储系统处理方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111553500.4A CN116266101A (zh) | 2021-12-17 | 2021-12-17 | 一种分布式对象存储系统处理方法及装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116266101A true CN116266101A (zh) | 2023-06-20 |
Family
ID=86743703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111553500.4A Pending CN116266101A (zh) | 2021-12-17 | 2021-12-17 | 一种分布式对象存储系统处理方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116266101A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521091A (zh) * | 2023-06-28 | 2023-08-01 | 苏州浪潮智能科技有限公司 | 数据读取方法、装置、设备、数据传输系统及存储介质 |
-
2021
- 2021-12-17 CN CN202111553500.4A patent/CN116266101A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521091A (zh) * | 2023-06-28 | 2023-08-01 | 苏州浪潮智能科技有限公司 | 数据读取方法、装置、设备、数据传输系统及存储介质 |
CN116521091B (zh) * | 2023-06-28 | 2023-09-15 | 苏州浪潮智能科技有限公司 | 数据读取方法、装置、设备、数据传输系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3689336B2 (ja) | データベースにおける並行したトランザクションのストリームを調停するための方法およびシステム | |
US9513959B2 (en) | Contention management for a hardware transactional memory | |
US8473950B2 (en) | Parallel nested transactions | |
US7685583B2 (en) | Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory | |
US8250047B2 (en) | Hybrid multi-threaded access to data structures using hazard pointers for reads and locks for updates | |
KR101203297B1 (ko) | 직접 업데이트 소프트웨어 트랜잭션 메모리 | |
US9213586B2 (en) | Computer-implemented systems for resource level locking without resource level locks | |
US7716249B2 (en) | Transaction and task scheduler | |
US7809903B2 (en) | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions | |
US6463532B1 (en) | System and method for effectuating distributed consensus among members of a processor set in a multiprocessor computing system through the use of shared storage resources | |
US8239635B2 (en) | System and method for performing visible and semi-visible read operations in a software transactional memory | |
US7849060B2 (en) | System and method for managing log information for transaction | |
CN110727675B (zh) | 一种链表的处理方法及装置 | |
US20050022047A1 (en) | Conditional data access after database system failure | |
US9460143B2 (en) | Methods, systems, and computer readable media for a multi-view data construct for lock-free operations and direct access | |
JPH05197604A (ja) | マルチプロセッサ・コンピュータ及びその動作方法 | |
JPH01188965A (ja) | データ処理方法 | |
JPH05210637A (ja) | 同時アクセス管理方法 | |
CN113127212B (zh) | 一种在区块链中处理交易的方法和装置 | |
US9164886B1 (en) | System and method for multistage processing in a memory storage subsystem | |
CN115080277B (zh) | 一种多核系统的核间通信系统 | |
US5790868A (en) | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment | |
CN116266101A (zh) | 一种分布式对象存储系统处理方法及装置、存储介质 | |
JPH07262071A (ja) | データベースシステム及び負荷分散制御方法 | |
JP7450735B2 (ja) | 確率的データ構造を使用した要求の低減 |
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 |