CN105900061B - 对象存储系统中的业务流控制方法、控制器和系统 - Google Patents

对象存储系统中的业务流控制方法、控制器和系统 Download PDF

Info

Publication number
CN105900061B
CN105900061B CN201480064791.2A CN201480064791A CN105900061B CN 105900061 B CN105900061 B CN 105900061B CN 201480064791 A CN201480064791 A CN 201480064791A CN 105900061 B CN105900061 B CN 105900061B
Authority
CN
China
Prior art keywords
request
subject
controller
storage device
subobject
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
CN201480064791.2A
Other languages
English (en)
Other versions
CN105900061A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105900061A publication Critical patent/CN105900061A/zh
Application granted granted Critical
Publication of CN105900061B publication Critical patent/CN105900061B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种对象存储系统中的业务流控制方法、控制器和系统。对象存储系统中的业务流控制方法为:控制器接收第一对象IO请求,获取处理数量阈值和待处理数量;若待处理数量小于处理数量阈值,将第一对象IO请求发送给存储设备客户端并更新待处理数量;接收存储设备客户端返回的第一对象IO请求的第一响应消息,第一响应消息中携带第一对象IO请求的处理结果;满足预定的条件时,根据接收到的对象IO请求的处理结果调整处理数量阈值。通过根据存储设备对对象IO请求的处理结果调整所述处理数量阈值,可以控制发送给存储设备的对象IO请求的数量,使存储设备处的对象IO请求不过载,能将资源都用于对象IO请求的有效处理,提高对象存储系统的性能和成功率。

Description

对象存储系统中的业务流控制方法、控制器和系统
技术领域
本发明涉及存储领域,尤其是涉及一种对象存储系统中的业务流控制方法、控制器及系统。
背景技术
随着互联网、Web2.0的快速发展,网络(Web)应用创建出数百亿的小文件。同时人们上传越来越多的照片、视频和音乐,发送数千亿封电子邮件,产生了越来越多的数据。据互联网数据中心(IDC,Internet Data Center)统计,未来在10年间数据量将增长44倍,到2020年全球数据将增加到35ZB(Zettabyte),其中80%是非结构化数据,且大部分是非活跃数据。如此多的海量数据,面临着如何存储的问题。
面对如此庞大的数据量,仅具备PB(Petabyte)级扩展能力的块存储技术和文件存储技术显得有些无能为力。对象存储系统(Object-Based Storage System)同时具有块存储技术的直接访问和文件存储技术的数据共享等优势,提供了高可靠性、跨平台性以及安全的数据共享的存储系统。
对象存储系统中一般包括有控制器101、存储设备客户端103和存储设备集群104,如附图1所示。控制器101还可以与外部客户端相连,外部客户端可以与其他设备(如域名服务器)相连(外部客户端与域名服务器在图1中未示出)。存储设备客户端103与存储设备集群104中的多个存储设备相连,存储设备可以是IP(internet protocol)硬盘,也可以是其他的智能硬盘,例如固态硬盘(Solid State Drive,SSD)。
在对象存储系统中,使用最广泛的是基于容器--桶(bucket)和对象(object)的两层业务模型。容器可以理解成一个特殊的顶层目录或者一个全局唯一的域名。对象是对象存储的基本单元。每个对象是数据和数据属性集的综合体。数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。对象维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性。对象的大小可以不同,可以包含整个数据结构,如文件、数据库表项、目录等。
如果是进行容器操作(或称之为桶操作),用户通过客户端向控制器发送容器IO(input/output)请求;当进行对象操作时,客户端向控制器发送对象IO请求。容器IO请求与对象IO请求相比较而言,容器IO请求一般比较小,一般不超过1兆(M)。对象IO请求一般比较大,大的可能有几M,也有可能小于1M。在本发明实施例中,可以不考虑IO请求是容器IO请求还是对象IO请求,只根据IO请求的大小来进行处理。因此在下面的描述中,不再特别提及IO请求是容器IO请求还是对象IO请求,而简单称为对象IO请求。
对象IO请求可以是写对象IO请求,也可以是读对象IO请求,在本实施例中,除开特别说明外,所述的流程既适用于写对象IO请求,也适用于读对象IO请求。
当用户需要对数据进行读写时,通过外部客户端发送对象IO请求给控制器101,控制器101再将对象IO请求发送给存储设备客户端103,存储设备客户端103通过一定的算法将对象IO请求发送给对应的存储设备,由存储设备对对象IO请求进行处理。每个存储设备能处理和缓存的对象IO请求的数量是有限的,在业务高峰期,容易出现对象IO请求的下发速度超过每个存储设备的处理和缓存能力的情况,对于无法处理的对象IO请求,存储设备还需要反馈过载响应,反馈过载响应所占用的存储设备的资源并不少于处理一个对象IO请求所需要的资源,这样会导致更多的对象IO请求无法处理。
另外,大对象IO请求一般会拆分为多个小对象IO请求,只要其中一个小对象IO请求处理失败,则大对象IO请求处理失败;小对象IO请求往往需要等待较长的时间,并且在等待较长时间后出现处理失败的机率增加。
处理失败的对象IO请求和无法及时处理的对象IO请求,会被不断尝试重新发送给存储设备处理,从而形成恶性循环,导致整个对象存储系统处理对象IO请求的性能和成功率下降。
发明内容
本发明实施例提出对象存储系统中的业务流控制方法、控制器和系统,以解决现有技术中对象存储系统在业务高峰期处理对象IO请求的性能和成功率低的问题。
本发明实施例第一方面提出一种对象存储系统中的业务流控制方法,对象存储系统包括控制器和存储设备客户端,所述方法包括:所述控制器接收第一对象IO请求;获取处理数量阈值和待处理数量;所述处理数量阈值为所述对象存储系统可处理的对象IO请求的数量阈值,所述待处理数量为所述对象存储系统中待处理的对象IO请求的数量;若所述待处理数量小于所述处理数量阈值,将所述第一对象IO请求发送给所述存储设备客户端;并更新所述待处理数量;接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息,所述第一响应消息中携带所述第一对象IO请求的处理结果;满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述处理数量阈值。
结合第一方面,在第一方面第一种可能的实现方式中,当所述控制器接收第二对象IO请求时,获取所述处理数量阈值的当前值和所述待处理数量的当前值;若所述待处理数量的当前值大于或者等于所述处理数量阈值的当前值,返回拒绝响应消息或者繁忙响应消息。
结合第一方面,或者第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中在所述将所述第一对象IO请求发送给所述存储设备客户端之后启动休眠时间;当所述控制器接收第三对象IO请求时,获取所述处理数量阈值的当前值和所述待处理数量的当前值;若所述待处理数量的当前值小于所述处理数量阈值的当前值,在所述休眠时间结束后向所述存储设备客户端发送所述第三对象IO请求,并更新所述待处理数量。
结合第一方面,第一方面第一种可能的实现方式或者第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,所述接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息之后,所述方法还包括:更新已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;若所述第一响应消息携带的处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一响应消息携带的处理结果表示处理失败,维持成功处理数量不变。
结合第一方面,或者第一方面第一种可能的实现方式,在第一方面第四种可能的实现方式中,所述将所述第一对象IO请求发送给所述存储设备客户端包括:获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小阈值;当所述第一对象IO请求的规格大于所述拆分大小阈值时,所述控制器将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;所述将所述第一对象IO请求发送给所述存储设备客户端具体为:所述控制器向所述存储设备客户端发送第一子对象IO请求;启动休眠时间,并在所述休眠时间结束之后向所述存储设备客户端发送第二子对象IO请求;返回执行启动所述休眠时间的步骤,直至将所述多条子对象IO请求发送给所述存储设备客户端。
结合第一方面第四种可能的实现方式,在第一方面第五种可能的实现方式中,所述控制器向所述存储设备客户端发送第一子对象IO请求之后,还包括;接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;更新已发送数量,所述已发送数量为所述控制器向所述存储设备客户端发送的对象IO请求的已发送数量;若所述处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述处理结果表示终结的失败处理,维持成功处理数量不变;返回执行接收所述存储设备客户端返回的响应消息的步骤,直至接收到所述多条子对象IO请求的处理结果。
结合第一方面第三种可能的实现方式或者第一方面第五种可能的实现方式,在第一方面第六种可能的实现方式中,所述根据所述所述存储设备客户端对接收到的对象IO请求的处理结果调整所述处理数量阈值,包括:所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;将所述处理成功率作为第一调整系数调整所述处理数量阈值。
结合第一方面第六种可能的实现方式,在第一方面第七种可能的实现方式中,所述方法还包括;根据第二调整系数,调整根据所述第一调整系数调整后的数量阈值;其中,所述第二调整系数的取值与所述第一调整系数成正比。
结合第一方面第六种可能的实现方式或者第一方面第七种可能的实现方式,在第一方面第八种可能的实现方式中,所述控制器设置有所述处理数量阈值的上限值和下限值,所述方法还包括:根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
结合第一方面第三种可能的实现方式或者第一方面第五种可能的实现方式,在第一方面第九种可能的实现方式中,所述方法还包括:
所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;将所述处理成功率作为第一调整系数调整所述休眠时间。
结合第一方面第九种可能的实现方式,在第一方面第十种可能的实现方式中,所述方法还包括:根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
结合第一方面第九种可能的实现方式或者第一方面第十种可能的实现方式,在第一方面第十一种可能的实现方式中,所述控制器设置有所述休眠时间的上限值和下限值,所述方法还包括:根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
结合第一方面,或者结合第一方面任一种可能的实现方式,在第一方面第十二种可能的实现方式中,所述方法还包括,
所述控制器向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;更新所述待处理数量。
本发明实施例第二方面提供一种对象存储系统中的业务流控制方法,所述对象存储系统中包括控制器和存储设备客户端,所述方法包括:所述控制器接收第一对象IO请求;获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小;当所述第一对象IO请求的规格大于所述拆分大小阈值时,所述控制器将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;向所述存储设备客户端发送第一子对象IO请求,并启动休眠时间;接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间。
结合第二方面,在第二方面第一种可能的实现方式中,启动休眠时间之后还包括:所述休眠时间结束之后,向所述存储设备客户端发送第二子对象IO请求;返回执行启动所述休眠时间的步骤,直接将所述多条子对象IO请求发送给所述存储设备客户端。
结合第二方面,或者第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,接收所述第一子对象IO请求的响应消息之后,还包括:更新已发送数量,所述已发送数量为所述控制器向所述存储设备客户端发送的对象IO请求的已发送数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变;返回执行接收所述存储设备客户端返回响应消息的步骤,直至接收到所述多条子对象IO请求的处理结果。
结合第二方面,第二方面第一种可能的实现方式,或者第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;将所述处理成功率作为第一调整系数调整所述休眠时间。
结合第二方面第三种可能的实现方式,在第二方面第四种可能的实现方式中,所述方法还包括:
根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
结合第二方面第三种可能的实现方式,或者第二方面第四种可能的实现方式,在第二方面第五种可能的实现方式中,所述控制器设置有所述休眠时间的上限值和下限值,所述方法还包括:根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和所述下限值之间。
本发明实施例第三方面提供一种在对象存储系统中实现业务流控制的控制器,所述控制器包括存储模块701、处理模块702、接收模块703和发送模块704;所述接收模块703用于接收第一对象IO请求,并发送给所述处理模块702;所述处理模块702接收到所述第一对象IO请求之后,从所述存储模块701中获取处理数量阈值和待处理数量,其中,所述处理数量阈值为所述对象存储系统可处理的对象IO请求的数量阈值,所述待处理数量为所述对象存储系统中待处理的对象IO请求的数量;若所述待处理数量小于所述处理数量阈值,所述处理模块702还用于将所述第一对象IO请求发送给所述发送模块704,并更新存储模块701中的所述待处理数量;所述发送模块704还用于将所述第一对象IO请求发送给存储设备客户端;接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息,所述第一响应消息中携带所述第一对象IO请求的处理结果;并将所述第一响应消息发送给所述处理模块702;所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述存储模块701中的所述处理数量阈值。
结合第三方面,在第三方面第一种可能的实现方式中,若所述待处理数量大于或等于所述处理数量阈值,所述处理模块702还用于向所述第一对象IO请求的请求方返回拒绝响应消息或者繁忙响应消息。
结合第三方面,或者第三方面第一种可能的实现方式,在第三方面第二种可能的实现方式中,所述处理模块702还用于将所述第一对象IO请求发送给所述发送模块704之后,启动休眠时间,并在所述休眠时间结束后向所述发送模块704发送第二对象IO请求。
结合第三方面,第三方面第一种可能的实现方式或者第三方面第二种可能的实现方式,在第三方面第三种可能的实现方式中,所述处理模块702还用于:在接收到所述第一响应消息之后更新所述存储模块704中的已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;若所述第一响应消息携带的处理结果表示处理成功,更新所述存储模块704中的成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量。
结合第三方面,或者第三方面第一种可能的实现方式,在第三方面第四种可能的实现方式中,所述处理模块702还用于,当所述第一对象IO请求大于拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识,其中,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小阈值;将拆分后的第一子对象IO请求通过所述发送模块704发送给存储设备客户端;启动休眠时间,并在所述休眠时间结束之后通过所述发送模块704发送第二子对象IO请求。
结合第三方面第四种可能的实现方式,在第三方面第五种可能的实现方式中,所述接收模块704接收存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;并将所述响应消息发送给所述处理模块702;所述处理模块702还用于,接收第一子对象IO请求的处理结果,更新已发送数量;所述已发送数量为向存储设备客户端发送的对象IO请求的已发送数量;若所述处理结果表示处理成功,所述处理模块702还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求处理成功的数量。
结合第三方面第三种可能的实现方式或者第三方面第五种可能的实现方式,在第三方面第六种可能的实现方式中,所述处理模块702在满足预定的条件时根据接收到的对象IO请求的处理结果调整所述存储模块701中的所述处理数量阈值具体为:处理模块702按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值计算对象IO请求的处理成功率,将所述处理成功率作为第一调整系数调整所述处理数量阈值。
结合第三方面第六种可能的实现方式,在第三方面第七种可能的实现方式中,
所述处理模块702还用于根据第二调整系数,调整根据所述第一调整系数调整后的数量阈值,其中,所述第二调整系数的取值与所述第一调整系数成正比。
结合第三方面第六种可能的实现方式或者第三方面第七种可能的实现方式,在第三方面第八种可能的实现方式中,
所述存储模块701中还存储有所述数量阈值的上限值和下限值;所述处理模块702还用于根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
结合第三方面第三种可能的实现方式或者第三方面第五种可能的实现方式,在第三方面第九种可能的实现方式中,所述处理模块702还用于按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
结合第三方面第九种可能的实现方式,在第三方面第十种可能的实现方式中,所述处理模块702还用于根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
结合第三方面第九种可能的实现方式,或者第三方面第十种可能的实现方式,在第三方面第十一种可能的实现方式中,
所述存储模块701中还存储有所述休眠时间的上限值和下限值;
所述处理模块702还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
结合第三方面,或者结合第三方面任一种可能的实现方式,在第三方面第十二种可能的实现方式中,所述处理模块702还用于通过所述接收模块703向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;并更新所述待处理数量。
本发明实施例第四方面提供一种在对象存储系统中实现业务流控制的控制器,所述控制器包括存储模块701、处理模块702、接收模块703和发送模块704;所述接收模块703用于接收第一对象IO请求,并发送给所述处理模块702;所述处理模块702用于接收到所述第一对象IO请求后,从所述存储模块701中获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小;所述处理模块702还用于当所述第一对象IO请求的规格大于所述拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;向发送模块704发送第一子对象IO请求,并启动休眠时间;所述发送模块704还用于将所述第一子对象IO请求发送给与所述控制器连接的存储设备客户端;接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;将所述第一子对象IO请求的响应消息发送给所述处理模块702;所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间。
结合第四方面,在第四方面第一种可能的实现方式中,所述处理模块702还用于,启动休眠时间后,待所述休眠时间结束后,通过所述发送模块向存储设备客户端发送第二子对象IO请求;返返回执行启动所述休眠时间的步骤,直接将所述多条子对象IO请求发送给所述存储设备客户端。
结合第四方面,或者第四方面第一种可能的实现方式,在第四方面第二种可能的实现方式中,所述处理模块702还用于,接收所述第一子对象IO请求的响应消息之后,更新已发送数量,所述已发送数量为所述处理模块702通过所述发送模块704向所述存储设备客户端发送的对象IO请求的已发送数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示处理成功,所述处理模块702还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变。
结合第四方面,第四方面第一种可能的实现方式,或者第四方面第二种可能的实现方式,在第四方面第三种可能的实现方式中,所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:所述处理模块702按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
结合第四方面第三种可能的实现方式,在第四方面第四种可能的实现方式中,所述处理模块702还用于根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
结合第四方面第三种可能的实现方式,或者第四方面第四种可能的实现方式,在第四方面第五种可能的实现方式中,所述存储模块701中还存储有所述休眠时间的上限值和下限值;所述处理模块702还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
本发明实施例第五方面提供一种对象存储系统实现业务流控制的设备,包括如权利要求20-39任一所述的控制器。
本发明实施例第六方面提供一种可实现业务流控制的系统,包括如权利要求20-39任一所述的控制器、存储设备客户端和至少两个存储设备;所述控制器与所述存储设备客户端相连,所述存储设备客户端与所述至少两个存储设备相连。
本发明实施例考虑到在业务高峰期,对象存储系统接收大量的对象IO请求而造成对象存储系统处理对象IO请求的性能和成功率低的情况,提出在对象存储系统的处理器中增加对象存储系统能够处理的对象IO请求数量的阈值,即处理数量阈值,并根据对象IO请求的处理结果对所述处理数量阈值进行相应的调整,从而控制对象存储系统接收的对象IO请求的数量以及向对象存储系统中的存储设备发送对象IO请求的数量,这样可以确认存储设备接收的对象IO请求不超过其处理能力和缓存能力,使得存储设备的资源都使用在对象IO请求的有效处理中,从而提高对象存储系统处理对象IO请求的性能和成功率。
本发明实施例还提出在对象存储系统的处理器中增加休眠时间,并根据对象IO请求的处理结果对所述休眠时间进行相应的调整,从而控制向对象存储系统中的存储设备发送对象IO请求的时间间隔,从而控制存储设备需要处理的对象IO请求,使得存储设备接收到的对象IO请求不超过期处理能力和缓存能力,使得存储设备的资源都使用在对象IO请求的有效处理中,从而提高对象存储系统处理对象IO请求的性能和成功率。
附图说明
图1为对象存储系统的系统架构示意图;
图2-1为对象存储系统中一种业务流控制的方法流程;
图2-2为对象存储系统中另一种业务流控制的方法流程;
图2-3为对象存储系统中又一种业务流控制的方法流程;
图3为对象存储系统中又一种业务流控制的方法流程;
图4为对象存储系统中又一种业务流控制的方法流程;
图5为对象存储系统的系统架构的另一示意图;
图6为对象存储系统中又一种业务流控制的方法流程;
图7为对象存储系统中实现业务流控制的控制器的结构示意图;
图8为对象存储系统中实现业务流控制的业务流控制设备的结构示意图;
图9为能实现业务流控制的对象存储系统的示意图。
具体实施方式
本发明提供一种对象存储系统中的业务流控制的方法、控制器和系统。对象存储系统中的控制器根据存储设备对对象IO请求的处理情况,调整对象存储系统能够处理的对象IO请求数量的阈值,即处理数量阈值,实现对接收到的对象IO请求的数量进行控制,使得发送给存储设备处理的对象IO请求的数量不超过存储设备的处理能力和缓存能力,确保了存储设备的处理能力,从而提高了对象存储系统对对象IO请求的处理的成功率和及时性。
下面将结合各个附图对本发明技术方案的实现方法、具体实施方式及其对应能够达到的有益效果进行详细的阐述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明实施例的对象存储系统的结构示意图如附图1所示。如附图1所示,控制器101与存储设备盘客户端103相连,存储设备盘客户端103与存储设备集群104中的多个存储设备相连。控制器101还可以与外部客户端连接,外部客户端还可以连接其他的设备。其中,控制器101与存储设备客户端103可以部署在一个服务器中,也可以分别部署在两个服务器中,服务器可以是HTTP(Hyper Text Transfer Protocol)服务器,即使用HTTP协议的服务器。控制器101与存储设备客户端103之间一般为1:1的关系,即,一个控制器101对应一个存储设备客户端103。存储系统中还可以包括多组控制器与存储设备客户端(图1中未示出),各控制器通过对应的存储设备客户端分别与存储设备集群中的存储设备相连。存储设备集群由多个存储设备组成,多个存储设备通过一定的分布算法为各组控制器和存储设备客户端提供统一的名字空间和可扩展的存储空间。存储设备集群可以供多个存储设备客户端共享,供各组控制器和存储设备客户端各自独立进行业务控制和操作。在实际使用中,每组控制器和存储设备客户端可以只与存储设备集群中的部份存储设备相连。
在本发明实施例中,以一组控制器和存储设备客户端为例进行说明。并且控制器101与存储设备客户端103部署在一个HTTP服务器中。
在本发明实施例中,存储设备为IP盘,存储设备客户端为IP盘客户端,IP盘客户端可以与多个IP盘相连。IP盘通过分布算法提供统一的名字空间和可扩展的海量存储空间。对象存储系统中的IP盘以Key-Value为基本访问单位,一次Key-Value操作为一个IO请求,为根据对象IO请求的属性等参数计算出来的值,每个key对应一个value,value为对象在IP盘上的存储位置及大小。存储设备也可以采用其他类型的智能盘,例如SSD盘,除了另外说明之外,其他类型的存储设备的实现原理与IP盘的实现原理相似。
对象存储系统中的业务流控制的方法流程如附图2-1所示。
步骤201:控制器接收第一对象IO请求。
用户通过客户端向控制器发送第一对象IO请求。在向控制器发送第一对象IO请求之前,客户端还可以先将控制器域名信息发送给域名服务器,域名服务器向客户端返回控制器的IP地址,然后客户端再根据接收到的IP地址,将第一对象IO请求发送给对应的控制器。
步骤203:控制器获取处理数量阈值和待处理数量;其中,处理数量阈值是指所述对象存储系统可处理的对象IO请求的数量阈值,所述待处理数量为所述对象存储系统中待处理的对象IO请求的数量。
控制器中存储有对象存储系统可以处理的对象IO请求的数量的最大值,即所述处理数量阈值。控制器中还记录有所述对象存储系统中待处理的对象IO请求的数量,即所述待处理数量。对象存储系统中的对象IO请求的待处理数量的值随着对象IO请求的处理情况而变化。在本发明实施例中,所述处理数量阈值可由所述控制器根据对象IO请求的处理结果进行动态的调整,确保所述处理数量阈值为所述对象存储系统在目前的状态下可处理的对象IO请求的最大值。
步骤205:若所述待处理数量小于所述处理数量阈值,控制器将所述第一对象IO请求发送给存储设备客户端,并更新所述待处理数量。
比较所述待处理数量和所述处理数量阈值的大小,当所述待处理数量小于所述处理数量阈值时,说明所述对象存储系统处理对象IO请求的能力还没有达到最高,还可以处理更多的对象IO请求,因此控制器将接收到的第一对象IO请求发送给存储设备客户端。此时,所述对象存储系统中待处理的对象IO请求的数量增加,所述待处理数量需要更新。在实际操作中,控制器发送第一对象IO请求给存储设备客户端与更新所述待处理数量之间没有严格的先后顺序。控制器可以先发送第一对象IO请求给存储设备客户端之后再更新所述待处理数量;也可以先更新所述待处理数量再发送第一对象IO请求给存储设备客户端。
所述待处理数量可以使用记数器来进行记录,当更新所述待处理数量时,将记数器加1。当然,所述待处理数量也可以采用其他的记录和更新方式,例如所述待处理数量还可以采用倒数的方式来统计。在此不再一一举例说明。
在实际的应用中,控制器可以先将所述待处理数量N加1,再将第一对象IO请求发送给存储设备客户端;也可以先将第一对象IO请求发送给存储设备客户端,再将所述待处理数量N加1。这两个操作没有严格的顺序限制。
存储设备客户端将第一对象IO请求发送给对应的存储设备处理。存储设备客户端接收到第一对象IO请求后,为接收到的第一对象IO请求分配一个接口,该接口确定第一对象IO请求对应的存储设备的信息。存储设备客户端根据确定的存储设备的信息将第一对象IO请求发送给存储设备。存储设备将接收到对象IO请求排列成一个队列,依次进行处理。第一对象IO请求处理完成后,存储设备向存储设备客户端返回第一对象IO请求的响应消息,响应消息中携带第一对象IO请求的处理结果信息。
对于处理成功的对象IO请求,存储设备向存储设备客户端返回携带处理成功信息的响应消息,并开始处理队列中的下一个对象IO请求。出现不能及时处理的对象IO请求时,存储设备会向存储设备客户端返回过载响应消息。对于因为某种原因,例如:设备故障或信号丢失等,而没有处理成功的对象IO请求,存储设备会向存储设备客户端返回携带处理失败信息的响应消息。存储设备客户端接收到处理失败的响应消息之后,可以将处理失败的对象IO请求重新发送给存储设备处理,直到发送一定的次数或者对象IO请求的处理已经超过预定的时间期限。如果存储设备客户端在预定的时间到达时仍未收到响应消息时,存储设备客户端也可以将对象IO请求再次发送给存储设备处理。当尝试一定的次数之后,对象IO仍然没有处理成功,此时响应消息中携带的是表示终结的失败处理的处理结果。尝试的次数由对象存储系统根据业务需要设定。
步骤207:控制器接收存储设备客户端返回的第一对象IO请求的响应消息,所述响应消息中携带所述第一对象IO请求处理失败或者成功的处理结果。
存储设备客户端接收存储设备返回的第一对象IO请求的响应消息,所述响应消息中携带有所述第一对象IO请求处理失败或者处理成功的处理的结果,存储设备客户端再将接收到的响应消息返回给控制器。
控制器接收到存储设备客户端返回的所述第一对象IO请求的响应消息后,将所述响应消息返回给所述第一对象IO请求的请求方,并更新所述待处理数量。对所述待处理数量的更新需要与将对象IO请求发送给存储设备客户端时待处理数量的更新方法要一致。例如,当控制器向存储设备客户端发送一条对象IO请求后,将所述待处理数量加1。那么,当控制器向对象IO请求的请求方返回一条响应消息时,将所述待处理数量减1。
所述待处理数量还可以在控制器接收到存储设备客户端返回第一对象IO请求的响应消息时进行更新。也就是说,控制器接收到存储设备客户端返回的一条对象IO请求的响应消息时,更新所述待处理数量,例如,将所述待处理数量减1。这样,通过待处理数量的增加或减少,可以准确的记录在对象存储系统中待处理的对象IO请求的数量。
当接收到新的对象IO请求时,控制器将待处理数量的当前值与处理数量阈值的当前值进行比较,并根据比较结果来确定是否接受该对象IO请求。当待处理数量的当前值大于或者等于所述处理数量阈值的当前值时,说明对象存储系统无法处理新的对象IO请求,如果再接受新的对象IO请求并通过存储设备客户端发送给存储设备处理,会让存储设备分出额外的性能回复系统繁忙的响应消息,从而影响正在处理的对象IO请求,导致对象IO请求的时延增加,失败率增加,最终导致存储设备的性能下降。因此,当待处理数量的当前值大于或者等于所述处理数量阈值的当前值时,控制器直接向对象IO请求的请求方返回拒绝的响应消息或者繁忙的响应消息并丢弃该条对象IO请求。
步骤209:满足预定的条件时,控制器根据接收到的对象IO请求的处理结果调整所述处理数量阈值。
所述预定的条件可以是预定的时间周期,也可以是预定的待处理数量的值,还可以是预定的待处理数量与处理数量阈值之间的差值。当满足预定的条件时,例如,到达预定的时间周期时,控制器根据接收到的对象IO请求的处理结果调整所述处理数量阈值的取值。这里的对象IO请求的处理结果可以是控制器接收到的所有的对象IO请求的处理结果,也可以是控制器在本时间周期内接收到的对象IO请求的处理结果。当时间周期到达后,控制器可以将接收到的对象IO请求结果全部清除重新接收,也可以保留所有的对象IO请求的处理结果,在本发明实施例中不做限定。
需要说明的是,在满足预定的条件时,已发送的对象IO请求不一定都接收到了响应消息。也就是说,第一对象IO请求是否已经接收到响应消息,不影响控制器根据接收到的响应消息中携带的对象IO请求的处理结果调整处理数量阈值。因此,步骤207与步骤209没有严格的先后顺序。
存储设备能处理和缓存的对象IO请求的数量是有限的,在业务高峰期,每个存储设备需要处理的IO请求数量多,当对象IO请求的下发速度超过存储设备的处理和缓存能力时,一些对象IO请求就会无法被处理。对于无法及时处理的对象IO请求,存储设备向存储设备客户端反馈过载响应消息,而存储设备客户端会尝试重试而再次将对象IO请求发送到存储设备。而反馈过载响应消息将占用存储设备较多的磁盘资源。这样,存储设备处理对象IO请求的性能降低,队列中的对象IO请求的等待时间增加。如此循环,存储设备的处理性能下降,对象IO请求等待的时间增加,对象IO请求无法得到及时处理,对象IO请求失败率增加。
在本发明实施例中,在控制器处对发送给存储设备客户端的对象IO请求的数量进行控制。处理数量阈值表示所述对象存储系统能够处理的对象IO请求最大值,也就是对象存储系统中各个存储设备能够处理的对象IO请求的数量的最大值。根据存储设备的资源的占用情况,存储设备能够处理的对象IO请求的数量是会变化的。因此,在本发明实施例中,控制器根据对象IO请求的处理情况对所述处理数量阈值的取值进行动态调整,并根据调整后的处理数量阈值,控制接收的对象IO请求的数量,即控制所述待处理数量的取值,使得待处理的对象IO请求的数量不超过对象存储系统的处理能力,让对象存储系统的资源都投入到对象IO请求的有效处理中,提高对象存储系统的处理性能和成功率,减少对象IO请求的处理时延。
在附图2-1所示的流程图的基础上,所述业务流控制方法还可以包括以下步骤,如附图2-2所示:
步骤202:控制器接收第二对象IO请求。步骤202与步骤201的实现方法相同,在此不再另行描述,附图2-2中亦不再另行标示。
步骤204:控制器获取处理数量阈值的当前值和待处理数量的当前值。步骤204与步骤202的实现方法相似。因为处理数量阈值会由控制器根据对象IO请求的处理结果动态调整,而且待处理数量也会根据接收到的对象IO请求的数量进行调整,因此,控制器在接收到对象IO请求之后,获取的是控制器中当前存储的待处理数量的值和处理数量阈值。在此不再另行详细描述,附图2-2中亦不再另行标示。
步骤206:若所述待处理数量的当前值大于或者等于所述处理数量阈值的当前值时,控制器返回拒绝响应消息或者繁忙响应消息。
控制器获取到处理数量阈值的当前值和待处理数量的当前值之后,比较两个值的大小,当所述待处理数量的当前值小于所述处理数量阈值时,执行步骤205及后续描述的方法,在此不再另行说明。当所述待处理数量的当前值大于或者等于所述处理数量阈值的当前值时,说明待处理的对象IO请求的数量已经超过或者达到对象存储系统的处理能力,如果再接收新的对象IO请求,必须会对对象存储系统造成压力,对象存储系统需要分出资源来处理这些超载的对象IO请求,从而影响整个对象存储系统的性能,降低处理效率。因此,当所述待处理数量的当前值大于或者等于所述处理数量阈值时,控制器不再接受新的对象IO请求,控制器向发送所述第二对象IO请求的客户端返回拒绝响应消息或者繁忙响应消息。同时,控制器还可以丢弃所述第二对象IO请求。
当所述待处理数量的当前值大于或者等于所述处理数量阈值的当前值时,控制器不再接受新的对象IO请求,而是直接向发送对象IO请求的请求方返回拒绝响应消息或者繁忙响应消息,以此来控制通过存储设备客户端发送给存储设备处理的对象IO请求的数量,避免过多的对象IO请求发送给存储设备造成拥塞,以此提高对象存储系统处理对象IO请求的效率,降低对象IO请求的时延。
在对象存储系统中进行业务流控制方法的另一实现方式如附图2-3所示。在附图2和3所示的方法流程的基础上,增加了控制器向存储设备客户端发送对象IO请求的时间间隔。具体方法流程如下:
步骤211:控制器将第一对象IO请求发送给存储设备客户端之后启动休眠时间。休眠时间为控制器向存储设备客户端发送2条对象IO请求之间的时间间隔。控制器可以采用计时器来记录休眠时间,启动休眠时间可以为启动计时器。
步骤213:所述控制器接收第三对象IO请求,并获取处理数量阈值的当前值和待处理数量的当前值。步骤213与步骤201的实现方法相同,在此不再另行描述,亦不在附图2-3中示出。
所述步骤213与步骤211没有严格的时间顺序,也就是说,控制器可以在启动休眠时间之前接收第三对象IO请求,也可以是在启动休眠时间之后接收到第三对象IO请求。
步骤215:若所述待处理数量的当前值小于所述处理数量阈值的当前值,在所述休眠时间结束后,控制器向存储设备客户端发送所述第三对象IO请求,并更新所述待处理数量。
所述控制器将获取到的处理数量阈值的当前值和待处理数量的当前值进行比较,当所述待处理数量的当前值小于所述处理数量阈值的当前值时,表明对象存储系统还可以接受新的对象IO请求,控制器可以将接收到的第三对象IO请求发送给存储设备客户端处理。与前面两个方法流程不同的是,控制器在判断完所述待处理数量的当前值小于所述处理数量阈值的当前值之后,不是立刻将第三对象IO请求发送给存储设备客户端,而是需要等待休眠时间结束后再将第三对象IO请求发送给存储设备客户端。也就是说,控制器在将第一对象IO请求发送给存储设备客户端之后,需要等待一定的时间间隔(即休眠时间)之后,才发送第三对象IO请求给存储设备客户端,由存储设备客户端发送给相应的存储设备处理。
这样,可以调节发送给存储设备的对象IO请求的时间,让存储设备可以有更多的时间来处理对象IO请求,避免对象IO请求在存储设备处形成拥塞,确保存储设备的资源都用来处理对象IO请求,提高整个对象存储系统处理对象IO请求的效率。
所述待处理数量的更新方式和时机与前述实施例中描述的方式相同,在此不再另行说明。
休眠时间可能采用计时器进行记录,既可以采用计时的方式记录需要间隔的时间,也可以采用倒计时的方式记录需要间隔的时间。
步骤217:满足预定的条件时,控制器根据接收到的对象IO请求的处理结果调整所述休眠时间。
所述预定的条件可以是预定的时间周期,也可以是预定的休眠时间的值。当满足预定的条件时,例如,到达预定的时间周期时,控制器根据接收到的对象IO请求的处理结果调整所述休眠时间的取值。这里的对象IO请求的处理结果可以是控制器接收到的所有的对象IO请求的处理结果,也可以是控制器在本时间周期内接收到的对象IO请求的处理结果。当时间周期到达后,控制器可以将接收到的对象IO请求结果全部清除重新接收,也可以保留所有的对象IO请求的处理结果,在本发明实施例中不做限定。
由于在满足预定的条件时,已发送的对象IO请求不一定都接收到了响应消息,也就是,已发送的对象IO请求是否接收到响应消息,不影响控制器根据已经接收到的响应消息调整休眠时间。所以这里不再单独描述接收第三对象IO请求的响应消息的步骤。
在本发明实施例中,休眠时间可以由控制器通过接收到的对象IO请求的处理结果进行调整。这样,控制器可以通过控制将对象IO请求发送给存储设备处理的时间间隔控制发送给存储设备处理的对象IO请求的数量,确保发送给存储设备处理的对象IO请求的数量不超过存储设备的处理能力,防止存储设备处对象IO请求的拥塞,提高对象存储系统中对象IO请求的处理效率,减小对象IO请求的时延。
为实现控制器通过接收到的对象IO请求的处理结果对前述的处理数量阈值或休眠时间进行动态的调整,控制器需要对对象IO请求的处理结果进行统计和分析。在本发明实施例中,控制器通过对象IO请求的处理成功率对处理数量阈值或休眠时间进行动态的调整。可以理解的是,控制器也可以根据对象IO请求的处理失败率对处理数量阈值或者休眠时间进行动态的调整,控制器还可以在对象IO请求处理成功率或者处理失败率的基础上结合其他要素对处理数量阈值或者休眠时间进行动态的调整。
动态调整可以按照一定的时间规律进行调整,也可以是发送一定数量的对象IO请求给存储设备客户端之后进行调整。在本发明实施例中,以控制器周期性调整处理数量阈值或休眠时间为例进行说明。
要实现控制器通过接收到的对象IO请求的处理结果周期性的对处理数量阈值或者休眠时间的调整,控制器中需要记录已发送数量和成功处理数量。所述已发送数量记录的是控制器发送给存储设备客户端的对象IO请求的数量;所述成功处理数量记录的是控制器发送给存储设备客户端的对象IO请求中处理成功的对象IO请求的数量。已发送数量可以在控制器中设置一个计数器来记录;成功处理数量也可以在控制器中设置一个计数器来记录。
所述已发送数量的更新方式有两种。一种是当控制器向存储设备客户端发送一条对象IO请求之后更新所述已发送数量,例如,将当前记录的已发送数量加1。另外一种方式是当控制器向存储设备客户端发送一条对象IO请求后,收到存储设备客户端返回的该条对象IO请求的响应消息之后再更新所述已发送数量,例如,将当前记录的已发送数量加1。在第二种方式中,不管返回的响应消息是处理成功的响应消息,还是处理失败的响应消息,只要接收到一条响应消息,就需要将当前记录的已发送数量加1。
后一种更新方式具体如下,控制器将一条对象IO请求发送给存储设备客户端之后,存储设备客户端将接收到的对象IO请求发送给存储设备处理。存储设备向存储设备客户端返回响应消息,所述响应消息中携带了该条对象IO请求的处理结果,例如,处理失败或处理成功,存储设备客户端再将响应消息返回给控制器,控制器接收到响应消息之后更新当前记录的已发送数量,例如,将当前记录的已发送数量加1。
成功处理数量的更新方式为,控制器接收到存储设备客户端返回的对象IO请求的响应消息时,如果响应消息中携带的处理结果为处理成功,则更新所述成功处理数量,例如,将当前记录的成功处理数量加1。
当到达预定的时间周期时,控制器获取已发送数量的当前值和成功处理数量的当前值,计算对象IO请求的处理成功率,并根据计算得到的处理成功率作为第一调整系数调整处理数量阈值或者休眠时间。处理成功率可以为:成功率=成功处理数量的当前值/已发送数量的当前值*100%。
经过不断观察和实验,发明人发现,对象存储系统对对象IO请求的处理能力会随着已发送数量和成功率的不同而不同,因此,本发明实施例提出根据另一调整系数对根据成功率调整得到的处理数量阈值或者休眠时间进行调整。对于处理数量阈值,调整系数与处理成功率成正比。对于休眠时间,调整系数与处理成功率成反比。为了更清楚的说明各系数之间的关系,将处理成功率称之为第一调整系数;将调整处理数量阈值的调整系数称之为第二调整系数;将调整休眠时间的调整系数称之为第三调整系数。第二调整系数为常数,其取值与第一调整系数成正比,即当第一调整系数的值越大时,第二调整系数的取值亦越大。第三调整系数为常数,其取值与第一调整系数成反正,即当第一调整系数的值越大时,第二调整系数的取值越小。
另外,对象存储系统能够处理的对象IO请求的数量是会有限制的,不可能无限制的增加或者减少,因此,还可以在控制器中预先设定处理数量阈值的上限值和下限值。所述处理数量阈值的上限值为所述对象存储系统能够处理的对象IO请求的最大数量;所述处理数量阈值的下限值为所述对象存储系统能够处理的对象IO请求的最小数量。当控制器根据第一调整系数或者第一调整系数和第二调整系数计算出的处理数量阈值不在所述处理数量阈值的上限值和下限值之间时,需要对计算出的处理数量阈值进行修正。例如,如果控制器根据第一调整系数或者第一调整系数和第二调整系数计算出来的处理数量阈值大于所述处理数量阈值的上限值时,则调整得到的处理数量阈值等于所述处理数量阈值的上限值。如果控制器根据第一调整系数或者第一调整系数和第二调整系数计算出来的处理数量阈值小于所述处理数量阈值的下限值时,则调整得到的处理数量阈值等于所述处理数量阈值的下限值。
同样的,对象存储系统的休眠时间亦需要有限制。因此,在控制器中还可以预先设定休眠时间的上限值和下限值。控制器根据第一调整系数或者第一调整系数和第三调整系数调整得到的休眠时间需要在预定的休眠时间的上限值和下限值之间。如果控制器根据第一调整系数或者第一调整系数和第三调整系数计算出的休眠时间不在所述预定的休眠时间的上限值和下限值之间时,则需要根据所述休眠时间的上限值和下限值对计算出的休眠时间进行修正。例如,如果控制器根据第一调整系数或者第一调整系数和第三调整系数计算出的休眠时间大于所述设定的休眠时间的上限值,则调整得到的休眠时间等于所述休眠时间的上限值;如果控制器根据第一调整系数或者第一调整系数和第三调整系数计算出的休眠时间小于所述设定的休眠时间的下限值,则调整得到的休眠时间等于所述休眠时间的下限值。
下面以具体的例子来说明如何按预定的时间周期对处理数量阈值和休眠时间进行调整。
本方法实施例中,时间周期预先设定为1分钟,存储在控制器中。本技术领域人员可以理解的是,时间周期可以根据需要设定为其他值,比如将时间周期设定为30秒。时间周期可以在控制器中设定一计时器来进行记录,到达预定的时间周期时,触发控制器获取当前的已发送数量和成功处理数量,对处理数量阈值和/或休眠时间进行调整。也就是说,在本发明实施例中,控制器每隔一分钟调整一次处理数量阈值和/或休眠时间。
首先,举例说明按预定的时间周期调整处理数量阈值的方法。
M=M1×r1×μm,其中,M为调整得到的新的处理数量阈值,M1为处理数量阈值的当前值,r1为第一调整系数的当前值,μm为第二调整系数相对于第一调整系数的取值。μm与r成正比,即第一调整系数r越大,第二调整系数μ越大,第一调整系数r越小,第二调整系数μ越小。其中,r1为成功处理数量的当前值与已发送数量的当前值的比值:r1=(p1/q1)×100%,p1为成功处理数量的当前值,q1为已发送数量的当前值。
本实施例中用一分段函数来对处理数量阈值进行调整,计算公式如下:
M=MMin(r1<0.2);
M=M1×r1×0.6(0.2<=r1<0.6);
M=M1×r1×0.8(0.6<=r1<0.8);
M=M1×r1×1.0(0.8<=r1<0.95);
M=M1×r1×1.1(M1<MMax,r1>=0.95);
M=MMax(M1=MMax,r1>=0.95)。
其中,MMin为所述处理数量阈值的下限值,MMax为所述处理数量阈值的上限值,所述处理数量阈值的上限值和下限值预先设定。在业务开始之前,M的初始值设置为M=MMax,r1的初始值设置为100%,随着业务的进行,到达预定的时间周期时,控制器根据当前的r1的取值选择对应的公式进行计算调整得到新的处理数量阈值的值。
下面将举例说明按预定的时间周期调整休眠时间的方法。
t=(t1+常数)/r1×μt,其中,t为调整得到的新的休眠时间,t1为休眠时间的当前值,r1为第一调整系数的当前值,μt为第三调整系数相对于第一调整系数的取值。μt与r反比,即第一调整系数r越大,第三调整系数μt越小,第一调整系数r越小,第三调整系数μt越大。其中,r1为成功处理数量的当前值与已发送数量的当前值的比值:r1=(p1/q1)×100%,p1为成功处理数量的当前值,q1为已发送数量的当前值。
本实施例中用一分段函数来对休眠时间进行调整,计算公式如下:
t=tMaxDelay(r1<0.2);
t=(t1+15)/r1×1.6(0.2<=r1<0.6);
t=(t1+15)/r1×1.4(0.6<=r1<0.8);
t=(t1+15)/r1×1.0(0.8<=r1<0.95);
t=(t1+0)/r1×0.9(t1>=tThreshold,r1>=0.95);
t=tMinDelay(t1<tThreshold,r1>=0.95)。
其中,tMinDelay为所述休眠时间的下限值,tMaxDelay为所述休眠时间的上限值,所述休眠时间的上限值和下限值预先设定。在本实施例中,所述休眠时间的下限值设定为0,休眠时间的单位为毫秒。
每个对象IO请求的大小不同,通常来说,控制器中会预先设置对象IO请求的拆分大小阈值,并将大于该拆分大小阈值的对象IO请求称之为大对象IO请求,将小于所述拆分大小阈值的对象IO请求称之为小对象IO请求。所述拆分大小阈值是指对象存储系统可处理的对象IO请求的大小。当控制器接受的对象IO请求大于所述拆分大小阈值时,即接受的对象IO请求为大对象IO请求时,控制器会将该大对象IO请求拆分为多个子对象IO请求,拆分出的子对象IO请求均不大于所述拆分大小阈值并且携带相同的标识,所述相同的标识用来表明这几个子对象IO请求是由同一个大对象IO请求拆分而来的。一般来说,控制器会根据所述拆分大小阈值来将大对象IO请求进行拆分。
举例来说,预先设置的对象IO请求的拆分大小阈值为1兆(M)。当控制器接受的第一对象IO请求为4.5M时,所述第一对象IO请求为大对象IO请求,控制器会根据所述拆分大小阈值将第一对象IO请求拆分为多个子对象IO请求。在本方法实施例中,控制器以1M为单位将第一对象IO请求拆分为5个子对象IO请求,这5个子对象及其大小可以分别为:第一子对象IO请求,1M;第二子对象IO请求,1M;第三子对象IO请求,1M;第四子对象IO请求,1M;第五子对象IO请求,0.5M;并且这5个子对象IO请求中会携带相同的标识。
以前述的第一对象IO请求为大对象IO请求(即所述第一对象IO请求的大小大于所述拆分大小阈值)为例来说明控制器对大对象IO请求的处理方式,其流程如附图3中所示。大对象IO请求的处理方式有些与附图2-1或2-2以及相应的文字描述中的对象IO请求的处理方式相同,相同部份将说明并不再另外进行详细的描述。
步骤301:控制器接收第一对象IO请求,所述第一对象IO请求大于控制器中预先设置的拆分大小阈值;其中拆分大小阈值是指所述对象存储系统可处理的对象IO请求的大小。步骤301与步骤201相似,只是此时的第一对象IO请求为大对象IO请求。
步骤303:控制器获取处理数量阈值的当前值和待处理数量的当前值。步骤303与步骤203相似。
步骤305:控制器确认所述待处理数量的当前值小于所述处理数量阈值的当前值,控制器更新所述待处理数量,将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求均不大于所述拆分大小阈值,并且每个子对象IO请求都携带相同的标识。此时控制器更新所述待处理数量的方法与步骤205中描述的相同。
此处的更新所述待处理数量与将所述第一对象IO请求拆分为多个子对象IO请求之间没有顺序要求,可以先更新所述待处理数量再拆分第一对象IO请求,也可以先拆分第一对象IO请求再更新所述待处理数量,还可以两者同时进行。
需要说明的是,在步骤205中,控制器将第一对象IO请求发送给存储设备客户端时,所述待处理数量增加一个单位,即所述待处理数量加1。在本实施例中,所述第一对象IO请求会被拆分为多个子对象IO请求发送给存储设备客户端。这种情况下,所述待处理数量还是只增加一个单位,即所述待处理数量加1。所以待处理数量记录的是控制器接受的待处理的对象IO请求的数量,与将接受到的对象IO请求拆分为几条子对象IO请求没有关系。
当存储设备客户端为IP盘客户端、存储设备为IP盘时,IP盘客户端为携带有相同标识的IO请求分配同一个接口。也就是说,大IO写请求被拆分后的多个对象IO写请求,由IP盘客户端的一个接口来处理。所述接口计算分配的对象IO请求为的Key值,并根据Key值获取对应的IP盘的信息,将对象IO写请求发送给对应的IP盘处理。当一条IO请求被拆分为多条拆分后的IO请求之后,由于每一条拆分后的IO请求的KEY值都不相同,因此,拆分后的IO请求有可能发送给不同的IP盘处理。IP盘客户端可以并发处理,同时处理多个IO请求,将IO请求通过计算出来的KEY值发送给对应的IP盘。
小对象IO请求的元数据和数据可以分别存储,即元数据和数据使用不同的Key值;元数据和数据也可以一起存储,即元数据和数据共用一个Key值。元数据和数据一起存储时,元数据与数据的大小之和不能超过所述拆分大小阈值。当元数据和数据分开存储时,元数据的Key值为容器名加上对象名;数据的key值为根据数据随机生成的字符串。由于元数据和数据使用不同的Key值,因此元数据和数据可能存储在相同的IP盘上,也可以存储在不同的IP盘上。当元数据和数据一起存储时,元数据和数据共用一个Key值时,元数据和数据一起存储在同一个位置。元数据和数据一起存储时,只需要进行一次IO操作。如何将对象IO请求发送给对应的IP盘处理,可以采用现有的技术方案实现,在此不再详细说明。
步骤307:控制器将拆分出的第一子对象IO请求发送给存储设备客户端;启动休眠时间。
步骤309:在所述休眠时间结束之后,控制器向所述存储设备客户端发送第二子对象IO请求,依此循环,直至将拆分出的所述多条子对象IO请求发送完毕。
此步骤中的休眠时间与前述的休眠时间的性质相同,其调整方法亦相同,在此不再另行描述。
存储设备客户端和存储设备对接收到的子对象IO请求与接收到的对象IO请求的处理方式相同,并且可采用现有的实现方式,因此在此不再另行说明。存储设备处理完子对象IO请求之后,会向存储设备客户端返回相应的响应消息,存储设备客户端再将相应的响应消息返回给控制器。在响应消息中携带有对应的对象IO请求的处理结果。这些过程在前文已经有较详细的说明,在此不再赘述。
步骤311:控制器接收存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果。控制器还会接收拆分出的其他多条子对象IO请求的响应消息。
步骤313:在满足预定的条件时,控制器根据已接收到的对象IO请求(包括子对象IO请求)的处理结果调整所述处理数量阈值。
步骤313中的方法与步骤209中描述的方法相同,在此不再赘述。另外,同样的,步骤313与步骤311之间没有严格的时间顺序,也就是说控制器是否接收到第一子对象IO请求或者其他子对象IO请求的响应消息,并不影响控制器根据已经接收到手对象IO请求(包括子对象IO请求)的处理结果来调整所述处理数量阈值
需要说明的是,大对象IO请求的拆分会对控制器中记录的已发送数量和成功处理数量产生影响。所述已发送数量记录的是控制器发送给存储设备客户端的对象IO请求数量,所述成功处理数量记录的是控制器发送给存储设备客户端的对象IO请求中处理成功的对象IO请求的数量。因此,在对大对象IO请求进行拆分的情况下,控制器发送给存储设备客户端的对象IO请求不再是一条,而是多条拆分后的子对象IO请求。也就是说,所述已发送数量记录的是控制器实际上发送给存储设备客户端的对象IO请求的数量,不管是没有拆分的对象IO请求,还是拆分了的子对象IO请求,同样的,所述成功处理数量记录的是控制器发送验存储设备客户端的对象IO请求的数量,包括没有拆分的对象IO请求,和拆分后的子对象IO请求。
因此,在控制器向存储设备客户端发送第一子对象IO请求之后,更新所述已发送数量,例如将所述已发送数量加1。当控制器接收到所述第一子对象IO请求的响应消息时,如果所述第一子对象IO请求的响应消息中携带的为处理成功的处理结果时,控制器还需要更新所述成功处理数量,例如将所述成功处理数量加1。若所述第一子对象IO请求的响应消息中携带的为处理失败的处理结果时,控制器不更新所述成功处理数量,即所述成功处理数量不变。
同样的,在控制器向存储设备发送第二子对象IO请求之后,将所述已发送数量加1。在控制器接收到存储设备客户端返回的所述第二子对象IO请求的响应消息后,如果所述第二子对象IO请求的响应消息中携带的为处理成功的处理结果时,控制器将所述成功处理数量加1。可选的,控制器还可以在向存储设备客户端发送第一子对象IO请求后,接收到所述第一子对象IO请求的响应消息后,再更新所述已发送数量,例如将所述已发送数量加1。此时,还需要根据所述第一子对象IO请求的响应消息中的处理结果来确定是否需要更新所述成功处理数量,具体方式与前文所述方式相同,在此不再说明。同样的,控制器在接收到发送的第二子对象IO请求的响应消息后,将所述已发送数量加1,再根据所述第二子对象IO请求的响应确定是否更新所述成功处理数量。
在大对象IO请求拆分的情况下,对所述处理数量阈值和待处理数量的调整方式与前述的方式相同,只是具体的已发送数量和成功处理数量的计数不同,在此不再另行说明。
需要说明的是,如果大对象IO请求拆分出来的多条子对象IO请求中,只要任一子对象IO请求的处理结果为处理失败,则所述大对象IO请求处理失败。这时,控制器需要向该大对象IO请求的请求方返回处理失败的响应消息,并且通知存储设备客户端将已经写入存储设备的所述大对象IO写请求拆分出来的其他小对象IO删除。控制器在接收到任一子对象IO请求处理失败的响应消息时,还可以再该处理失败的子对象IO请求发送给存储设备客户端,在尝试一定的次数或者时间之后,则接收到的响应消息为最终结果。
另外,大对象IO请求还可以在客户端中拆分后再发送给控制器进行相应的处理。在这种情况下,对象IO请求的拆分大小阈值预先设置在客户端中,客户端根据所述拆分大小阈值将大对象IO请求拆分后再依次发送给控制器。对于控制器来讲,接收到的是客户端拆分后的子对象IO请求,还是没有拆分的对象IO请求,其处理方式都是一样的,与附图2、3和4以及相应的文字描述中的处理方式相同,在些不再另行说明。
如上所述,在控制器将接收到的大对象IO请求拆分为多个子对象IO请求的情况下,控制器也可以根据对象IO或者子对象IO请求的处理结果,按一定的规则动态调整所述处理数量阈值和所述待处理数量,以控制对象存储系统接受的对象IO请求的数量,从而确保控制器接受的对象IO请求数量不超过对象IO请求中的存储设备的处理能力,保证整个对象存储系统的对象IO请求的处理性能。
本发明另一实施例中揭示了另一对象存储系统中业务流的控制方法,在该方法中,对拆分后的子对象IO请求启动休眠时间,以调整发送给对象存储系统中的存储设备客户端和存储设备的对象IO请求的数量,并且通过存储设备和存储设备客户端返回的对象IO请求的处理情况,以一定的规律动态的调整所述休眠时间,以确保对象存储系统对对象IO请求的处理性能。本方法的具体实现流程,如附图4所示。本方法适用于附图1所示的对象存储系统中,所述对象存储系统的相关解释不再另行说明。
步骤401:控制器接收第一对象IO请求,所述第一对象IO请求大于控制器中预先设置的拆分大小阈值。所述拆分大小阈值是指所述对象存储系统可处理的对象IO请求的大小。此步骤与步骤201相似,在此不再详述。
步骤403:控制器获取拆分大小阈值。
步骤405:当所述第一对象IO请求的大小大于所述拆分大小阈值时,控制器将所述第一对象IO请求拆分为多个子对象IO请求,且拆分后的每个子对象IO请求不大于所述拆分大小阈值并携带相同的标识。通常情况下,控制器会根据所述拆分大小阈值来拆分所述第一对象IO请求。例如,所述拆分大小阈值为1兆(M),所述第一对象IO请求为3.7M,控制器根据所述拆分大小阈值将所所述第一对象IO请求拆分为4个子对象IO请求:第一子对象IO请求,1M;第二子对象IO请求,1M;第三子对象IO请求,1M;第四子对象IO请求,0.7M。
步骤407:控制器将拆分后的第一子对象IO请求发送给存储设备客户端,并启动休眠时间。存储设备客户端对第一子对象IO请求的方式与步骤203中描述的存储设备客户端处理对象IO请求的方式相同,在此不再另行说明。
控制器可以采用计时器来记录休眠时间,启动休眠时间可以为启动计时器。休眠时间可能采用计时器进行记录,既可以采用计时的方式记录需要间隔的时间,也可以采用倒计时的方式记录需要间隔的时间。
步骤409:在休眠时间结束之后,控制器将拆分后的第二子对象IO请求发送给存储设备客户端。以此类推,直至控制器将拆分后的多条子对象IO请求都发送给所述存储设备客户端。存储设备客户端对第二子对象IO请求以及其他子对象IO请求的处理方式与存储设备客户端处理第一子对象IO请求或者其他对象IO请求的方式相同,不再另行说明。
步骤411:控制器接收存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;处理结果可以为处理成功或者处理失败的最终结果。
需要说明的是,步骤409与步骤411之间没有严格的时间限制,相互之间不会互相影响。也就是说,对于第一子对象IO请求来说,控制器向存储设备客户端发送第一子对象IO请求的步骤总是在控制器从存储设备客户端接收第一子对象IO请求的响应消息的步骤之前,但是控制器向存储设备客户端发送第二子对象IO请求的步骤与控制器从存储设备客户端接收第一子对象IO请求的响应消息的步骤之间没有顺序要求,这两个步骤是交叉实施并且相互独立的。例如控制器需要在发送第一子对象IO请求之后的所述休眠时间结束后发送第二子对象IO请求给存储设备客户端;而所述第一子对象IO请求的响应消息,控制器可以是在发送第二子对象IO请求之前收到,也可以是在发送第二子对象IO请求之后收到。
步骤413:当满足预定的条件时,控制器根据接收到的对象IO请求(包括子对象IO请求)的处理结果调整所述休眠时间。
需要说明的是,步骤413与步骤411之间没有严格的先后关系。当预定的条件满足时,控制器可以收到了存储设备客户端返回的所述第一子对象IO请求的响应消息,也可以还没有收到存储设备客户端返回的所述第一子对象IO请求的响应消息。也可以是控制器接收到了存储设备客户端返回的所述第一子对象IO请求和第二子对象IO请求的响应消息,还没有接收到第三子对象IO请求和第四子对象IO请求的响应。这时,控制器根据已经返回的其他对象IO请求或者其他子对象IO请求的响应消息,根据响应消息中的处理结果来调整休眠时间。
这样,控制器可以通过控制将对象IO请求发送给存储设备处理的时间间隔控制发送给存储设备处理的对象IO请求的数量,确保发送给存储设备处理的对象IO请求的数量不超过存储设备的处理能力,防止存储设备处对象IO请求的拥塞,提高对象存储系统中对象IO请求的处理效率,减小对象IO请求的时延。
所述方法还可以包括步骤415:当控制器接收到所述第一对象IO请求拆分出来的所有子对象IO请求的响应消息时,根据第一对象IO请求拆分出来的所有子对象IO请求的响应消息中携带的处理结果,向发送第一对象IO请求的请求方返回第一对象IO请求的响应消息,所述第一对象IO请求的响应消息中携带所述第一对象IO请求的处理结果。当所述第一对象IO请求拆分出来的所有子对象IO请求的响应消息中携带的都是处理成功的处理结果时,控制器向所述第一对象IO请求的请求方返回携带处理成功结果的第一对象IO请求的响应消息,否则控制器向所述第一对象IO请求的请求方返回携带处理失败结果的第一对象IO请求的响应消息。
在向所述第一对象IO请求的请求方返回所述第一对象IO请求的响应消息时,控制器更新所述待处理数量。与前述方法相一致,控制器将所述待处理数量减1,具体处理办法不再另行描述。
为实现控制器通过接收到的对象IO请求和子对象IO请求的处理结果对休眠时间进行动态的调整,控制器需要对对象IO请求和子对象IO请求的处理结果进行统计和分析。在本发明实施例中,控制器通过对象IO请求和子对象IO请求的处理成功率对休眠时间进行动态的调整。可以理解的是,控制器也可以根据对象IO请求和子对象IO请求的处理失败率对休眠时间进行动态的调整,控制器还可以在对象IO请求处理成功率或者处理失败率的基础上结合其他要素对休眠时间进行动态的调整。
动态调整可以按照一定的时间规律进行调整,也可以是当休眠时间到达一定值之后进行调整。在本发明实施例中,以控制器周期性调整休眠时间为例进行说明。
要实现控制器通过接收到的对象IO请求和子对象IO请求的处理结果周期性的对休眠时间的调整,控制器中需要记录已发送数量和成功处理数量。所述已发送数量记录的是控制器发送给存储设备客户端的对象IO请求和子对象IO请求的数量;所述成功处理数量记录的是控制器发送给存储设备客户端的对象IO请求和子对象IO请求中处理成功的对象IO请求和子对象IO请求的数量。已发送数量可以在控制器中设置一个计数器来记录;成功处理数量也可以在控制器中设置一个计数器来记录。
所述已发送数量的更新方式有两种。一种是当控制器向存储设备客户端发送一条对象IO请求之后更新所述已发送数量,例如,将当前记录的已发送数量加1。另外一种方式是当控制器向存储设备客户端发送一条对象IO请求之后,收到存储设备客户端返回的该条对象IO请求的响应消息之后再更新所述已发送数量,例如,将当前记录的已发送数量加1。在第二种方式中,不管返回的响应消息是处理成功的响应消息,还是处理失败的响应消息,只要接收到一条响应消息,就需要将当前记录的已发送数量加1。当控制器向存储设备客户端发送子对象IO请求时更新方式相同。即控制器向存储设备客户端发送1条子对象IO请求之后,将当前记录的已发送数量加1;或者控制器向存储设备客户端发送1条子对象IO请求之后,接收到存储设备客户端返回的该条子对象IO请求的响应消息之后,将当前记录的已发送数量加1。成功处理数量的更新方式为,控制器接收到存储设备客户端返回的1条对象IO请求或者子对象IO请求的响应消息时,如果响应消息中携带的处理结果为处理成功,则更新所述成功处理数量,例如,将当前记录的成功处理数量加1。当到达预定的时间周期时,控制器获取已发送数量的当前值和成功处理数量的当前值,计算处理成功率,并根据计算得到的处理成功率作为第一调整系数调整休眠时间。处理成功率可以为成功处理数量与已发送数量的比值。
经过不断观察和实验,发明人发现,对象存储系统对对象IO请求的处理能力会随着已发送数量和成功率的不同而不同,因此,本发明实施例提出根据另一调整系数对根据成功率调整得到的休眠时间进行调整,调整系数与处理成功率成反比。为了更清楚的说明各系数之间的关系,将处理成功率称之为第一调整系数;将调整休眠时间的调整系数称之为第三调整系数。第三调整系数为常数,其取值与第一调整系数成反正。
另外,对象存储系统的休眠时间不可能无限制的增加或者减少,因此对象存储系统的休眠时间需要有限制。在控制器中可以预先设定休眠时间的上限值和下限值。控制器根据第一调整系数或者第一调整系数和第三调整系数调整得到的休眠时间需要在预定的休眠时间的上限值和下限值之间。如果控制器根据第一调整系数或者第一调整系数和第三调整系数计算出的休眠时间不在所述预定的休眠时间的上限值和下限值之间时,则需要根据所述休眠时间的上限值和下限值对计算出的休眠时间进行修正。例如,如果控制器根据第一调整系数或者第一调整系数和第三调整系数计算出的休眠时间大于所述设定的休眠时间的上限值,则调整得到的休眠时间等于所述休眠时间的上限值;如果控制器根据第一调整系数或者第一调整系数和第三调整系数计算出的休眠时间小于所述设定的休眠时间的下限值,则调整得到的休眠时间等于所述休眠时间的下限值。
下面以具体的例子来说明如何按预定的时间周期对休眠时间进行调整。
本方法实施例中,时间周期预先设定为1分钟,存储在控制器中。本技术领域人员可以理解的是,时间周期可以根据需要设定为其他值,比如将时间周期设定为30秒。时间周期可以在控制器中设定一计时器来进行记录,到达预定的时间周期时,触发控制器获取当前的已发送数量和成功处理数量,对休眠时间进行调整。也就是说,在本发明实施例中,控制器每隔一分钟调整一次休眠时间。
下面将举例说明按预定的时间周期调整休眠时间的方法。
t=(t1+常数)/r1×μt,其中,t为调整得到的新的休眠时间,t1为休眠时间的当前值,r1为第一调整系数的当前值,μt为第三调整系数相对于第一调整系数的取值。μt与r反比,即第一调整系数r越大,第三调整系数μt越小,第一调整系数r越小,第三调整系数μt越大。其中,r1为成功处理数量的当前值与已发送数量的当前值的比值:r1=(p1/q1)×100%,p1为成功处理数量的当前值,q1为已发送数量的当前值。
本实施例中用一分段函数来对休眠时间进行调整,计算公式如下:
t=tMaxDelay(r1<0.2);
t=(t1+10)/r1×1.6(0.2<=r1<0.5);
t=(t1+10)/r1×1.4(0.5<=r1<0.8);
t=(t1+10)/r1×1.0(0.8<=r1<0.95);
t=(t1+0)/r1×0.9(t1>=tThreshold,r1>=0.95);
t=tMinDelay(t1<tThreshold,r1>=0.95)。
其中,tMinDelay为所述休眠时间的下限值,tMaxDelay为所述休眠时间的上限值,所述休眠时间的上限值和下限值预先设定。在本实施例中,所述休眠时间的下限值设定为0。
下面以一具体的例子来示例性的说明在对象存储系统中实现业务流控制的方法流程,其适用的对象存储系统如附图5所示,方法流程如附图6所示。
如附图5所示的对象存储系统包括控制器501、IP盘客户端503和IP盘集群504。也就是说附图5中的对象存储系统中的存储设备为IP盘,相应的存储设备客户端为IP盘客户端。控制器501与IP盘客户端503相连,控制器501与IP盘客户端503部署在一个服务器中,服务器可以为HTTP服务器。IP盘客户端503与IP盘集群504中的部份IP盘(504-1,504-2,504-3和504-4)相连。控制器501还连接有一个客户端502,客户端502向控制器501发送对象IO请求。
控制器501中存储有处理数量阈值M和待处理数量N,处理数量阈值M是指对象存储系统当前可以处理的对象IO请求的最大数量,待处理数量N为所述对象存储系统中等待处理的对象IO请求的数量。在本发明实施例中,M的当前值为2000,N的当前值为1500,即M1=2000,N1=1500。
控制器501中还存储有休眠时间t,休眠时间t为控制器501向IP盘客户端发送2条对象IO请求的时间间隔。在本发明实施例中,t的当前值为100毫秒,即t1=100ms。
控制器中501还存储有时间周期T,控制器根据所述时间周期更新M和t的值。在本发明实施例中,T为30秒。
控制器501中还存储有已发送数量P和成功处理数量Q。所述已发送数量P记录的是控制器501发送给IP盘客户端的对象IO请求的数量;所述成功处理数量Q记录的是控制器501发送给IP盘客户端的对象IO请求中处理成功的对象IO请求的数量。在本发明实施例中,P的当前值为2800,Q的当前值为2400,即P1=2800,Q1=2400。
控制器501中还存储有对象IO请求的拆分大小阈值。在本发明实施例中,所述拆分大小阈值为1M。
控制器中还存储有处理数量阈值M和休眠时间t的调整公式。处理数量阈值M的调整公式如下:
M=MMin(r1<0.2);
M=M1×r1×0.6(0.2<=r1<0.6);
M=M1×r1×0.8(0.6<=r1<0.8);
M=M1×r1×1.0(0.8<=r1<0.95);
M=M1×r1×1.1(M1<MMax,r1>=0.95);
M=MMax(M1=MMax,r1>=0.95)。
其中,MMin=200,MMax=3000,r1=(Q1/P1)×100%。
休眠时间t的调整公式如下:
t=tMaxDelay(r1<0.2);
t=(t1+15)/r1×1.6(0.2<=r1<0.6);
t=(t1+15)/r1×1.4(0.6<=r1<0.8);
t=(t1+15)/r1×1.0(0.8<=r1<0.95);
t=(t1+0)/r1×0.9(t1>=tThreshold,r1>=0.95);
t=tMinDelay(t1<tThreshold,r1>=0.95);
其中,tMinDelay=0;tMaxDelay=200,r1=(Q1/P1)×100%。
对象存储系统中实现业务流控制的方法流程如下所述。
步骤601,控制器501接收客户端502发送的第一对象IO请求;所述第一对象IO请求的大小为3.5M。
步骤602,控制器501获取M和N的当前值(M1=2000,N1=1500),并比较所述M1和N1的大小。
步骤603,N1<M1,控制器501更新待处理数量N,并根据拆分大小阈值(1M)拆分所述第一对象IO请求。所述待处理数量N的当前值N1更新为1501,所述第一对象IO请求被拆分为4条子对象IO请求,分别为第一子对象IO请求(1M),第二子对象IO请求(1M),第三子对象IO请求(1M)和第四子对象IO请求(0.5M),这4条子对象IO请求携带有相同的标识。
如果比较的结果是N1>M1,控制器501向发送第一对象IO请求的客户端201返回系统繁忙的响应消息,这时控制器501不更新待处理数量N,并将第一对象IO请求丢弃。
步骤604,控制器501向IP盘客户端503发送第一子对象IO请求;启动休眠时间。IP盘客户端503接收到第一子对象IO请求之后,根据预定的Key-Value算法,将所述第一子对象IO请求发送给IP盘504-3处理。IP盘504-3处理完第一子对象IO请求之后,向IP盘客户端503返回所述第一子对象IO请求的响应消息,响应消息中携带有第一子对象IO请求处理成功的处理结果。IP盘客户端503将接收到响应消息返回给控制器501。
步骤605,休眠时间结束后,即控制器501向IP盘客户端503发送第一子对象IO请求后100毫秒之后,控制器501向IP盘客户端503发送第二子对象IO请求,启动休眠时间。同样的,IP盘客户端503接收到第二子对象IO请求之后,根据预定的Key-Value算法,将所述第一子对象IO请求发送给IP盘504-2处理。IP盘客户端503是根据子对象IO请求中的元数据等信息根据Key-Value算法确定具体的IP盘。第一对象IO请求拆分出来的4个子对象IO请求可能发给同一个IP盘处理,也可以发给不同的IP盘处理。
步骤606,休眠时间结束后,控制器501向IP盘客户端503发送第三子对象IO请求,启动休眠时间。IP盘客户端503对第三子对象IO请求的处理方法与前所述相同,在此不再另行说明。
步骤607,休眠时间结束后,控制器501向IP盘客户端503发送第四子对象IO请求。IP盘客户端503对第四子对象IO请求的处理方法与前所述相同,在此不再另行说明。
步骤608,控制器501接收IP盘客户端503返回的第一子对象IO请求的响应消息,控制器501更新已发送数量P,则所述已发送数量的当前值P1更新为2801;所述响应消息中携带的是第一子对象IO请求处理成功的响应消息,控制器501更新成功处理数量Q,则成功处理数量Q的当前值Q1更新为2401。
步骤608与步骤605-607之间没有严格的时间顺序关系,步骤808只要在步骤804之后即可。
步骤609,控制器501接收IP盘客户端503返回的第二子对象IO请求的响应消息,控制器501更新已发送数量P,则所述已发送数量的当前值P1更新为2802;所述响应消息中携带的是第二子对象IO请求处理成功的响应消息,控制器501更新成功处理数量Q,则成功处理数量Q的当前值Q1更新为2402。
步骤609与步骤606-608之间没有严格的时间顺序关系,步骤609只要在步骤605之后即可。
步骤610,到达预定的时间周期,控制器501根据已接收到的对象IO请求(包括子对象IO请求)的处理结果,调整处理数量阈值M和休眠时间t的值。
控制器501获取已发送数量P的当前值和成功处理数量Q的当前值,计算当前的成功率。则r1=(Q1/P1)×100%=(2402/2802)×100%=0.86。
M=M1×r1×1.0=2000×0.86×1.0=1720。
t=(t1+15)/r1×1.0=(100+15)/0.86×1.0=134。
处理数量阈值M和休眠时间t调整之后,控制器501再获取到的处理数量阈值M和休眠时间t的当前值为调整后的数量。则M1=1720,t1=134ms。
步骤610与其他的步骤没有严格的时间顺序,只要到达预定的时间周期,控制器501根据已经获取到的对象IO请求(包括子对象IO请求)的处理结果,获取已发送数量P的当前值和成功处理数量Q的当前值,并做相应的计算调整即可。
步骤611,控制器501接收IP盘客户端503返回的第三子对象IO请求的响应消息,控制器501更新已发送数量P,则所述已发送数量的当前值P1更新为2803;所述响应消息中携带的是第三子对象IO请求处理成功的响应消息,控制器501更新成功处理数量Q,则成功处理数量Q的当前值Q1更新为2403。
同样的,步骤611只要在步骤606之后即可,和步骤607-610之间没有严格的时间顺序关系。
步骤612,控制器501接收IP盘客户端503返回的第四子对象IO请求的响应消息,控制器501更新已发送数量P,则所述已发送数量的当前值P1更新为2804;所述响应消息中携带的是第四子对象IO请求处理成功的响应消息,控制器501更新成功处理数量Q,则成功处理数量Q的当前值Q1更新为2404。
同样的,步骤612只要在步骤607之后即可,和步骤608-611之间没有严格的时间顺序关系。
步骤613,控制器501确认第一对象IO请求拆分出来的4条子对象IO请求都收到了响应消息,并且响应消息中携带的都是处理成功的处理结果,控制器501向客户端502返回第一对象IO请求的响应消息,所述第一对象IO请求的响应消息中携带处理成功的信息;控制器501更新待处理数量N,所述待处理数量N的当前值N1更新为1500。
如果控制器501接收到的第一对象IO请求的子对象IO请求的响应消息中,只要其中一条子对象IO请求的响应消息携带的是处理失败的信息,则控制器501向客户端502返回处理失败的响应消息。此时,控制器501也需要更新待处理数量N,所述待处理数量N的当前值N1更新为1500。
也就是说,只要控制器501向客户端502回复了对象IO请求的响应消息,不论该条对象IO请求处理成功还是失败,都需要更新所述待处理数量N,将所述待处理数量N的当前值N1减1。当然,控制器501向客户端502返回处理失败的响应消息之前,控制器还可以再将对象IO请求发送给IP盘客户端503处理一定的次数。
当第一对象IO请求拆分的任一个子对象IO请求返回的响应消息中携带的最终结果是处理失败的信息时,控制器除了向客户端502返回处理失败的响应消息外,还要删除第一对象IO请求拆分出来的多条子对象IO请求的信息,并通知存储设备客户端503和存储设备504不再进行后续的处理。具体处理方式与已有的技术相同,在此不再详细说明。
步骤614,控制器501接收客户端502发送的第二对象IO请求,所述第二对象IO请求的大小为0.8M。
步骤615,控制器501获取M和N的当前值(M1=1720,N1=1500),并比较所述M1和N1的大小。
步骤616,N1<M1,控制器501更新待处理数量N,并向IP盘客户端503发送第二对象IO请求。所述待处理数量N的当前值N1更新为1501。由于第二对象IO请求小于所述拆分大小阈值,在这种情况下,控制器501不拆分第二对象IO请求,将第二对象IO请求发送给IP盘客户端503。
步骤617,控制器501接收IP盘客户端503返回的第二对象IO请求的响应消息,控制器501更新已发送数量P,则所述已发送数量的当前值P1更新为2805;所述响应消息中携带的是第二对象IO请求处理成功的响应消息,控制器501更新成功处理数量Q,则成功处理数量Q的当前值Q1更新为2405。
步骤618,控制器501接收客户端502发送的第三对象IO请求,所述第三对象IO请求的大小为0.7M。
步骤618与步骤617之间没有严格的顺序关系。
步骤619,控制器501获取M和N的当前值(M1=1720,N1=1501),并比较所述M1和N1的大小。
步骤620,N1<M1,控制器501更新待处理数量N,并向IP盘客户端503发送第三对象IO请求。所述待处理数量N的当前值更新为N1更新为1502。由于第三对象IO请求小于所述拆分大小阈值,在这种情况下,控制器501不拆分第三对象IO请求,将第三对象IO请求发送给IP盘客户端503。
步骤621,控制器501接收IP盘客户端503返回的第三对象IO请求的响应消息,控制器501更新已发送数量P,则所述已发送数量的当前值P1更新为2806;所述响应消息中携带的是第三对象IO请求处理失败的响应消息,控制器501不更新成功处理数量Q,则成功处理数量Q的当前值不变,Q1=2405。
以此类推,到达下一个时间周期时,控制器501获取已发送数量P的当前值和成功处理数量Q的当前值,计算出当前的成功率,再根据当前的成功率调整处理数量阈值M和休眠时间t。
需要说明的是,上述某些步骤之间没有严格的时间顺序要求,本发明实施例中的方法流程只是示例性的说明,不构成对本发明的限制。比如,在控制器501向IP盘客户端503发送第三子对象IO请求之前,控制器501就接收到了第一子对象IO请求的响应消息。又比如,在控制器501向IP盘客户端503发送第四子对象IO请求之前,就到达了预定的时间周期,此时控制器501则根据各个参数的当前值对M和t进行调整。还有可能,控制器501在接收到第二对象IO请求和第三对象IO请求之后才到预定的时间周期,才根据各个参数的当前值对M和t进行调整。
通过本发明实施例提供的方法,控制器根据对象IO请求的处理结果,周期性的调整处理数量阈值和休眠时间,以此调整发送对象IO请求给存储设备客户端和存储设备处理的的数量和时间间隔,能够确保发送给存储设备处理的对象IO请求的数量不超过存储设备的处理能力,以避免在存储设备处造成拥塞,这样能够提高对象存储系统的处理性能,减小时延。
本发明实施例还提供一种控制器,用于实现上述的各种方法,具体结构如附图7所示。
如附图7所示,所述控制器包括存储模块701、处理模块702、接收模块703和发送模块704。
所述接收模块703用于接收用户通过客户端发送的对象IO请求,并向客户端返回接收到的对象IO请求的响应消息,响应消息中携带该条对象IO请求的处理成功或者失败的处理结果。接收模块703还用于在接收到处理模块702的命令后向客户端返回系统繁忙的响应消息或者拒绝的响应消息。
发送模块704用于将对象IO请求发送给存储设备客户端,并接收存储设备客户端返回的对象IO请求的响应消息,响应消息中携带对象IO请求的处理结果,包括处理成功的处理结果或处理失败的处理结果。
存储模块701用于存储控制器所需要的信息,包括:
待处理数量阈值,对象存储系统目前可以处理的对象IO请求的最大数量;
待处理数量,对象存储系统中当前等待处理的对象IO请求的数量;
休眠时间,控制器当前向存储设备客户端发送2条对象IO请求(包括子对象IO请求)的时间间隔;
时间周期,控制器更新处理数量阈值和休眠时间的时间周期;
已发送数量,控制器已经发送给存储设备客户端的对象IO请求(包括子对象IO请求)的数量;
成功处理数量,控制器发送给存储设备客户端的对象IO请求(包括子对象IO请求)中处理结果为处理成功的对象IO请求(包括子对象IO请求)的数量;
拆分大小阈值,对象存储系统可处理的对象IO请求的大小;
待处理数量阈值的调整公式,用于满足预定的条件时根据所述待处理数量阈值的调整公式对待处理数量阈值进行调整;
休眠时间的调整公式,用于满足预定的条件时根据所述休眠时间的调整公式对休眠时间进行调整。
上述信息中可根据业务需求进行选择,不需要全部包括。比如,在客户端将大对象IO请求(大小大于所述拆分大小阈值的对象IO请求)拆分后再发送给控制器的情况下,拆分大小阈值存储在客户端中,控制器的存储模块中不需要再存储拆分大小阈值信息。另外,如果在发送一定数量的对象IO请求给存储设备客户端之后更新所述待处理数量阈值或者休眠时间时,存储模块中不需要存储时间周期信息。当然,用户也可以根据需要在存储模块701中存储其他的信息,在此不再一一举例说明。
处理模块702用于执行相关的判断、计算、比较等处理。例如所述处理模块702用于实现以下动作。
处理模块702从接收模块703获得对象IO请求。
处理模块702从存储模块701中获取需要的数据信息。
处理模块702比较从存储模块中获取的待处理数量阈值的当前值和待处理数量的当前值,并确定两者的大小关系。在待处理数量的当前值小于所述待处理数量阈值的当前值时,处理模块702更新待处理数量的当前值,并对对象IO请求进行相应的处理。在待处理数量的当前值大于或等于所述待处理数量阈值的当前值时,通过接收模块703向客户端返回拒绝的响应消息或者系统繁忙的响应消息。
当对象IO请求的大小大于获取的拆分大小阈值时,处理模块702根据所述拆分大小阈值将对象IO请求拆分为多条子对象IO请求,拆分后的多条子对象IO请求的大小都不大于所述拆分大小阈值且都携带相同的标识。
通过发送模块704将对象IO请求请求发送给存储设备客户端。处理模块702还可以在向存储设备客户端发送完一条对象IO请求之后启动休眠时间,待休眠时间结束后再向存储设备客户端发送下一条对象IO请求。或者处理模块702只对拆分后的子对象IO请求启动休眠时间,即在发送一条子对象IO请求之后启动休眠时间,待休眠时间结束后再向存储设备客户端发送下一条子对象IO请求。
处理模块702还用于从发送模块704获得存储设备客户端返回的对象IO请求的响应消息,并通过接收模块703向客户端返回对象IO请求的响应消息。当处理模块702将一对象IO请求拆分为多条子对象IO请求之后,在获得该条对象IO请求的所有子对象IO请求的响应消息之后,再根据所有子对象IO请求的响应消息中携带的处理结果,向客户端返回该条对象IO请求的响应消息。如果该对象IO请求的所有子对象IO请求的响应消息中携带的都是处理成功的响应消息,则处理模块702向客户端返回对象IO请求处理成功的响应消息,否则,处理模块702向客户端返回对象IO请求处理失败的响应消息。
处理模块702还用于更新已发送数量和成功处理数量的值。已发送数量可以在处理模块702通过发送模块704向存储设备客户端发送对象IO请求或者子对象IO请求之后更新,也可以在通过发送模块704获得对象IO请求或者子对象IO请求的响应消息之后更新。成功处理数量在处理模块702通过发送模块704获得对象IO请求或者子对象IO请求的响应消息并且响应消息中携带的是处理成功的处理结果时更新。具体更新办法已在前文进行了详细的说明和举例,在此不再另行说明。
处理模块702还用于预定的时间周期是否到达,当到达预定的时间周期时,对所述处理数量阈值和休眠时间进行调整。
处理模块702还用于根据存储的公式调整所述处理数量阈值和/或休眠时间。具体调整方法已经前文进行了详细的描述和举例,在此不再另行说明。
当发送给存储设备的对象IO请求数量增加而性能降低时,控制器可以通过接收到的对象IO请求的响应消息采用一定的算法调整所述处理数量阈值和/休眠时间的值。当对象存储系统中待处理的对象IO请求的数量等于或者大于处理数量阈值时,控制器直接向请求方返回拒绝的响应消息或者是繁忙的响应消息,并丢弃接收到的对象IO请求。
控制器通过存储的处理数量阈值,可以控制通过存储设备客户端发送给存储设备处理的对象IO请求的数量,确保发送给存储设备的对象IO请求的数量不超过存储设备的能力,从而使得存储设备的处理资源和缓存资源都用于对象IO请求的有效处理,提高整个对象存储系统处理对象IO请求的性能和成功率。控制器还可以通过存储的休眠时间,调整通过存储设备客户端向存储设备发送对象IO请求或者子对象IO请求的时间间隔,使得存储设备对队列中的对象IO请求有充足的处理时间,提高对象存储系统处理对象IO请求的性能和成功率。
本发明实施例提供的控制器用于在对象存储系统中实现业务流控制,包括存储模块701、处理模块702、接收模块703和发送模块704。
具体来说,所述接收模块703用于接收第一对象IO请求,并发送给所述处理模块702;
所述处理模块702接收到所述第一对象IO请求之后,从所述存储模块701中获取处理数量阈值和待处理数量,其中,所述处理数量阈值为所述对象存储系统可处理的对象IO请求的数量阈值,所述待处理数量为所述对象存储系统中待处理的对象IO请求的数量;
若所述待处理数量小于所述处理数量阈值,所述处理模块702还用于将所述第一对象IO请求发送给所述发送模块704,并更新存储模块701中的所述待处理数量;
所述发送模块704还用于将所述第一对象IO请求发送给存储设备客户端;接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息,所述第一响应消息中携带所述第一对象IO请求的处理结果;并将所述第一响应消息发送给所述处理模块702;
所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述存储模块701中的所述处理数量阈值。
若所述待处理数量大于或等于所述处理数量阈值,所述处理模块702还用于向所述第一对象IO请求的请求方返回拒绝响应消息或者繁忙响应消息。
所述处理模块702还用于将所述第一对象IO请求发送给所述发送模块704之后,启动休眠时间,并在所述休眠时间结束后向所述发送模块704发送第二对象IO请求。
所述处理模块702还用于:在接收到所述第一响应消息之后更新所述存储模块704中的已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;若所述第一响应消息携带的处理结果表示处理成功,更新所述存储模块704中的成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量。
所述处理模块702还用于,当所述第一对象IO请求大于拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识,其中,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小阈值;将拆分后的第一子对象IO请求通过所述发送模块704发送给存储设备客户端;启动休眠时间,并在所述休眠时间结束之后通过所述发送模块704发送第二子对象IO请求。
所述接收模块704接收存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;并将所述响应消息发送给所述处理模块702;所述处理模块702还用于,接收第一子对象IO请求的处理结果,更新已发送数量;所述已发送数量为向存储设备客户端发送的对象IO请求的已发送数量;若所述处理结果表示处理成功,所述处理模块702还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求处理成功的数量。
所述处理模块702在满足预定的条件时根据接收到的对象IO请求的处理结果调整所述存储模块701中的所述处理数量阈值具体为:处理模块702按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值计算对象IO请求的处理成功率,将所述处理成功率作为第一调整系数调整所述处理数量阈值。
所述处理模块702还用于根据第二调整系数,调整根据所述第一调整系数调整后的数量阈值,其中,所述第二调整系数的取值与所述第一调整系数成正比。
所述存储模块701中还存储有所述数量阈值的上限值和下限值;
所述处理模块702还用于根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
所述处理模块702还用于按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
所述处理模块702还用于根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
所述存储模块701中还存储有所述休眠时间的上限值和下限值;
所述处理模块702还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
所述处理模块702还用于通过所述接收模块703向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;并更新所述待处理数量。
本发明实施例还提供控制器的另一具体功能,所述控制器包括存储模块701、处理模块702、接收模块703和发送模块704;
所述接收模块703用于接收第一对象IO请求,并发送给所述处理模块702;
所述处理模块702用于接收到所述第一对象IO请求后,从所述存储模块701中获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小;
所述处理模块702还用于当所述第一对象IO请求的规格大于所述拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;向发送模块704发送第一子对象IO请求,并启动休眠时间;
所述发送模块704还用于将所述第一子对象IO请求发送给与所述控制器连接的存储设备客户端;接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;将所述第一子对象IO请求的响应消息发送给所述处理模块702;
所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间。
所述处理模块702还用于,启动休眠时间后,待所述休眠时间结束后,通过所述发送模块向存储设备客户端发送第二子对象IO请求;返返回执行启动所述休眠时间的步骤,直接将所述多条子对象IO请求发送给所述存储设备客户端。
所述处理模块702还用于,接收所述第一子对象IO请求的响应消息之后,更新已发送数量,所述已发送数量为所述处理模块702通过所述发送模块704向所述存储设备客户端发送的对象IO请求的已发送数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示处理成功,所述处理模块702还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变。
所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:所述处理模块702按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
所述处理模块702还用于根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
所述存储模块701中还存储有所述休眠时间的上限值和下限值;
所述处理模块702还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
控制器对对象IO请求的处理方法流程如前所述的流程,详细处理细节如附图2-1、2-2和2-3,以及附图3和4以及相应的方字描述所示,在本实施例中不再另行详细说明。
控制器也可以看做由CPU、内存组成的设备。内存中存储有程序,CPU通过内存中的程序执行上述的业务流控制方法。还可以包括接口,接口用于和存储设备客户端连接,接口的功能例如可以把经过CPU处理后产生对象IO请求发送给存储设备客户端。接口还可以外对象存储系统外的其他客户端client相连,用于接收client发送的各类对象IO请求。
本发明实施例还提供了一种在对象存储系统中实现业务流控制的业务流控制设备8,如附图8所示。该设备8中包括控制器801,所述控制器801包括接收模块801-3,存储模块801-1,处理模块801-2和发送模块801-4。所述控制器用于实现前述的业务流控制方法,控制器801与附图7及对应的文字中描述的控制器的结构和功能都相同,在此不再另行描述。
本发明实施例还提供了一种实现业务流控制的对象存储系统,如附图9所示。包含控制器901,存储设备客户端903和至少两个存储设备905。所述控制器901与所述存储设备客户端903相连,所述存储设备客户端903与所述至少两个存储设备905连接。所述控制器901与所述存储设备客户端903可以位于同一服务器中。所述控制器901包括接收模块901-3,存储模块901-1,处理模块901-2和发送模块901-4。所述控制器用于实现前述的业务流控制方法,控制器901与附图7及对应的文字中描述的控制器的结构和功能都相同,在此不再另行描述。
通过以上的实施方式的描述,可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明实施例在控制器中设置对象存储系统能够处理的对象IO请求的处理数量阈值,并通过存储设备对接收到的对象IO请求的处理情况,按一定的规律根据预定的算法动态的调整所述处理数量阈值。这样控制器可以控制通过存储设备客户端发送给存储设备的对象IO请求的数量,使存储设备接收到的对象IO请求的数量不超过存储设备的处理能力,这样存储设备的资源可以全部投入到对象IO请求的有效处理中,保证了对象IO请求的处理成功率,提高了对象存储系统的处理性能。另外在控制器中还设置有发送2条对象IO请求(或者子对象IO请求)的时间间隔,即休眠时间,控制器通过调节通过存储设备客户端向存储设备发送对象IO请求的数量,可以更精确的控制向存储设备发送的对象IO请求的数量,保证存储设备的资源可以全部用于对对象IO请求的有效处理,提高了对象存储系统的处理性能。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (40)

1.一种对象存储系统中的业务流控制方法,所述对象存储系统包括控制器和存储设备客户端,其特征在于,所述方法包括:
所述控制器接收第一对象IO请求;
获取处理数量阈值和待处理数量;所述处理数量阈值为所述对象存储系统可处理的对象IO请求的数量阈值,所述待处理数量为所述对象存储系统中待处理的对象IO请求的数量;
若所述待处理数量小于所述处理数量阈值,将所述第一对象IO请求发送给所述存储设备客户端;并更新所述待处理数量;
接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息,所述第一响应消息中携带所述第一对象IO请求的处理结果;
满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述处理数量阈值。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述控制器接收第二对象IO请求时,获取所述处理数量阈值的当前值和所述待处理数量的当前值;
若所述待处理数量的当前值大于或者等于所述处理数量阈值的当前值,返回拒绝响应消息或者繁忙响应消息。
3.根据权利要求1所述的方法,其特征在于,还包括:
在所述将所述第一对象IO请求发送给所述存储设备客户端之后启动休眠时间;
当所述控制器接收第三对象IO请求时,获取所述处理数量阈值的当前值和所述待处理数量的当前值;
若所述待处理数量的当前值小于所述处理数量阈值的当前值,在所述休眠时间结束后向所述存储设备客户端发送所述第三对象IO请求,并更新所述待处理数量。
4.根据权利要求1所述的方法,其特征在于,所述接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息之后,所述方法还包括:
更新已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
若所述第一响应消息携带的处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一响应消息携带的处理结果表示处理失败,维持成功处理数量不变。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一对象IO请求发送给所述存储设备客户端包括:
获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小阈值;
当所述第一对象IO请求的规格大于所述拆分大小阈值时,所述控制器将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;
所述将所述第一对象IO请求发送给所述存储设备客户端具体为:
所述控制器向所述存储设备客户端发送所述多个子对象IO请求中的第一子对象IO请求;
启动休眠时间,并在所述休眠时间结束之后向所述存储设备客户端发送所述多个子对象IO请求中的第二子对象IO请求,依此循环,直至将所述多条子对象IO请求发送给所述存储设备客户端。
6.根据权利要求5所述的方法,其特征在于,所述控制器向所述存储设备客户端发送所述多个子对象IO请求中的第一子对象IO请求之后,还包括:
接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;
更新已发送数量,所述已发送数量为所述控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
若所述处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;
若所述处理结果表示终结的失败处理,维持成功处理数量不变。
7.根据权利要求4或6所述的方法,其特征在于,所述根据所述存储设备客户端对接收到的对象IO请求的处理结果调整所述处理数量阈值,包括:
所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;
根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;
将所述处理成功率作为第一调整系数调整所述处理数量阈值。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
根据第二调整系数,调整根据所述第一调整系数调整后的数量阈值;其中,所述第二调整系数的取值与所述第一调整系数成正比。
9.根据权利要求7所述的方法,其特征在于,所述控制器设置有所述处理数量阈值的上限值和下限值,所述方法还包括:
根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
10.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;
根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;
将所述处理成功率作为第一调整系数调整所述休眠时间。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
12.根据权利要求11所述的方法,其特征在于,所述控制器设置有所述休眠时间的上限值和下限值,所述方法还包括:
根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
13.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
所述控制器向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;
更新所述待处理数量。
14.一种对象存储系统中的业务流控制方法,所述对象存储系统中包括控制器和存储设备客户端,其特征在于,所述方法包括:
所述控制器接收第一对象IO请求;
获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小;
当所述第一对象IO请求的规格大于所述拆分大小阈值时,所述控制器将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;
向所述存储设备客户端发送所述多个子对象IO请求中的第一子对象IO请求,并启动休眠时间;
接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;
满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间。
15.根据权利要求14所述的方法,其特征在于,启动休眠时间之后还包括:
所述休眠时间结束之后,向所述存储设备客户端发送所述多个子对象IO请求中的第二子对象IO请求;依此循环,直至将所述多条子对象IO请求发送给所述存储设备客户端。
16.根据权利要求14或15所述的方法,其特征在于,接收所述第一子对象IO请求的响应消息之后,还包括:
更新已发送数量,所述已发送数量为所述控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
若所述第一子对象IO请求的响应消息中携带的所述第一子对象IO请求的处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变。
17.根据权利要求16所述的方法,所述满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:
所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;
根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;
将所述处理成功率作为第一调整系数调整所述休眠时间。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
19.根据权利要求18所述的方法,其特征在于,所述控制器设置有所述休眠时间的上限值和下限值,所述方法还包括:
根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和所述下限值之间。
20.一种在对象存储系统中实现业务流控制的控制器,其特征在于:所述控制器包括存储模块(701)、处理模块(702)、接收模块(703)和发送模块(704);
所述接收模块(703)用于接收第一对象IO请求,并发送给所述处理模块(702);
所述处理模块(702)接收到所述第一对象IO请求之后,从所述存储模块(701)中获取处理数量阈值和待处理数量,其中,所述处理数量阈值为所述对象存储系统可处理的对象IO请求的数量阈值,所述待处理数量为所述对象存储系统中待处理的对象IO请求的数量;
若所述待处理数量小于所述处理数量阈值,所述处理模块(702)还用于将所述第一对象IO请求发送给所述发送模块(704),并更新存储模块(701)中的所述待处理数量;
所述发送模块(704)还用于将所述第一对象IO请求发送给存储设备客户端;接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息,所述第一响应消息中携带所述第一对象IO请求的处理结果;并将所述第一响应消息发送给所述处理模块(702);
所述处理模块(702)还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述存储模块(701)中的所述处理数量阈值。
21.根据权利要求20所述的控制器,其特征在于:
若所述待处理数量大于或等于所述处理数量阈值,所述处理模块(702)还用于向所述第一对象IO请求的请求方返回拒绝响应消息或者繁忙响应消息。
22.根据权利要求20所述的控制器,其特征在于:
所述处理模块(702)还用于将所述第一对象IO请求发送给所述发送模块(704)之后,启动休眠时间,并在所述休眠时间结束后向所述发送模块(704)发送第二对象IO请求。
23.根据权利要求20所述的控制器,其特征在于,所述处理模块(702)还用于:
在接收到所述第一响应消息之后更新所述存储模块(704)中的已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
若所述第一响应消息携带的处理结果表示处理成功,更新所述存储模块(704)中的成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量。
24.根据权利要求20或21所述的控制器,其特征在于,所述处理模块(702)还用于:
当所述第一对象IO请求大于拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识,其中,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小阈值;
将拆分后的第一子对象IO请求通过所述发送模块(704)发送给存储设备客户端;
启动休眠时间,并在所述休眠时间结束之后通过所述发送模块(704)发送所述多个子对象IO请求中的第二子对象IO请求。
25.根据权利要求24所述的控制器,其特征在于:
所述接收模块(704)接收存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;并将所述响应消息发送给所述处理模块(702);
所述处理模块(702)还用于,接收第一子对象IO请求的处理结果,更新已发送数量;所述已发送数量为向存储设备客户端发送的对象IO请求的已发送数量;
若所述处理结果表示处理成功,所述处理模块(702)还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求处理成功的数量。
26.根据权利要求25所述的控制器,其特征在于,所述处理模块(702)在满足预定的条件时根据接收到的对象IO请求的处理结果调整所述存储模块(701)中的所述处理数量阈值具体为:
处理模块(702)按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值计算对象IO请求的处理成功率,将所述处理成功率作为第一调整系数调整所述处理数量阈值。
27.根据权利要求26所述的控制器,其特征在于:
所述处理模块(702)还用于根据第二调整系数,调整根据所述第一调整系数调整后的数量阈值,其中,所述第二调整系数的取值与所述第一调整系数成正比。
28.根据权利要求27所述的控制器,其特征在于:
所述存储模块(701)中还存储有所述数量阈值的上限值和下限值;
所述处理模块(702)还用于根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
29.根据权利要求25所述的控制器,其特征在于,所述处理模块(702)还用于:
按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
30.根据权利要求29所述的控制器,其特征在于,所述处理模块(702)还用于:
根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
31.根据权利要求30所述的控制器,其特征在于:
所述存储模块(701)中还存储有所述休眠时间的上限值和下限值;
所述处理模块(702)还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
32.根据权利要求20-23任一所述的控制器,其特征在于:所述处理模块(702)还用于通过所述接收模块(703)向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;并更新所述待处理数量。
33.一种在对象存储系统中实现业务流控制的控制器,其特征在于:所述控制器包括存储模块(701)、处理模块(702)、接收模块(703)和发送模块(704);
所述接收模块(703)用于接收第一对象IO请求,并发送给所述处理模块(702);
所述处理模块(702)用于接收到所述第一对象IO请求后,从所述存储模块(701)中获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小;
所述处理模块(702)还用于当所述第一对象IO请求的规格大于所述拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;向发送模块(704)发送所述多个子对象IO请求中的第一子对象IO请求,并启动休眠时间;
所述发送模块(704)还用于将所述第一子对象IO请求发送给与所述控制器连接的存储设备客户端;接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;将所述第一子对象IO请求的响应消息发送给所述处理模块(702);
所述处理模块(702)还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间。
34.根据权利要求33所述的控制器,其特征在于,所述处理模块(702)还用于:
启动休眠时间后,待所述休眠时间结束后,通过所述发送模块向存储设备客户端发送所述多个子对象IO请求中的第二子对象IO请求;依此循环,直至将所述多条子对象IO请求发送给所述存储设备客户端。
35.根据权利要求33或34所述的控制器,其特征在于,所述处理模块(702)还用于:
接收所述第一子对象IO请求的响应消息之后,更新已发送数量,所述已发送数量为所述处理模块(702)通过所述发送模块(704)向所述存储设备客户端发送的对象IO请求的已发送数量;
若所述第一子对象IO请求的响应消息中携带的所述第一子对象IO请求的处理结果表示处理成功,所述处理模块(702)还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变。
36.根据权利要求35所述的控制器,其特征在于,所述处理模块(702)还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:
所述处理模块(702)按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
37.根据权利要求36所述的控制器,其特征在于,所述处理模块(702)还用于:
根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
38.根据权利要求37所述的控制器,其特征在于:
所述存储模块(701)中还存储有所述休眠时间的上限值和下限值;
所述处理模块(702)还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
39.一种在对象存储系统中实现业务流控制的设备,其特征在于,包括如权利要求20-38任一所述的控制器。
40.一种可以实现业务流控制的对象存储系统,其特征在于,包括如权利要求20-38任一所述的控制器,还包括存储设备客户端和至少两个存储设备;所述控制器与所述存储设备客户端相连,所述存储设备客户端与所述至少两个存储设备相连。
CN201480064791.2A 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统 Active CN105900061B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/089180 WO2016061766A1 (zh) 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统

Publications (2)

Publication Number Publication Date
CN105900061A CN105900061A (zh) 2016-08-24
CN105900061B true CN105900061B (zh) 2018-01-16

Family

ID=55760058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480064791.2A Active CN105900061B (zh) 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统

Country Status (5)

Country Link
US (2) US9804981B2 (zh)
EP (1) EP3128420B1 (zh)
JP (1) JP6403140B2 (zh)
CN (1) CN105900061B (zh)
WO (1) WO2016061766A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180335975A1 (en) * 2017-05-16 2018-11-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Translating a host data storage command into multiple disk commands
US10599340B1 (en) * 2017-07-13 2020-03-24 EMC IP Holding LLC Policy driven IO scheduler to improve read IO performance in hybrid storage systems
US10719245B1 (en) * 2017-07-13 2020-07-21 EMC IP Holding Company LLC Transactional IO scheduler for storage systems with multiple storage devices
CN107465630B (zh) * 2017-08-30 2021-08-31 郑州云海信息技术有限公司 一种带宽流量监管方法及系统
CN107911840A (zh) * 2017-11-21 2018-04-13 青岛海信电器股份有限公司 流媒体传输的控制方法及装置
CN110740099B (zh) * 2018-07-18 2023-03-31 阿里巴巴集团控股有限公司 一种数据流控方法和装置
CN109101194A (zh) * 2018-07-26 2018-12-28 郑州云海信息技术有限公司 一种刷写性能优化方法和存储系统
US11580082B2 (en) 2018-11-15 2023-02-14 Western Digital Technologies, Inc. Object storage system with control entity quota usage mapping
US11157205B2 (en) * 2018-11-15 2021-10-26 Western Digital Technologies, Inc. Object storage system with control entity quota enforcement
US11204717B2 (en) 2018-11-15 2021-12-21 Western Digital Technologies, Inc. Object storage system with access control quota status check
CN110096379B (zh) * 2019-04-30 2022-09-09 武汉斗鱼鱼乐网络科技有限公司 基于通用协议的消息分发方法、装置、设备及存储介质
WO2020236277A1 (en) 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating tracer packets in a data-driven intelligent network
CN110333770B (zh) * 2019-07-10 2023-05-09 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
CN110377536B (zh) * 2019-07-12 2023-05-12 深信服科技股份有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN110650206B (zh) * 2019-09-29 2022-03-11 北京天融信网络安全技术有限公司 分布式存储系统中io流量控制方法、装置和存储介质
CN111190709B (zh) * 2019-11-19 2024-04-12 泰康保险集团股份有限公司 处理请求的方法、装置、电子设备及可读存储介质
CN111291104B (zh) * 2020-01-20 2023-07-28 中国银联股份有限公司 一种基于异步应答的传输数据的方法及系统
CN113849129B (zh) * 2021-09-18 2023-08-25 苏州浪潮智能科技有限公司 一种存储控制器间的io请求转发方法、装置及设备
CN113741991B (zh) * 2021-11-04 2022-02-18 苏州浪潮智能科技有限公司 提升ssd服务质量方法、装置、计算机设备和存储介质
US20230419927A1 (en) * 2022-06-22 2023-12-28 Deepen Shah Automated remote music identification device and system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108841A (ja) * 2000-10-03 2002-04-12 Shimadzu Corp 分散型制御システム
US7065767B2 (en) 2001-06-29 2006-06-20 Intel Corporation Managed hosting server auditing and change tracking
JP2004310652A (ja) * 2003-04-10 2004-11-04 Just Syst Corp 情報配信装置および情報配信装置に利用可能なアクセス管理方法
US7765555B2 (en) * 2005-06-17 2010-07-27 Oracle America, Inc. Facilitating bulk lock-unbiasing in an object-based system
WO2007002799A1 (en) 2005-06-29 2007-01-04 Lightspeed Logic, Inc. Methods and systems for placement
CN100466625C (zh) * 2006-09-07 2009-03-04 华为技术有限公司 一种实现业务流量控制的方法及系统
US9104599B2 (en) * 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
CN100476742C (zh) * 2007-02-09 2009-04-08 华中科技大学 基于对象存储设备的负载平衡方法
US7877556B2 (en) * 2007-03-30 2011-01-25 Hitachi, Ltd. Method and apparatus for a unified storage system
US8452835B2 (en) * 2009-12-23 2013-05-28 Citrix Systems, Inc. Systems and methods for object rate limiting in multi-core system
CN101776946B (zh) * 2010-01-20 2011-06-15 中国人民解放军国防科学技术大学 一种基于对象存储系统的功耗控制方法
US8984216B2 (en) * 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
CN101957729B (zh) * 2010-09-27 2014-07-02 中兴通讯股份有限公司 逻辑块变换方法及基于该方法兼容用户读写的方法和装置
US9589029B2 (en) * 2010-12-28 2017-03-07 Citrix Systems, Inc. Systems and methods for database proxy request switching
US9164785B2 (en) * 2011-03-14 2015-10-20 Sap Se Predicting performance of a consolidated virtualized computing environment
US9705733B2 (en) * 2012-08-07 2017-07-11 Ca, Inc. Systems and methods for throttling polling
CN103036956B (zh) * 2012-11-30 2016-03-30 航天恒星科技有限公司 一种分布式组态化海量数据归档系统及实现方法
US10263916B2 (en) * 2012-12-03 2019-04-16 Hewlett Packard Enterprise Development Lp System and method for message handling in a network device
CN103150225B (zh) * 2013-03-25 2014-04-09 中国人民解放军国防科学技术大学 基于应用级代理的对象并行存储系统磁盘满异常容错方法
US9652514B2 (en) * 2014-05-20 2017-05-16 Citrix Systems, Inc. Systems and methods for redirect handling
US9639854B2 (en) * 2014-06-26 2017-05-02 Nuance Communications, Inc. Voice-controlled information exchange platform, such as for providing information to supplement advertising
US20160062832A1 (en) * 2014-09-02 2016-03-03 Netapp. Inc. Wide spreading data storage architecture
JP6443170B2 (ja) * 2015-03-26 2018-12-26 富士通株式会社 階層ストレージ装置,階層ストレージ制御装置,階層ストレージ制御プログラム及び階層ストレージ制御方法
US9787772B2 (en) * 2015-05-19 2017-10-10 Netapp, Inc. Policy based alerts for networked storage systems

Also Published As

Publication number Publication date
EP3128420A4 (en) 2017-08-23
JP6403140B2 (ja) 2018-10-10
EP3128420A1 (en) 2017-02-08
US9984013B2 (en) 2018-05-29
WO2016061766A1 (zh) 2016-04-28
CN105900061A (zh) 2016-08-24
US20170220500A1 (en) 2017-08-03
JP2017514210A (ja) 2017-06-01
US20180018293A1 (en) 2018-01-18
US9804981B2 (en) 2017-10-31
EP3128420B1 (en) 2019-08-28

Similar Documents

Publication Publication Date Title
CN105900061B (zh) 对象存储系统中的业务流控制方法、控制器和系统
US20200327551A1 (en) Resource transferring monitoring method and device
US11223544B2 (en) Systems and methods for queuing access to network resources
US8832063B1 (en) Dynamic request throttling
CN108243246A (zh) 一种边缘计算资源调度方法、边缘设备及系统
WO2017067394A1 (zh) 客户服务方式的分配方法及系统
CN106603598A (zh) 处理业务请求的方法及装置
CN108011840A (zh) 交易请求的控制方法、服务器和系统
CN107395782A (zh) 一种基于代理池的ip限制受控源信息抓取方法
AU2005242593A1 (en) Queuing system, method and computer program product for managing the provision of services over a communications network
CN107040567A (zh) 资源预分配额度的管控方法及装置
CN110351532B (zh) 视频大数据云平台云存储服务方法
CN108604194A (zh) 概率性调节
US20220224694A1 (en) Resource appropriation in a multi-tenant environment using risk and value modeling systems and methods
CN112286693B (zh) 一种高并发场景下抢购活动的精细化限流处理方法、装置
WO2014000633A1 (zh) 提供离线消息的服务装置、方法及存储介质
KR100671635B1 (ko) 스트리밍 미디어 서비스 관리 방법
CN104094299B (zh) 从发布的日历检索可用性信息的方法和设备
CN110413918A (zh) 数据发送方法、装置、设备及存储介质
EP2043329A1 (en) A media-on-demand network, and a method of storing a media asset in a streaming node of the network
US8456994B2 (en) Transmit request management in a distributed shared storage system
EP0524089A1 (fr) Structure de logiciel pour système de traitement de données, notamment pour système de télécommunications
CN104270466B (zh) 数据上报方法及相关设备
CN110019487A (zh) 一种数据库连接管理方法及装置
CN104571952B (zh) 一种分开处理数据与元数据读写请求的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant