CN109407970A - 读写请求处理方法、装置及电子设备 - Google Patents
读写请求处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109407970A CN109407970A CN201811065298.9A CN201811065298A CN109407970A CN 109407970 A CN109407970 A CN 109407970A CN 201811065298 A CN201811065298 A CN 201811065298A CN 109407970 A CN109407970 A CN 109407970A
- Authority
- CN
- China
- Prior art keywords
- read
- write
- write requests
- processing
- thread
- 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.)
- Granted
Links
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
-
- 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]
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
本公开提供一种读写请求处理方法、装置及电子设备,涉及互联网技术领域。读写请求处理方法应用于分布式存储系统,方法包括接收读写请求,所述读写请求中包括待读写对象的识别信息;根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。从而提高处理线程利用率,进而提升读写性能。
Description
技术领域
本公开涉及互联网技术领域,具体而言,涉及一种读写请求处理方法、装置及电子设备。
背景技术
随着互联网技术的快速发展,在高清视频、图像处理、视频监控等领域,数据容量正变得越来越大,相应地,对于存储数据的读写(又称Input/Output读写,I/O读写)性能的要求也在同步增加。经研究发现,存储数据的读写性能有待提升。
发明内容
有鉴于此,本公开提供一种读写请求处理方法、装置及电子设备。
第一方面,本公开提供了一种读写请求处理方法,应用于分布式存储系统,所述方法包括:
接收读写请求,所述读写请求中包括待读写对象的识别信息;
根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。
可选地,接收读写请求之后,所述方法还包括:将接收到的读写请求缓存在读写请求队列中;
所述根据所述待读写对象的识别信息对所述读写请求进行分配的步骤,包括:
按缓存的先后顺序,依次对所述读写请求队列中的读写请求进行分配。
可选地,处理线程为多个,每个所述处理线程分别对应有缓存队列;
所述根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理的步骤,包括:
根据接收到的读写请求中的待读写对象的识别信息,从多个处理线程中分析得到与该待读写对象对应的目标处理线程;
判断所述目标处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到所述预设阈值,则将接收到的读写请求重新缓存至所述读写请求队列的尾部;若未达到所述预设阈值,则将接收到的读写请求添加至所述目标处理线程对应的缓存队列中。
可选地,将针对同一待读写对象的读写请求分配给同一处理线程进行处理的步骤,包括:
根据待读写对象的识别信息,进行哈希计算得到对应的线程标识;
将针对所述待读写对象的读写请求分配给所述线程标识对应的处理线程进行处理。
第二方面,本公开提供一种读写请求处理装置,应用于分布式存储系统,所述读写请求处理装置包括:
请求接收模块,用于接收读写请求,所述读写请求中包括待读写对象的识别信息;
请求处理模块,用于根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。
可选地,所述读写请求处理装置还包括:缓存模块;
所述缓存模块用于将接收到的读写请求缓存在读写请求队列中;
所述请求处理模块用于,按缓存的先后顺序,依次对所述读写请求队列中的读写请求进行分配。
可选地,处理线程为多个,每个所述处理线程分别对应有缓存队列;
所述请求处理模块用于通过以下方式根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理:
根据接收到的读写请求中的待读写对象的识别信息,从多个处理线程中分析得到与该待读写对象对应的目标处理线程;
判断所述目标处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到所述预设阈值,则将接收到的读写请求重新缓存至所述读写请求队列的尾部;若未达到所述预设阈值,则将接收到的读写请求添加至所述目标处理线程对应的缓存队列中。
可选地,所述请求处理模块用于通过以下方式将针对同一待读写对象的读写请求分配给同一处理线程进行处理:
根据待读写对象的识别信息,计算得到对应的线程标识;
将针对所述待读写对象的读写请求分配给所述线程标识对应的处理线程进行处理。
可选地,所述线程标识通过对待读写对象的识别信息进行哈希计算得到。
第三方面,本公开提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的读写请求处理方法。
第四方面,本公开提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备执行上述的读写请求处理方法。
本公开提供的读写请求处理方法、装置及电子设备,根据待读写对象的识别信息对读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理,从而避免针对同一待读写对象的读写请求分配至不同处理线程之后,因读写请求之间的相互等待所造成的处理线程浪费,提升了线程利用率,进而提升了读写性能,减少读写延迟,提升用户体验。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本公开提供的一种电子设备的方框示意图。
图2为本公开提供的一种读写请求处理方法的流程示意图。
图3为本公开提供的图2中步骤S12的一种流程示意图。
图4为本公开提供的图2中步骤S12的另一种流程示意图。
图5为本公开提供的一种读写请求处理逻辑示意图。
图6为本公开提供的另一种读写请求处理逻辑示意图。
图7为本公开提供的一种读写请求处理装置的方框示意图。
图标:20-电子设备;21-存储器;22-处理器;23-网络模块;24-读写请求处理装置;241-请求接收模块;242-请求处理模块;243-缓存模块。
具体实施方式
在很多场景中,对存储数据的读写性能有较高要求。例如,用户在选购存储产品时,通常会对存储产品的读写性能提出明确的要求,以满足业务的需要。在许多业务场景下,存储产品的读写性能不仅仅是快慢的区别,甚至会影响到业务本身是否能够正常运行。
以文件数字化为例,在档案馆、图书馆等场景中,将纸质文件数字化并存储到存储系统中,当越来越多的数字化文件存储至存储系统,存储系统的容量将会越来越大。随着存储系统的容量越来越大,存储的数字化文件越来越多,亦会有大量的用户进行并发的读写访问。该种情况下,如果存储系统的读写性能差、读写延迟高,将会降低读写效率,甚至导致无法正常读写,降低用户使用友好度,影响数字化的推进。因此提升存储系统的读写性能十分关键。
经研究发现,为了满足存储需求,往往采用分布式存储系统存储数据。为了提升分布式存储系统的读写性能,大都选择提升读写请求处理的并发度,采用多个处理线程处理读写请求,通过多个处理线程同时处理多个读写请求,从而提升读写请求处理能力,提高读写性能。
然而,当向分布式存储系统下发读写请求的速度大于多个处理线程处理读写请求的速度时,将会出现读写请求堆积,当堆积的读写请求超过缓存空间的最大缓存量之后,将阻塞系统,导致暂停接收读写请求,待缓存空间中的读写请求被处理后,才会继续接收读写请求。为了进一步提升读写性能,本领域技术人员常用的处理方式为增加处理线程的数量。增加处理线程的数量虽然能够提高读写请求的并发处理能力并且实现简单,但是增加处理线程的数量对分布式存储系统的处理性能具有较高要求,导致成本增加。基于此,发明人对能够提升分布式存储系统的读写性能的其他实现方式进行了分析。
经发明人研究发现,在读写过程中,某些处理线程虽然接收到读写任务,但并未进行读写操作,处理线程的利用率具有较大的提升空间。经仔细分析,导致处理线程利用率不够高的主要原因是:采用多处理线程并发处理读写请求的方式忽略了读写之间的关联性,每个读写请求并不是完全相互独立的,它们之间可能会存在相互制约的关系。
例如,当对一个文件进行连续修改的写请求,然后再对该文件进行文件读取的读请求时,读请求和写请求之间存在先后顺序关系。当对某一文件进行并发写入操作时,会产生连续的针对该文件的写请求,然后再对该文件进行读取操作,会产生针对该文件的读请求。针对该文件的读写请求并非相互独立的,需要等待前面的写请求处理完成,才能去处理后面的读请求。
这是因为当对一个文件进行写入操作时,需要等待所有的写入操作完成后才能执行后面针对该文件的读取操作,不然读取的数据是不完整的。因而,若按照接收到的读写请求先后顺序,将针对同一文件的各读写请求分配至不同的处理线程进行处理,会导致处理读请求的处理线程需要等待处理写请求的处理线程完成处理之后,方能执行读取操作。处理写请求的处理线程完成处理之前,处理读请求的处理线程需进行等待,导致处理读请求的处理线程的资源未得到充分利用。在大量的用户进行类似的读写操作过程中,会导致分布式存储系统整体的读写请求处理能力显著降低,即使增加更多的处理线程,表现出的读写性能亦较低,读写延迟高,严重影响用户体验。
有鉴于此,本公开提供一种读写请求处理方法、装置及电子设备,将针对同一待读写对象的读写请求分配给同一处理线程进行处理,以改善因将待读写对象的读请求和写请求分配至不同处理线程,由于待读写对象的读请求和写请求之间存在的处理先后顺序,所造成的处理线程等待问题,提高处理线程利用率,提升读写性能,进而提升用户读写体验。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
如图1所示,是本公开提供的电子设备20的一种方框示意图。本公开中的电子设备20可以为存储服务器等能够对分布式存储系统中的读写请求进行处理的设备。如图1所示,电子设备20包括:存储器21、处理器22、网络模块23及读写请求处理装置24。
所述存储器21、处理器22以及网络模块23相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器21中存储有读写请求处理装置24,所述读写请求处理装置24包括至少一个可以软件或固件(firmware)的形式存储于所述存储器21中的软件功能模块,所述处理器22通过运行存储在存储器21内的软件程序以及模块,如本公开中的读写请求处理装置24,从而执行各种功能应用以及读写请求处理,即实现本公开中的读写请求处理方法。
其中,所述存储器21可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器21用于存储程序,所述处理器22在接收到执行指令后,执行所述程序。
所述处理器22可能是一种集成电路芯片,具有数据的处理能力。上述的处理器22可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等。可以实现或者执行本公开中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
网络模块23用于通过网络建立电子设备20与外部通信终端之间的通信连接,实现网络信号及数据的收发操作。上述网络信号可包括无线信号或者有线信号。
可以理解,图1所示的结构仅为示意,电子设备20还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
在上述基础上,本公开还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,所述计算机程序运行时控制所述计算机可读存储介质所在电子设备20执行下述读写请求处理方法。
请结合参阅图2,本公开提供一种读写请求处理方法,该方法可以由图1中的电子设备20执行。该电子设备20为存储服务器等能够对分布式存储系统中的读写请求进行处理的设备。
所述方法包括以下步骤。
步骤S11,接收读写请求。
其中,所述读写请求中包括待读写对象的识别信息。识别信息为能够唯一标识待读写对象的信息,识别信息与待读写对象一一对应,通过识别信息,可以分析得出读写请求对应的待读写对象。例如,识别信息可以为待读写对象的身份标识码(Identification,Identity,简称ID)。
本公开中,待读写对象在分布式存储系统中的存储格式可以为块、文件、对象等。本公开支持对块、文件、对象等存储格式的待读写对象的读写处理。
鉴于接收到的读写请求数量可能较多,为了实现对读写请求的可靠接收和分配,可选地,分布式存储系统中还包括用于缓存读写请求的读写请求队列,接收读写请求之后,先将接收到的读写请求缓存在读写请求队列中。
步骤S12,根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。
将针对同一待读写对象的读写请求分配给同一处理线程进行处理,可以改善因将待读写对象的读请求和写请求分配至不同处理线程,由于待读写对象的读请求和写请求之间存在的处理先后顺序,所造成的处理线程等待问题,提高处理线程利用率,提升读写性能。
在分布式存储系统中包括用于缓存读写请求的读写请求队列的情况下,可以按缓存的先后顺序,依次对所述读写请求队列中的读写请求进行分配。例如,分布式存储系统新接收到读写请求之后,将新接收到的读写请求放到读写请求队列的末尾,而最先接收到的读写请求位于读写请求队列的首位。那么,分布式存储系统从读写请求队列的首位开始,依次对读写请求队列中的读写请求进行分配,从而实现对读写请求队列中各读写请求的处理。
请结合参阅图3,本公开中,分布式存储系统中的处理线程为多个,为了进一步提升读写请求处理的可靠性,每个所述处理线程可以分别对应有缓存队列,步骤S12通过以下步骤实现。
步骤S121,根据接收到的读写请求中的待读写对象的识别信息,从多个处理线程中分析得到与该待读写对象对应的目标处理线程。
步骤S122,判断所述目标处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到所述预设阈值,则执行步骤S123。若未达到所述预设阈值,则执行步骤S124。
其中,各处理线程对应的预设阈值可以相同也可以不同。在各处理线程对应的预设阈值相同时,分布式存储系统可以存储与处理线程对应的预设阈值,判断目标处理线程对应的缓存队列中待处理的读写请求数量是否达到该预设阈值。在各处理线程对应的预设阈值不同时,分布式存储系统可以存储与各处理线程分别对应的预设阈值,从各预设阈值中查找出与目标处理线程对应的预设阈值,并判断目标处理线程对应的缓存队列中待处理的读写请求数量是否达到查找出的预设阈值。
步骤S123,将接收到的读写请求重新缓存至所述读写请求队列的尾部。
在目标处理线程对应的缓存队列中待处理的读写请求数量达到预设阈值的情况下,将接收到的读写请求重新缓存至读写请求队列的尾部,返回执行按照缓存的先后顺序,依次对读写请求队列中的读写请求进行分配的步骤,从而给目标处理线程预留足够的处理时间,提高下一次将该读写请求分配至目标处理线程的缓存队中的成功率,进而提升整体处理效率。
步骤S124,将接收到的读写请求添加至所述目标处理线程对应的缓存队列中。
可选地,分配至各处理线程的读写请求按照分配的先后顺序依次缓存在相应处理线程对应的缓存队列中。例如,针对目标处理线程相同的各读写请求,会将最新接收的读写请求分配至目标处理线程对应的缓存队列的末尾,而将最先接收到的读写请求分配至目标处理线程对应的缓存队列的首位。相应地,目标处理线程从缓存队列的首位开始,依次对读写请求进行处理,从而实现对缓存队列中各读写请求的处理。
本公开中,将针对同一待读写对象的读写请求分配给同一处理线程进行处理的实现方式有多种,例如,可以设定各待读写对象的识别信息与各处理线程的对应关系,如若设定待读写对象A的识别信息A和待读写对象B的识别信息B与处理线程一对应,那么,会将接收到的所有包括识别信息A或者识别信息B的读写请求均分配至处理线程一进行处理。又例如,各处理线程可以对应不同的线程标识,设定根据待读写对象的识别信息计算得到线程标识的计算规则,那么,接收到包括同一待读写对象的识别信息的读写请求之后,按照相同的计算规则计算得到的线程标识相同,对应的处理线程相同,同一待读写对象便可被分配至同一处理线程进行处理。
请结合参阅图4,本公开提供了其中一种将针对同一待读写对象的读写请求分配给同一处理线程进行处理的实现步骤。
步骤S125,根据待读写对象的识别信息,计算得到对应的线程标识。
步骤S126,将针对所述待读写对象的读写请求分配给所述线程标识对应的处理线程进行处理。
其中,线程标识可以通过多种方式计算得到,只要能够确保针对相同识别信息,计算得到的线程标识相同即可。例如,包括但不限于通过对待读写对象的识别信息进行哈希计算得到。
为了更为清楚地阐述本公开的实现原理和优越性,现以分布式存储系统中的读取请求处理方案为例,对未采用本公开中读写请求处理方法的实现流程与采用本公开中读写请求处理方法的实现流程进行对比性的举例说明。其中,分布式存储系统中包括读写请求队列。
未采用本公开中读写请求处理方法的情况下,在需要读写数据时,用户通过客户端向分布式存储系统发起读写请求,分布式存储系统在接收到客户端发送的读写请求后,将读写请求放到读写请求队列中。多个读写处理线程依次从读写请求队列的首部获取读写请求进行处理,当某一读写处理线程完成读写请求处理之后,再次从读写请求队列的头部获取读写请求进行处理。
请参阅图5,未采用本公开中读写请求处理方法的情况下,若针对一待读写对象A,连续进行了写请求和读请求,图5中示出了连续进行一个读请求(读A)和三个写请求(写A)的示例。在分布式存储系统中存在四个空闲处理线程,分别为线程1、线程2、线程3和线程4的情况下,一个读请求(读A)和三个写请求(写A)会分别分配至这四个线程。
分析可知,采用图5所示的读写请求处理方案,在线程1处理读A的任务时,由于排在读A的任务前面有三个写A的操作,因此读A的处理需要等待前面的三个写A的处理完成后,才能执行,而此时线程1只能等待,使得线程1的资源没有得到充分利用,从而导致分布式存储系统整体的读写请求处理能力降低,表现为分布式存储系统的读写性能低,读写延迟高,导致用户体验不佳。
应当理解,图5仅是举例说明,针对同一待读写对象连续进行的写请求和读请求数量可能为其他,分布式存储系统中空闲处理线程的数量可能为其他。
采用本公开中读写请求处理方法的情况下,以识别信息为待读写对象的ID,线程标识为处理线程的ID,通过对待读写对象的ID进行哈希计算得到相应处理线程的ID为例,对本公开的实现流程进行举例说明。
采用本公开中的实现方案,在需要读写数据时,用户通过客户端向分布式存储系统发起读写请求,分布式存储系统在接收到客户端发送的读写请求后,将读写请求放到读写请求队列中。分布式存储系统依次从读写请求队列的首部获取读写请求进行处理,根据读写请求中的待读写对象的ID进行哈希计算,得出处理此读写请求的处理线程的ID。根据同一待读写对象的ID进行哈希计算得到的处理线程的ID相同,从而确保同一个待读写对象的读写请求会分配给同一个处理线程,从而避免针对同一个待读写对象的读写请求之间相互依赖所产生的线程资源消耗,从而提高处理线程利用率。
分布式存储系统计算得到处理读写请求的处理线程的ID之后,判断具有该ID的处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到预设阈值,表明该处理线程处于繁忙状态,则将接收到的读写请求重新缓存至读写请求队列的尾部,等待下次分配。若未达到预设阈值,则将接收到的读写请求添加至处理线程对应的缓存队列中,等待处理线程进行处理。
请结合参阅图6,采用本公开中读写请求处理方法的情况下,若针对待读写对象A和待读写对象B,分别连续进行了写请求和读请求,图6中示出了针对待读写对象A连续进行一个读请求(读A)和两个写请求(写A),针对待读写对象B连续进行一个读请求(读A)和两个写请求(写B)的示例。
将待读写对象A的ID进行哈希计算,得出处理针对待读写对象A的读写请求的为处理线程2的ID,那么,针对待读写对象A的读写请求均分配至处理线程2进行处理。图6中的一个读请求(读A)和两个写请求(写A)均会分配至线程2进行处理,线程2会在完成写A处理之后再进行下一个读A处理,或者在完成读A处理之后再进行下一个写A处理,或者在完成写A处理之后再进行下一个写A处理。线程2一直处于正常工作状态,不会如图5所示般,因将读A和写A分配至不同线程,导致处理读A的线程需进行等待,造成资源浪费。
类似地,将待读写对象B的ID进行哈希计算,得出处理针对待读写对象B的读写请求的为处理线程4的ID,那么,针对待读写对象B的读写请求均分配至处理线程4进行处理。图6中的一个读请求(读B)和两个写请求(写B)均会分配至线程4进行处理,线程4会在完成写B处理之后再进行下一个读B处理,或者在完成读B处理之后再进行下一个写B处理,或者在完成写B处理之后再进行下一个写B处理。线程4一直处于正常工作状态,不会如图5所示般,因将读B和写B分配至不同线程,导致处理读B的线程需进行等待,造成资源浪费。
通过上述对比分析可知,采用本公开中的方案,将同一个待读写对象的读写请求会分配给同一个处理线程,从而避免针对同一个待读写对象的读写请求之间相互依赖所产生的线程资源消耗,进而提高处理线程利用率,提升分布式存储系统的读写请求处理速度,有效提升了系统性能,降低了读写延迟。另外,由于分布式存储系统中的读写请求数量较大,因此在对大量读写请求进行哈希分配时,哈希得出的线程的ID基本上是均匀的,从而确保了负载均衡。
请参阅图7,本公开还提供一种读写请求处理装置24,应用于分布式存储系统,所述读写请求处理装置24包括:请求接收模块241和请求处理模块242。
其中,请求接收模块241用于接收读写请求,所述读写请求中包括待读写对象的识别信息。
关于请求接收模块241的实现方式可以参阅图2中步骤S11的相关描述,在此不作赘述。
请求处理模块242用于根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。
关于请求处理模块242的实现方式可以参阅图2中步骤S12的相关描述,在此不作赘述。
可选地,所述读写请求处理装置24还包括缓存模块243。所述缓存模块243用于将接收到的读写请求缓存在读写请求队列中。所述请求处理模块242用于,按缓存的先后顺序,依次对所述读写请求队列中的读写请求进行分配。
可选地,处理线程为多个,每个所述处理线程分别对应有缓存队列。所述请求处理模块242用于通过以下方式根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理:根据接收到的读写请求中的待读写对象的识别信息,从多个处理线程中分析得到与该待读写对象对应的目标处理线程。判断所述目标处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到所述预设阈值,则将接收到的读写请求重新缓存至所述读写请求队列的尾部。若未达到所述预设阈值,则将接收到的读写请求添加至所述目标处理线程对应的缓存队列中。
可选地,所述请求处理模块242用于通过以下方式将针对同一待读写对象的读写请求分配给同一处理线程进行处理:根据待读写对象的识别信息,计算得到对应的线程标识。将针对所述待读写对象的读写请求分配给所述线程标识对应的处理线程进行处理。
可选地,所述线程标识通过对待读写对象的识别信息进行哈希计算得到。
本公开中,读写请求处理装置24的实现原理与前述读写请求处理方法的实现原理类似,相应内容可以参阅前述方法实施例,因而在此不作赘述。
本公开中的读写请求处理方法、装置及电子设备,将同一个待读写对象的读写请求分配给同一个处理线程,从而避免针对同一个待读写对象的读写请求之间相互依赖所产生的处理线程等待,避免处理线程的资源消耗,进而提高处理线程利用率,提升分布式存储系统的读写请求处理速度,有效提升了系统性能,降低了读写延迟。另外,由于分布式存储系统中的读写请求数量较大,因此在对大量读写请求进行哈希分配时,哈希得出的线程的线程标识基本上是均匀的,从而确保了负载均衡。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的可选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种读写请求处理方法,其特征在于,应用于分布式存储系统,所述方法包括:
接收读写请求,所述读写请求中包括待读写对象的识别信息;
根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。
2.根据权利要求1所述的读写请求处理方法,其特征在于,接收读写请求之后,所述方法还包括:将接收到的读写请求缓存在读写请求队列中;
所述根据所述待读写对象的识别信息对所述读写请求进行分配的步骤,包括:
按缓存的先后顺序,依次对所述读写请求队列中的读写请求进行分配。
3.根据权利要求2所述的读写请求处理方法,其特征在于,处理线程为多个,每个所述处理线程分别对应有缓存队列;
所述根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理的步骤,包括:
根据接收到的读写请求中的待读写对象的识别信息,从多个处理线程中分析得到与该待读写对象对应的目标处理线程;
判断所述目标处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到所述预设阈值,则将接收到的读写请求重新缓存至所述读写请求队列的尾部;若未达到所述预设阈值,则将接收到的读写请求添加至所述目标处理线程对应的缓存队列中。
4.根据权利要求1所述的读写请求处理方法,其特征在于,将针对同一待读写对象的读写请求分配给同一处理线程进行处理的步骤,包括:
根据待读写对象的识别信息,进行哈希计算得到对应的线程标识;
将针对所述待读写对象的读写请求分配给所述线程标识对应的处理线程进行处理。
5.一种读写请求处理装置,其特征在于,应用于分布式存储系统,所述读写请求处理装置包括:
请求接收模块,用于接收读写请求,所述读写请求中包括待读写对象的识别信息;
请求处理模块,用于根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理。
6.根据权利要求5所述的读写请求处理装置,其特征在于,所述读写请求处理装置还包括:缓存模块;
所述缓存模块用于将接收到的读写请求缓存在读写请求队列中;
所述请求处理模块用于,按缓存的先后顺序,依次对所述读写请求队列中的读写请求进行分配。
7.根据权利要求6所述的读写请求处理装置,其特征在于,处理线程为多个,每个所述处理线程分别对应有缓存队列;
所述请求处理模块用于通过以下方式根据所述待读写对象的识别信息对所述读写请求进行分配,将针对同一待读写对象的读写请求分配给同一处理线程进行处理:
根据接收到的读写请求中的待读写对象的识别信息,从多个处理线程中分析得到与该待读写对象对应的目标处理线程;
判断所述目标处理线程对应的缓存队列中待处理的读写请求数量是否达到预设阈值,若达到所述预设阈值,则将接收到的读写请求重新缓存至所述读写请求队列的尾部;若未达到所述预设阈值,则将接收到的读写请求添加至所述目标处理线程对应的缓存队列中。
8.根据权利要求5所述的读写请求处理装置,其特征在于,所述请求处理模块用于通过以下方式将针对同一待读写对象的读写请求分配给同一处理线程进行处理:
根据待读写对象的识别信息,计算得到对应的线程标识;
将针对所述待读写对象的读写请求分配给所述线程标识对应的处理线程进行处理。
9.根据权利要求8所述的读写请求处理装置,其特征在于,所述线程标识通过对待读写对象的识别信息进行哈希计算得到。
10.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至4任一项所述的读写请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811065298.9A CN109407970B (zh) | 2018-09-12 | 2018-09-12 | 读写请求处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811065298.9A CN109407970B (zh) | 2018-09-12 | 2018-09-12 | 读写请求处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109407970A true CN109407970A (zh) | 2019-03-01 |
CN109407970B CN109407970B (zh) | 2022-02-11 |
Family
ID=65464754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811065298.9A Active CN109407970B (zh) | 2018-09-12 | 2018-09-12 | 读写请求处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109407970B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN116719646A (zh) * | 2023-08-09 | 2023-09-08 | 浙江邦盛科技股份有限公司 | 热点数据处理方法、装置、电子装置和存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085276A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computers Corporation | Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies |
US6247143B1 (en) * | 1998-06-30 | 2001-06-12 | Sun Microsystems, Inc. | I/O handling for a multiprocessor computer system |
US20050172084A1 (en) * | 2004-01-30 | 2005-08-04 | Jeddeloh Joseph M. | Buffer control system and method for a memory system having memory request buffers |
US20060101081A1 (en) * | 2004-11-01 | 2006-05-11 | Sybase, Inc. | Distributed Database System Providing Data and Space Management Methodology |
US20070019636A1 (en) * | 2005-06-30 | 2007-01-25 | Victor Lau | Multi-threaded transmit transport engine for storage devices |
CN101694610A (zh) * | 2009-10-16 | 2010-04-14 | 成都市华为赛门铁克科技有限公司 | 命令处理方法、装置和存储设备 |
US20110282922A1 (en) * | 2008-07-11 | 2011-11-17 | Kazar Michael L | Media aware distributed data layout |
CN102521265A (zh) * | 2011-11-21 | 2012-06-27 | 华中科技大学 | 一种海量数据管理中动态一致性控制方法 |
CN103986694A (zh) * | 2014-04-23 | 2014-08-13 | 清华大学 | 分布式计算机数据存储系统中多副本一致性的控制方法 |
US20140325164A1 (en) * | 2013-04-30 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Set head flag of request |
CN105094706A (zh) * | 2015-07-27 | 2015-11-25 | 北京飞杰信息技术有限公司 | 定时更新磁盘smart信息的方法及双控系统 |
CN105262680A (zh) * | 2015-10-21 | 2016-01-20 | 浪潮(北京)电子信息产业有限公司 | 一种应用于云存储系统的多线程nas网关 |
CN106155764A (zh) * | 2015-04-23 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 调度虚拟机输入输出资源的方法及装置 |
CN108459917A (zh) * | 2018-03-15 | 2018-08-28 | 欧普照明股份有限公司 | 一种消息分配部件、消息处理系统以及消息分配方法 |
-
2018
- 2018-09-12 CN CN201811065298.9A patent/CN109407970B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085276A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computers Corporation | Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies |
US6247143B1 (en) * | 1998-06-30 | 2001-06-12 | Sun Microsystems, Inc. | I/O handling for a multiprocessor computer system |
US20050172084A1 (en) * | 2004-01-30 | 2005-08-04 | Jeddeloh Joseph M. | Buffer control system and method for a memory system having memory request buffers |
US20060101081A1 (en) * | 2004-11-01 | 2006-05-11 | Sybase, Inc. | Distributed Database System Providing Data and Space Management Methodology |
US20070019636A1 (en) * | 2005-06-30 | 2007-01-25 | Victor Lau | Multi-threaded transmit transport engine for storage devices |
US20110282922A1 (en) * | 2008-07-11 | 2011-11-17 | Kazar Michael L | Media aware distributed data layout |
CN101694610A (zh) * | 2009-10-16 | 2010-04-14 | 成都市华为赛门铁克科技有限公司 | 命令处理方法、装置和存储设备 |
CN102521265A (zh) * | 2011-11-21 | 2012-06-27 | 华中科技大学 | 一种海量数据管理中动态一致性控制方法 |
US20140325164A1 (en) * | 2013-04-30 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Set head flag of request |
CN103986694A (zh) * | 2014-04-23 | 2014-08-13 | 清华大学 | 分布式计算机数据存储系统中多副本一致性的控制方法 |
CN106155764A (zh) * | 2015-04-23 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 调度虚拟机输入输出资源的方法及装置 |
CN105094706A (zh) * | 2015-07-27 | 2015-11-25 | 北京飞杰信息技术有限公司 | 定时更新磁盘smart信息的方法及双控系统 |
CN105262680A (zh) * | 2015-10-21 | 2016-01-20 | 浪潮(北京)电子信息产业有限公司 | 一种应用于云存储系统的多线程nas网关 |
CN108459917A (zh) * | 2018-03-15 | 2018-08-28 | 欧普照明股份有限公司 | 一种消息分配部件、消息处理系统以及消息分配方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN112749028B (zh) * | 2021-01-11 | 2024-06-07 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN116719646A (zh) * | 2023-08-09 | 2023-09-08 | 浙江邦盛科技股份有限公司 | 热点数据处理方法、装置、电子装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109407970B (zh) | 2022-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643251B (zh) | 基于计算系统中的利用模式的资源过度订阅 | |
US8595722B2 (en) | Preprovisioning virtual machines based on request frequency and current network configuration | |
US9342376B2 (en) | Method, system, and device for dynamic energy efficient job scheduling in a cloud computing environment | |
CN113641457B (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
JP6241300B2 (ja) | ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム | |
KR101400286B1 (ko) | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 | |
US8359437B2 (en) | Virtual computing memory stacking | |
CN108153589B (zh) | 用于多线程的处理布置中的数据处理的方法和系统 | |
CN108924187B (zh) | 基于机器学习的任务处理方法、装置和终端设备 | |
US11474712B2 (en) | Method, apparatus, device and storage medium for managing access request | |
US20090282413A1 (en) | Scalable Scheduling of Tasks in Heterogeneous Systems | |
JP2008547106A (ja) | 検索用バックオフメカニズム | |
CN113377520A (zh) | 资源调度方法、装置、设备以及存储介质 | |
Lei et al. | CREST: Towards fast speculation of straggler tasks in MapReduce | |
US20080140691A1 (en) | Method, Device and Computer Program Product for Optimizing File Placement in a Storage System | |
Aumage et al. | New madeleine: A fast communication scheduling engine for high performance networks | |
CN111324427A (zh) | 一种基于dsp的任务调度方法及装置 | |
Perwej | The ambient scrutinize of scheduling algorithms in big data territory | |
CN110673959A (zh) | 用于处理任务的系统、方法和装置 | |
CN111416825A (zh) | 线程间无锁日志管理方法和系统、终端、存储介质 | |
CN109407970A (zh) | 读写请求处理方法、装置及电子设备 | |
Dhawalia et al. | Chisel: A resource savvy approach for handling skew in mapreduce applications | |
WO2023274278A1 (zh) | 一种资源调度的方法、装置及计算节点 | |
Maroulis et al. | A holistic energy-efficient real-time scheduler for mixed stream and batch processing workloads | |
Goh et al. | Design and performance evaluation of combined first-fit task allocation and migration strategies in mesh multiprocessor systems |
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 |