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

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

Info

Publication number
WO2016061766A1
WO2016061766A1 PCT/CN2014/089180 CN2014089180W WO2016061766A1 WO 2016061766 A1 WO2016061766 A1 WO 2016061766A1 CN 2014089180 W CN2014089180 W CN 2014089180W WO 2016061766 A1 WO2016061766 A1 WO 2016061766A1
Authority
WO
WIPO (PCT)
Prior art keywords
request
processing
controller
storage device
sleep time
Prior art date
Application number
PCT/CN2014/089180
Other languages
English (en)
French (fr)
Inventor
童燕群
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2014/089180 priority Critical patent/WO2016061766A1/zh
Priority to JP2016558104A priority patent/JP6403140B2/ja
Priority to CN201480064791.2A priority patent/CN105900061B/zh
Priority to EP14904442.2A priority patent/EP3128420B1/en
Publication of WO2016061766A1 publication Critical patent/WO2016061766A1/zh
Priority to US15/490,118 priority patent/US9804981B2/en
Priority to US15/716,163 priority patent/US9984013B2/en

Links

Images

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]

Definitions

  • the present invention relates to the field of storage, and in particular, to a service flow control method, controller, and system in an object storage system.
  • the Object-Based Storage System has the advantages of direct access to block storage technology and data sharing of file storage technology, providing a storage system with high reliability, cross-platform and secure data sharing.
  • the object storage system generally includes a controller 101, a storage device client 103, and a storage device cluster 104, as shown in FIG.
  • the controller 101 can also be connected to an external client, which can be connected to other devices (such as a domain name server) (the external client and the domain name server are not shown in FIG. 1).
  • the storage device client 103 is connected to a plurality of storage devices in the storage device cluster 104.
  • the storage device may be an IP (internet protocol) hard disk or other smart hard disks, such as a solid state drive (SSD).
  • a container can be understood as a special top-level directory or a globally unique domain name.
  • An object is the basic unit of object storage. Each object is a combination of data and data attribute sets. Data attributes can be set according to the needs of the application, including data distribution, quality of service, and so on. Object Maintaining your own attributes simplifies management tasks for your storage system and increases flexibility. Objects can vary in size and can contain entire data structures such as files, database tables, directories, and more.
  • Container IO requests are generally small compared to object IO requests, typically no more than 1 megabyte (M).
  • Object IO requests are generally large, large may have a few M, or may be less than 1M.
  • the IO request may be processed according to the size of the IO request regardless of whether the IO request is a container IO request or an object IO request. Therefore, in the following description, it is no longer particularly mentioned that the IO request is a container IO request or an object IO request, and is simply referred to as an object IO request.
  • the object IO request may be a write object IO request or a read object IO request.
  • the flow is applicable to both the write object IO request and the read object IO request, unless otherwise specified.
  • the external client sends an object IO request to the controller 101, and the controller 101 sends the object IO request to the storage device client 103, and the storage device client 103 passes the object through a certain algorithm.
  • the IO request is sent to the corresponding storage device, and the storage device requests the object IO request.
  • the number of object IO requests that can be processed and cached by each storage device is limited. During the peak period of the service, it is prone to the case that the delivery speed of the object IO request exceeds the processing and caching capability of each storage device.
  • the storage device also needs to feed back the overload response.
  • the resources of the storage device occupied by the feedback overload response are not less than the resources required to process an object IO request, which may result in more object IO requests being unprocessable.
  • large object IO requests are generally split into multiple small object IO requests. As long as one of the small object IO requests fails to process, the large object IO request processing fails; small object IO requests often need to wait for a long time, and The probability of a processing failure increases after waiting for a long time.
  • Object IO requests that fail to process and object IO requests that cannot be processed in time are continuously attempted to be resent to the storage device for processing, creating a vicious circle that causes the performance and success rate of the entire object storage system to process object IO requests.
  • the embodiment of the invention provides a service flow control method, a controller and a system in an object storage system, to solve the performance and success of processing an object IO request in an object storage system during a peak business period in the prior art.
  • a first aspect of the embodiments of the present invention provides a service flow control method in an object storage system, where the object storage system includes a controller and a storage device client, and the method includes: the controller receives a first object IO request; and acquires processing a quantity threshold and a quantity to be processed; the processing quantity threshold is a threshold number of object IO requests that the object storage system can process, the number of to-be-processed being the number of object IO requests to be processed in the object storage system; The number of to-be-processed is less than the processing quantity threshold, and the first object IO request is sent to the storage device client; and the to-be-processed quantity is updated; and the first returned by the storage device client is received.
  • a first response message requested by the object IO the first response message carrying the processing result of the first object IO request; when the predetermined condition is met, adjusting the processing quantity threshold according to the processing result of the received object IO request .
  • the controller when the controller receives the second object IO request, acquiring a current value of the processing quantity threshold and a current value of the to-be-processed quantity; If the current value of the to-be-processed quantity is greater than or equal to the current value of the processing quantity threshold, a reject response message or a busy response message is returned.
  • the controller after the sending the first object IO request to the storage device client a sleep time; when the controller receives the third object IO request, acquiring a current value of the processing quantity threshold and a current value of the to-be-processed number; if the current value of the to-be-processed quantity is less than the processing quantity threshold The current value, after the end of the sleep time, sends the third object IO request to the storage device client, and updates the to-be-processed quantity.
  • the receiving the storage device client returns After the first response message of the first object IO request, the method further includes: updating the sent quantity, where the sent quantity is the sent quantity of the object IO request sent by the controller to the storage device client If the processing result carried in the first response message indicates that the processing is successful, the number of successful processing is updated, and the number of successful processing is the number of successful processing of the received object IO request by the storage device client; The processing result carried in the response message indicates that the processing fails, and the number of successful processing remains unchanged.
  • the sending, by the first object IO request, the storage device client includes: Obtaining a split size threshold, where the split size threshold is a size threshold of an object IO request that the object storage system can process; when the size of the first object IO request is greater than the split size threshold, the control Splitting the first object IO request into a plurality of sub-object IO requests, wherein each sub-object IO request is not greater than the split size threshold and carries the same identifier; the first object IO request is sent Specifically, the storage device client sends: the controller sends a first sub-object IO request to the storage device client; initiates a sleep time, and sends a message to the storage device client after the sleep time ends Two sub-object IO requests; returning to perform the step of starting the sleep time until the plurality of sub-object IO requests are sent to the storage device client.
  • the split size threshold is a size threshold of an object IO request that the object storage system can process
  • a response message of the first sub-object IO request returned by the storage device client after the controller sends the first sub-object IO request to the storage device client, a response message of the first sub-object IO request returned by the storage device client, the response message carrying the processing result of the first sub-object IO request; updating the sent quantity, the sent quantity is the The number of sent IO requests sent by the controller to the storage device client; if the processing result indicates that the processing is successful, the number of successful processing is successful, and the number of successful processing is the storage device client's received object The number of successful processing of the IO request; if the processing result indicates the failure processing of the termination, the number of successful processing remains unchanged; and the step of executing the response message returned by the storage device client is returned until the plurality of sub-objects IO are received The result of the request processing.
  • the receiving, by the storage device client Adjusting the processing quantity threshold by the processing result of the object IO request comprising: the controller periodically acquiring the current value of the sent quantity and the current value of the successfully processed quantity according to a predetermined time period; Calculating the processing success rate of the object IO request by calculating the current value of the quantity and the current value of the number of successfully processed; adjusting the processing success rate as the first adjustment coefficient
  • the number of processing thresholds is processed as a whole.
  • the method further includes: adjusting, according to the second adjustment coefficient, a quantity threshold adjusted according to the first adjustment coefficient Wherein the value of the second adjustment coefficient is proportional to the first adjustment coefficient.
  • the controller is configured with an upper limit of the processing quantity threshold
  • the method further includes: modifying the adjusted processing quantity threshold according to the upper limit value or the lower limit value of the processing quantity threshold, so that the value of the adjusted processing quantity threshold is located in the Handles between the upper and lower limits of the quantity threshold.
  • the method further includes:
  • the controller periodically acquires the current value of the sent quantity and the current value of the successfully processed quantity according to a predetermined time period; according to the current value of the sent quantity and the current value of the successfully processed quantity, Calculating a processing success rate of the object IO request; adjusting the processing success rate as the first adjustment coefficient.
  • the method further includes: adjusting the sleep time according to the third adjustment coefficient and the first adjustment coefficient;
  • the value of the third adjustment coefficient is inversely proportional to the first adjustment coefficient.
  • the controller is configured with an upper limit of the sleep time
  • the method further includes: correcting the adjusted sleep time according to the upper limit value or the lower limit value of the sleep time, so that the value of the adjusted sleep time is located in the sleep time Between the upper and lower limits.
  • the method further includes
  • the controller returns a response message to the requester that sends the object IO request, where the response message is Carrying the final processing result of the object IO request; updating the to-be-processed quantity.
  • a second aspect of the embodiments of the present invention provides a service flow control method in an object storage system, where the object storage system includes a controller and a storage device client, and the method includes: the controller receives a first object IO request Obtaining a split size threshold, where the split size threshold is a size of an object IO request that the object storage system can process; when the size of the first object IO request is greater than the split size threshold, the control Splitting the second object IO request into a plurality of sub-object IO requests, wherein each sub-object IO request is not greater than the split size threshold and carries the same identifier; sending the first child to the storage device client The object IO requests, and initiates a sleep time; receiving a response message of the first sub-object IO request returned by the storage device client, where the response message carries the processing result of the first sub-object IO request; The condition is adjusted according to the processing result of the received object IO request.
  • the method further includes: after the end of the sleep time, sending a second sub-object IO request to the storage device client; The step of sleeping time directly sends the multiple sub-object IO requests to the storage device client.
  • the method further includes: The quantity, the sent quantity is the sent quantity of the object IO request sent by the controller to the storage device client; if the processing result of the first object IO request carried in the first response message is represented If the processing succeeds, the number of successful processing is updated, the number of successful processing is the number of successful processing of the received object IO request by the storage device client; if the first object IO is requested in the first response message
  • the processing result indicates the failure processing of the termination, and the number of successful processing remains unchanged; and the step of executing the receiving the storage device client return response message is returned until the processing result of the plurality of sub-object IO requests is received.
  • the Adjusting the sleep time according to the processing result of the received object IO request is specifically: the controller periodically acquires the current value of the sent quantity and the current number of the successfully processed quantity according to a predetermined time period. And calculating a processing success rate of the object IO request according to the current value of the sent quantity and the current value of the successfully processed quantity; and adjusting the sleep time by using the processing success rate as the first adjustment coefficient.
  • the method further includes:
  • the controller is configured with an upper limit of the sleep time
  • the method further includes: correcting the adjusted sleep time according to the upper limit value or the lower limit value of the sleep time, so that the value of the adjusted sleep time is located in the sleep time Between the upper limit value and the lower limit value.
  • a third aspect of the embodiments of the present invention provides a controller for implementing service flow control in an object storage system, where the controller includes a storage module 701, a processing module 702, a receiving module 703, and a sending module 704.
  • the processing module 702 obtains a processing quantity threshold and a to-be-processed quantity from the storage module 701, where
  • the processing quantity threshold is a threshold value of the number of object IO requests that the object storage system can process, the number of to-be-processed is the number of object IO requests to be processed in the object storage system;
  • the processing module 702 is further configured to send the first object IO request to the sending module 704, and update the to-be-processed quantity in the storage module 701;
  • the sending module 704 further uses Sending the first object IO request to the storage device client; receiving the first response of the first object IO request returned by the storage device client ,
  • the first response message carries the
  • the processing module 702 is further configured to request the first object IO, if the to-be-processed quantity is greater than or equal to the processing quantity threshold.
  • the requester returns a reject response message or a busy response message.
  • the processing module 702 is further configured to send the first object IO request to the After the sending module 704, the sleep time is initiated, and after the sleep time ends, the second object IO request is sent to the sending module 704.
  • the processing module 702 is further configured to: Updating the number of sent in the storage module 704 after receiving the first response message, where the sent quantity is a sent quantity of an object IO request sent by the controller to the storage device client; The processing result carried in the response message indicates that the processing is successful, and the number of successful processing in the storage module 704 is updated.
  • the number of successful processings is the number of successful processing requests by the storage device client for the received object IO.
  • the processing module 702 is further configured to: when the first object IO request is greater than a split When the size threshold is used, the first object IO request is split into a plurality of sub-object IO requests, wherein each sub-object IO request is not greater than the split size threshold and carries the same identifier, wherein the split size threshold is a size threshold of the object IO request that can be processed by the object storage system; sending the split first sub-object IO request to the storage device client through the sending module 704; initiating a sleep time, and ending at the sleep time The second sub-object IO request is then sent by the sending module 704.
  • the receiving module 704 receives a response message of the first sub-object IO request returned by the storage device client, where The response message carries the processing result of the first sub-object IO request; and The response message is sent to the processing module 702.
  • the processing module 702 is further configured to: receive the processing result of the first sub-object IO request, and update the sent quantity; the sent quantity is sent to the storage device client.
  • the number of sent requests of the object IO request; if the processing result indicates that the processing is successful, the processing module 702 is further configured to update the number of successful processes, where the number of successful processes is that the storage device client processes the received object IO request. The number of successes.
  • the processing module 702 is configured to receive the predetermined condition
  • the processing result of the object IO request is adjusted to adjust the processing quantity threshold in the storage module 701, specifically: the processing module 702 periodically acquires the current value of the sent quantity and the successfully processed quantity according to a predetermined time period. a current value; calculating a processing success rate of the object IO request according to the current value of the sent quantity and the current value of the successfully processed quantity, and adjusting the processing success rate as the first adjustment coefficient to adjust the processing quantity threshold.
  • the processing module 702 is further configured to adjust the quantity threshold adjusted according to the first adjustment coefficient according to the second adjustment coefficient, wherein the value of the second adjustment coefficient is proportional to the first adjustment coefficient.
  • the storage module 701 further stores an upper limit value and a lower limit value of the quantity threshold; the processing module 702 is further configured to perform processing after the adjustment according to the upper limit value or the lower limit value of the processing quantity threshold value.
  • the quantity threshold is corrected such that the value of the adjusted number of processing thresholds is between the upper and lower limits of the processing quantity threshold.
  • the processing module 702 is further configured to use a predetermined time period period. And acquiring a current value of the sent quantity and a current value of the successfully processed quantity; calculating a pair according to the current value of the sent quantity and the current value of the successfully processed quantity The processing success rate like the IO request; and the processing success rate is used as the first adjustment coefficient to adjust the sleep time.
  • the processing module 702 is further configured to adjust the sleep according to the third adjustment coefficient and the first adjustment coefficient Time; wherein the value of the third adjustment coefficient is inversely proportional to the first adjustment coefficient.
  • the storage module 701 further stores an upper limit value and a lower limit value of the sleep time
  • the processing module 702 is further configured to modify the adjusted sleep time according to the upper limit value or the lower limit value of the sleep time, so that the value of the adjusted sleep time is located at an upper limit value of the sleep time and Between the lower limits.
  • the processing module 702 is further configured to send the object IO by using the receiving module 703.
  • the requesting party returns a response message carrying the final processing result of the object IO request; and updating the to-be-processed quantity.
  • a fourth aspect of the embodiments of the present invention provides a controller for implementing service flow control in an object storage system, where the controller includes a storage module 701, a processing module 702, a receiving module 703, and a sending module 704.
  • the processing module 702 is configured to obtain a split size threshold from the storage module 701 after receiving the first object IO request,
  • the split size threshold is a size of the object IO request that the object storage system can process;
  • the processing module 702 is further configured to: when the size of the first object IO request is greater than the split size threshold,
  • the two object IO requests are split into a plurality of sub-object IO requests, wherein each sub-object IO request is not greater than the split size threshold and carries the same identifier; the first sub-object IO request is sent to the sending module 704, and the sleep time is initiated.
  • the sending module 704 is further configured to send the first sub-object IO request to a storage device connected to the controller Receiving, by the client, a response message of the first sub-object IO request returned by the storage device client, where the response message carries a processing result of the first sub-object IO request; and the first sub-object IO is The response message of the request is sent to the processing module 702.
  • the processing module 702 is further configured to adjust the sleep time according to the processing result of the received object IO request when the predetermined condition is met.
  • the processing module 702 is further configured to: after the sleep time is started, after the sleep time ends, the sending module sends the storage device to the storage device client. Sending a second sub-object IO request; returning to performing the step of starting the sleep time, directly sending the plurality of sub-object IO requests to the storage device client.
  • the processing module 702 is further configured to receive the response of the first sub-object IO request After the message, the number of sent is updated, the number of sent is the sent quantity of the object IO request sent by the processing module 702 to the storage device client by the sending module 704; if the first sub-object IO The processing result of the first object IO request carried in the response message of the request indicates that the processing is successful, and the processing module 702 is further configured to update the number of successful processes, where the number of successful processes is received by the storage device client. The number of successful processing of the object IO request; if the processing result of the first object IO request carried in the response message requested by the first sub-object IO indicates the failure processing of the termination, the number of successful processing remains unchanged.
  • the processing module 702 is further configured to meet When the predetermined condition is met, adjusting the sleep time according to the processing result of the received object IO request is: the processing module 702 periodically acquires the current value of the sent quantity and the successful processing according to a predetermined time period. a current value of the quantity; calculating a processing success rate of the object IO request according to the current value of the sent quantity and the current value of the successfully processed quantity; and adjusting the processing success rate as the first adjustment coefficient to adjust the sleep time .
  • the processing module 702 is further configured to: adjust, according to the third adjustment coefficient, the adjusted according to the first adjustment coefficient a sleep time; wherein the value of the third adjustment coefficient is related to the first adjustment system The number is inversely proportional.
  • the storage module 701 further stores the sleep time
  • the processing module 702 is further configured to correct the adjusted sleep time according to the upper limit value or the lower limit value of the sleep time, so that the value of the adjusted sleep time is located Between the upper limit value and the lower limit value of the sleep time.
  • a fifth aspect of the embodiments of the present invention provides an apparatus for implementing service flow control in an object storage system, including the controller according to any one of claims 20-39.
  • a sixth aspect of the embodiments of the present invention provides a system for implementing service flow control, including the controller, the storage device client, and the at least two storage devices according to any one of claims 20-39;
  • the storage device client is connected, and the storage device client is connected to the at least two storage devices.
  • the embodiment of the present invention considers that when the object storage system receives a large number of object IO requests during the peak period of the service, and the performance and the success rate of the object storage system processing the object IO request are low, it is proposed to add the object storage in the processor of the object storage system.
  • the threshold of the number of object IO requests that the system can process that is, the processing quantity threshold, and correspondingly adjust the processing quantity threshold according to the processing result of the object IO request, thereby controlling the number of object IO requests received by the object storage system and the object
  • the storage device in the storage system sends the number of the object IO requests, so that the object IO request received by the storage device does not exceed its processing capability and the caching capability, so that the resources of the storage device are used in the effective processing of the object IO request, thereby improving
  • the object storage system handles the performance and success rate of object IO requests.
  • the embodiment of the invention further proposes adding a sleep time to the processor of the object storage system, and correspondingly adjusting the sleep time according to the processing result of the object IO request, thereby controlling the sending of the object IO request to the storage device in the object storage system.
  • the time interval thereby controlling the object IO request that the storage device needs to process, so that the object IO request received by the storage device does not exceed the processing capability and the caching capability, so that the resources of the storage device are used in the effective processing of the object IO request, thereby Lift
  • the high object storage system handles the performance and success rate of object IO requests.
  • FIG. 1 is a schematic diagram of a system architecture of an object storage system
  • Figure 2-1 shows a method flow of a service flow control in an object storage system
  • Figure 2-2 shows a method flow of another service flow control in the object storage system
  • Figure 2-3 is a flow chart of another method for controlling traffic flow in an object storage system
  • FIG. 3 is a flow chart of another method for controlling traffic flow in an object storage system
  • FIG. 5 is another schematic diagram of a system architecture of an object storage system
  • FIG. 6 is a flow chart of another method for controlling traffic flow in an object storage system
  • FIG. 7 is a schematic structural diagram of a controller for implementing service flow control in an object storage system
  • FIG. 8 is a schematic structural diagram of a service flow control device for implementing service flow control in an object storage system
  • FIG. 9 is a schematic diagram of an object storage system capable of implementing traffic flow control.
  • the present invention provides a method, controller and system for traffic flow control in an object storage system.
  • the controller in the object storage system adjusts the threshold of the number of object IO requests that the object storage system can process according to the processing condition of the storage device for the object IO request, that is, the processing quantity threshold, and controls the number of received object IO requests.
  • the number of object IO requests sent to the storage device is not more than the processing capability and the caching capability of the storage device, ensuring the processing capability of the storage device, thereby improving the success rate and timeliness of the object storage system's processing of the object IO request.
  • FIG. 1 A schematic structural diagram of an object storage system according to an embodiment of the present invention is shown in FIG.
  • the controller 101 is connected to a storage device disk client 103, and the storage device disk client 103 is connected to a plurality of storage devices in the storage device cluster 104.
  • the controller 101 can also be connected to an external client, and the external client can also be connected to other devices.
  • the controller 101 and the storage device client The terminal 103 can be deployed in one server or separately in two servers.
  • the server can be an HTTP (Hyper Text Transfer Protocol) server, that is, a server using the HTTP protocol.
  • the controller 101 and the storage device client 103 generally have a 1:1 relationship, that is, one controller 101 corresponds to one storage device client 103.
  • the storage system may also include multiple sets of controllers and storage device clients (not shown in FIG. 1), and each controller is connected to a storage device in the storage device cluster through a corresponding storage device client.
  • a storage device cluster consists of multiple storage devices. Multiple storage devices provide a unified namespace and scalable storage space for each group of controllers and storage device clients through a certain distribution algorithm.
  • a cluster of storage devices can be shared by multiple storage device clients for independent control and operation of each group of controllers and storage device clients. In actual use, each group of controllers and storage device clients can be connected to only some of the storage devices in the storage device cluster.
  • controller 101 and the storage device client 103 are deployed in an HTTP server.
  • the storage device is an IP disk
  • the storage device client is an IP disk client
  • the IP disk client can be connected to multiple IP disks.
  • IP disks provide a unified namespace and scalable mass storage space through distributed algorithms.
  • the IP disk in the object storage system uses Key-Value as the basic access unit.
  • a Key-Value operation is an IO request, which is a value calculated according to parameters such as attributes requested by the object IO. Each key corresponds to a value, and the value is an object.
  • the storage device can also use other types of smart disks, such as SSD disks. The implementation principles of other types of storage devices are similar to those of the IP disk, unless otherwise stated.
  • the method flow of the service flow control in the object storage system is as shown in FIG. 2-1.
  • Step 201 The controller receives the first object IO request.
  • the user sends a first object IO request to the controller through the client.
  • the client may first send the controller domain name information to the domain name server, and the domain name server returns the IP address of the controller to the client, and then the client according to the received IP address.
  • the first object IO request is sent to the corresponding controller.
  • Step 203 The controller acquires a processing quantity threshold and a to-be-processed quantity.
  • the processing quantity threshold is a quantity threshold of the object IO request that can be processed by the object storage system, where the to-be-processed quantity is to be processed in the object storage system. The number of object IO requests.
  • the controller stores a maximum value of the number of object IO requests that the object storage system can process, that is, the number of processing thresholds.
  • the controller also records the number of object IO requests to be processed in the object storage system, that is, the number to be processed.
  • the value of the number of pending objects of the object IO request in the object storage system varies with the processing of the object IO request.
  • the processing quantity threshold may be dynamically adjusted by the controller according to the processing result of the object IO request, ensuring that the processing quantity threshold is an object that the object storage system can process in the current state.
  • the maximum value of the IO request may be dynamically adjusted by the controller according to the processing result of the object IO request, ensuring that the processing quantity threshold is an object that the object storage system can process in the current state.
  • Step 205 If the to-be-processed quantity is less than the processing quantity threshold, the controller sends the first object IO request to the storage device client, and updates the to-be-processed quantity.
  • the controller Comparing the to-be-processed quantity and the processing quantity threshold, when the to-be-processed quantity is less than the processing quantity threshold, the capability of the object storage system to process the object IO request is not yet reached, and the processing may be further processed.
  • a large number of object IO requests so the controller sends the received first object IO request to the storage device client.
  • the number of object IO requests to be processed in the object storage system increases, and the number of to-be-processed needs to be updated.
  • the controller may first send the first object IO request to the storage device client and then update the to-be-processed quantity; or may first update the to-be-processed quantity and then send the first object IO request to the storage device client.
  • the number of to-be-processed can be recorded using a counter, and when the number of to-be-processed is updated, the counter is incremented by one.
  • the number of to-be-processed may also adopt other methods of recording and updating, for example, the number of to-be-processed may also be counted in a reciprocal manner. No more examples are given here.
  • the controller may first add the number N to be processed, and then send the first object IO request to the storage device client; or first send the first object IO request to the storage device client.
  • the number N to be processed is further increased by one. There are no strict order restrictions for these two operations.
  • the storage device client sends the first object IO request to the corresponding storage device for processing. After receiving the first object IO request, the storage device client allocates an interface for the received first object IO request, and the interface determines information of the storage device corresponding to the first object IO request. The storage device client sends the first object IO request to the storage device according to the determined information of the storage device. The storage device arranges the received object IO requests into a queue and processes them in sequence. After the first object IO request processing is completed, the storage device returns a response message of the first object IO request to the storage device client, and the response The message carries the processing result information of the first object IO request.
  • the storage device For processing the successful object IO request, the storage device returns a response message carrying the processing success information to the storage device client, and starts processing the next object IO request in the queue.
  • the storage device returns an overload response message to the storage device client.
  • the storage device After receiving the response message of the processing failure, the storage device client may resend the processing object IO request to the storage device for processing until a certain number of times or the processing of the object IO request has exceeded the predetermined time limit.
  • the storage device client may also send the object IO request to the storage device for processing again. After a certain number of attempts, the object IO still has not been processed successfully, and the response message carries the processing result indicating the failure processing of the termination. The number of attempts is set by the object storage system according to business needs.
  • Step 207 The controller receives a response message of the first object IO request returned by the storage device client, where the response message carries the processing result that the first object IO requests processing failure or success.
  • the storage device client receives a response message of the first object IO request returned by the storage device, where the response message carries the result of the processing of the first object IO request processing failure or processing success, and the storage device client receives the response again.
  • the response message is returned to the controller.
  • the controller After receiving the response message of the first object IO request returned by the storage device client, the controller returns the response message to the requester of the first object IO request, and updates the to-be-processed quantity.
  • the update to the amount to be processed needs to be consistent with the update method of the number of pending requests when the object IO request is sent to the storage device client. For example, when the controller sends an object IO request to the storage device client, the number to be processed is incremented by one. Then, when the controller returns a response message to the requester requested by the object IO, the number of pending values is decremented by one.
  • the to-be-processed quantity may also be updated when the controller receives a response message from the storage device client returning the first object IO request. That is, when the controller receives the response message of an object IO request returned by the storage device client, the controller updates the to-be-processed quantity, for example, decrements the to-be-processed quantity by one.
  • the number of object IO requests to be processed in the object storage system can be accurately recorded by an increase or decrease in the number of pending processes.
  • the controller When receiving a new object IO request, the controller will process the current value of the quantity and the number of processing The current value of the threshold is compared, and it is determined whether the object IO request is accepted based on the comparison result. When the current value of the to-be-processed quantity is greater than or equal to the current value of the processing quantity threshold, it indicates that the object storage system cannot process the new object IO request, if the new object IO request is accepted and sent to the storage device through the storage device client. The processing will cause the storage device to drop the extra performance reply system busy response message, thereby affecting the object IO request being processed, resulting in an increase in the delay of the object IO request, an increase in the failure rate, and finally the performance of the storage device is degraded.
  • the controller directly returns the rejected response message or the busy response message to the requester requested by the object IO and discards the piece of object IO request.
  • Step 209 When the predetermined condition is met, the controller adjusts the processing quantity threshold according to the processing result of the received object IO request.
  • the predetermined condition may be a predetermined time period, or may be a predetermined number of values to be processed, or may be a difference between a predetermined number of to-be-processed and a processed number threshold.
  • the controller adjusts the value of the processing number threshold according to the processing result of the received object IO request.
  • the processing result of the object IO request here may be the processing result of all the object IO requests received by the controller, or may be the processing result of the object IO request received by the controller in the current time period.
  • the controller may clear all the received object IO request results and re-receive the result, and may also retain the processing result of all the object IO requests, which is not limited in the embodiment of the present invention.
  • the transmitted object IO request does not necessarily receive the response message. That is to say, whether the first object IO request has received the response message does not affect the controller to adjust the processing quantity threshold according to the processing result of the object IO request carried in the received response message. Therefore, steps 207 and 209 do not have a strict sequence.
  • the number of object IO requests that the storage device can process and cache is limited. During the peak period of the service, the number of IO requests that each storage device needs to process is large. When the sending speed of the object IO request exceeds the processing and caching capabilities of the storage device. Some object IO requests will not be processed. For an object IO request that cannot be processed in time, the storage device feeds back an overload response message to the storage device client, and the storage device client attempts to retry and sends the object IO request to the storage device again. The feedback overload response message will occupy more disk resources of the storage device. Thus, the performance of the storage device processing the object IO request is degraded, and the waiting time of the object IO request in the queue is increased. This cycle, the storage device The processing performance is degraded, the time for the object IO request to wait increases, the object IO request cannot be processed in time, and the object IO request failure rate increases.
  • the number of object IO requests sent to the storage device client is controlled at the controller.
  • the processing quantity threshold represents the maximum value of the object IO request that the object storage system can process, that is, the maximum number of object IO requests that each storage device in the object storage system can process.
  • the number of object IO requests that the storage device can process varies depending on the occupancy of the storage device's resources.
  • the controller dynamically adjusts the value of the processing quantity threshold according to the processing condition of the object IO request, and controls the number of received object IO requests according to the adjusted processing quantity threshold, that is, Controlling the value of the to-be-processed quantity, so that the number of the object IO requests to be processed does not exceed the processing capacity of the object storage system, and the resources of the object storage system are all put into the effective processing of the object IO request, thereby improving the object storage system. Processing performance and success rate, reducing the processing delay of object IO requests.
  • the service flow control method may further include the following steps, as shown in FIG. 2-2:
  • Step 202 The controller receives the second object IO request.
  • the implementation of the step 202 is the same as that of the step 201, and is not described here. The details are not shown in FIG. 2-2.
  • Step 204 The controller acquires a current value of the processing quantity threshold and a current value of the to-be-processed quantity. Step 204 is similar to the implementation of step 202. Because the processing quantity threshold is dynamically adjusted by the controller according to the processing result of the object IO request, and the number of pending processing is also adjusted according to the number of received object IO requests, therefore, the controller acquires after receiving the object IO request. Is the value of the pending quantity currently stored in the controller and the number of processing thresholds. It will not be described in detail here, nor is it otherwise indicated in Figure 2-2.
  • Step 206 If the current value of the to-be-processed quantity is greater than or equal to the current value of the processing quantity threshold, the controller returns a reject response message or a busy response message.
  • the controller After the controller obtains the current value of the processing quantity threshold and the current value of the to-be-processed quantity, the size of the two values is compared. When the current value of the to-be-processed quantity is less than the processing quantity threshold, step 205 and subsequent description are performed. The method is not described here.
  • the current value of the to-be-processed quantity is greater than or equal to the current value of the processing quantity threshold, it indicates that the number of object IO requests to be processed has exceeded or reached the processing capacity of the object storage system, and if the new object IO is received again, The request must be put pressure on the object storage system. The object storage system needs to separate resources to handle these overloaded object IO requests, thereby affecting the performance of the entire object storage system and reducing processing efficiency.
  • the controller when the current value of the to-be-processed quantity is greater than or equal to the processing quantity threshold, the controller no longer accepts a new object IO request, and the controller returns a rejection response message to the client that sends the second object IO request. Or a busy response message. At the same time, the controller can also discard the second object IO request.
  • the controller When the current value of the to-be-processed quantity is greater than or equal to the current value of the processing quantity threshold, the controller no longer accepts the new object IO request, but directly returns a rejection response message or busy to the requesting party that sends the object IO request.
  • the response message is used to control the number of object IO requests sent by the storage device client to the storage device, thereby avoiding excessive object IO request sending to the storage device to cause congestion, thereby improving the efficiency of the object storage system processing the object IO request. , reduce the delay of the object IO request.
  • FIG. 2-3 Another implementation of the service flow control method in the object storage system is shown in Figures 2-3. Based on the method flow shown in Figures 2 and 3, the time interval for the controller to send an object IO request to the storage device client is increased.
  • the specific method flow is as follows:
  • Step 211 The controller starts the sleep time after sending the first object IO request to the storage device client.
  • the sleep time is the time interval between when the controller sends 2 object IO requests to the storage device client.
  • the controller can use a timer to record the sleep time, and the startup sleep time can be a start timer.
  • Step 213 The controller receives the third object IO request, and acquires a current value of the processing quantity threshold and a current value of the to-be-processed quantity. Step 213 is the same as the implementation method of step 201, and is not described here, nor is shown in FIGS. 2-3.
  • the steps 213 and 211 have no strict time sequence, that is, the controller may receive the third object IO request before starting the sleep time, or may receive the third object IO request after starting the sleep time.
  • Step 215 If the current value of the to-be-processed quantity is less than the current value of the processing quantity threshold, after the sleep time ends, the controller sends the third object IO request to the storage device client, and updates the The number to be processed.
  • the controller enters the current value of the processed quantity threshold and the current value of the to-be-processed quantity into In the row comparison, when the current value of the to-be-processed quantity is less than the current value of the processing quantity threshold, indicating that the object storage system can also accept the new object IO request, the controller may send the received third object IO request to Storage device client processing. Different from the foregoing two method flows, after determining that the current value of the to-be-processed quantity is less than the current value of the processing quantity threshold, the controller does not immediately send the third object IO request to the storage device client, and It is necessary to wait for the sleep time to end before sending the third object IO request to the storage device client.
  • the controller After the controller sends the first object IO request to the storage device client, it needs to wait for a certain time interval (ie, sleep time) before sending the third object IO request to the storage device client, by the storage device.
  • the client sends it to the corresponding storage device for processing.
  • the time of the object IO request sent to the storage device can be adjusted, so that the storage device can have more time to process the object IO request, avoiding the object IO request to form congestion at the storage device, and ensuring that the storage device resources are used for processing.
  • Object IO requests improve the efficiency of the entire object storage system processing object IO requests.
  • the sleep time may be recorded by a timer, and the time required for the interval may be recorded in a timed manner, or the time required for the interval may be recorded in a countdown manner.
  • Step 217 When the predetermined condition is met, the controller adjusts the sleep time according to the processing result of the received object IO request.
  • the predetermined condition may be a predetermined time period or a value of a predetermined sleep time.
  • the controller adjusts the value of the sleep time according to the processing result of the received object IO request.
  • the processing result of the object IO request here may be the processing result of all the object IO requests received by the controller, or may be the processing result of the object IO request received by the controller in the current time period.
  • the controller may clear all the received object IO request results and re-receive the result, and may also retain the processing result of all the object IO requests, which is not limited in the embodiment of the present invention.
  • the transmitted object IO request does not necessarily receive the response message when the predetermined condition is met, that is, whether the sent object IO request receives the response message does not affect the controller to adjust the sleep according to the response message that has been received. time. Therefore, the step of receiving the response message of the third object IO request is not separately described here.
  • the sleep time may be adjusted by the controller through the processing result of the received object IO request.
  • the controller can control the number of object IO requests sent to the storage device for processing by controlling the time interval during which the object IO request is sent to the storage device, ensuring that the number of object IO requests sent to the storage device does not exceed the processing of the storage device.
  • the controller In order to implement dynamic adjustment of the foregoing processing quantity threshold or sleep time by the controller through the processing result of the received object IO request, the controller needs to perform statistics and analysis on the processing result of the object IO request.
  • the controller dynamically adjusts the processing quantity threshold or the sleep time by the processing success rate requested by the object IO. It can be understood that the controller can also dynamically adjust the processing quantity threshold or the sleep time according to the processing failure rate requested by the object IO, and the controller can also combine other elements on the basis of the object IO request processing success rate or processing failure rate. Dynamically adjust the processing threshold or sleep time.
  • Dynamic adjustment can be adjusted according to a certain time rule, or it can be adjusted after sending a certain number of object IO requests to the storage device client.
  • the controller periodically adjusts the processing quantity threshold or the sleep time as an example for description.
  • the controller needs to record the number of sent and the number of successful processing.
  • the sent quantity records the number of object IO requests sent by the controller to the storage device client;
  • the successful processed quantity records the number of object IO requests successfully processed by the controller in the object IO request sent by the controller to the storage device client.
  • the number sent can be set in the controller to record; the number of successful processes can also be set in the controller to record.
  • the number of sent There are two ways to update the number of sent. One is to update the sent quantity after the controller sends an object IO request to the storage device client, for example, incrementing the number of sent records of the current record by one. Another way is to update the sent quantity after the controller sends an object IO request to the storage device client, and then receives the response message of the object IO request returned by the storage device client, for example, the current record. The number of sent has been increased by 1. In the second mode, whether the returned response message is a response message that successfully processes or a response message that fails to process, as long as a response message is received, the number of sent records of the current record needs to be increased by one.
  • the latter update mode is specifically as follows. After the controller sends an object IO request to the storage device client, the storage device client sends the received object IO request to the storage device for processing. The storage device returns a response message to the storage device client, where the response message carries the processing result of the object IO request, for example, if the processing fails or the processing succeeds, the storage device client returns the response message to the controller, and the controller The number of sent records of the current record is updated after receiving the response message, for example, the number of sent records of the current record is increased by one.
  • the number of successful processing is updated when the controller receives the response message of the object IO request returned by the storage device client, and if the processing result carried in the response message is successful, the number of successful processes is updated, for example, the current The number of successful records recorded is increased by one.
  • the controller acquires the current value of the sent quantity and the current value of the successfully processed quantity, calculates the processing success rate of the object IO request, and adjusts the processing quantity according to the calculated processing success rate as the first adjustment coefficient. Threshold or sleep time.
  • the embodiment of the present invention proposes a success rate according to another adjustment coefficient. Adjust the obtained processing number threshold or sleep time to adjust. For the processing quantity threshold, the adjustment factor is proportional to the processing success rate. For sleep time, the adjustment factor is inversely proportional to the processing success rate.
  • the processing success rate is referred to as a first adjustment coefficient; the adjustment coefficient for adjusting the processing number threshold is referred to as a second adjustment coefficient; and the adjustment coefficient for adjusting the sleep time is referred to as The third adjustment factor.
  • the second adjustment coefficient is a constant, and the value thereof is proportional to the first adjustment coefficient, that is, when the value of the first adjustment coefficient is larger, the value of the second adjustment coefficient is also larger.
  • the third adjustment coefficient is a constant, and the value thereof is opposite to the first adjustment coefficient, that is, when the value of the first adjustment coefficient is larger, the value of the second adjustment coefficient is smaller.
  • the upper limit value and the lower limit value of the processing quantity threshold may be preset in the controller.
  • the upper limit of the processing quantity threshold is the maximum number of object IO requests that the object storage system can process;
  • the lower limit of the processing quantity threshold is the minimum number of object IO requests that the object storage system can process.
  • the adjusted processing quantity threshold is equal to the processing quantity threshold.
  • the processing quantity threshold calculated by the controller according to the first adjustment coefficient or the first adjustment coefficient and the second adjustment coefficient is smaller than the lower limit value of the processing quantity threshold, the adjusted processing quantity threshold is equal to the processing quantity threshold lower limit.
  • the sleep time of the object storage system also needs to be limited. Therefore, the upper limit value and the lower limit value of the sleep time can also be set in advance in the controller.
  • the sleep time adjusted by the controller according to the first adjustment coefficient or the first adjustment coefficient and the third adjustment coefficient needs to be between the upper limit value and the lower limit value of the predetermined sleep time. If the sleep time calculated by the controller according to the first adjustment coefficient or the first adjustment coefficient and the third adjustment coefficient is not between the upper limit value and the lower limit value of the predetermined sleep time, then according to the sleep time The upper limit value and the lower limit value correct the calculated sleep time.
  • the adjusted sleep time is equal to the sleep time.
  • the upper limit value if the sleep time calculated by the controller according to the first adjustment coefficient or the first adjustment coefficient and the third adjustment coefficient is less than the lower limit value of the set sleep time, the adjusted sleep time is equal to the sleep The lower limit of time.
  • the following is a specific example to illustrate how to adjust the processing number threshold and the sleep time by a predetermined time period.
  • the time period is preset to 1 minute and stored in the controller. It will be understood by those skilled in the art that the time period can be set to other values as needed, such as setting the time period to 30 seconds.
  • the time period can be set in the controller to record.
  • the trigger controller acquires the current number of sent and successful processing, and adjusts the processing quantity threshold and/or the sleep time. That is, in the embodiment of the present invention, the controller adjusts the processing number threshold and/or the sleep time every minute.
  • M M 1 ⁇ r 1 ⁇ ⁇ m , where M is the adjusted new processing number threshold, M 1 is the current value of the processing number threshold, r 1 is the current value of the first adjustment coefficient, and ⁇ m is the second The adjustment coefficient is relative to the value of the first adjustment coefficient.
  • ⁇ m is proportional to r, that is, the larger the first adjustment coefficient r is, the larger the second adjustment coefficient ⁇ is, and the smaller the first adjustment coefficient r is, the smaller the second adjustment coefficient ⁇ is.
  • M Min is a lower limit value of the processing quantity threshold
  • M Max is an upper limit value of the processing quantity threshold
  • an upper limit value and a lower limit value of the processing quantity threshold value are set in advance.
  • the initial value of r 1 is set to 100%.
  • the controller selects according to the current value of r 1 .
  • the corresponding formula is calculated and adjusted to obtain the value of the new processing quantity threshold.
  • a method of adjusting the sleep time for a predetermined period of time will be exemplified below.
  • t (t 1 +constant)/r 1 ⁇ t , where t is the new sleep time obtained by the adjustment, t 1 is the current value of the sleep time, r 1 is the current value of the first adjustment coefficient, and ⁇ t is The third adjustment coefficient is relative to the value of the first adjustment coefficient.
  • ⁇ t is inversely proportional to r, that is, the larger the first adjustment coefficient r is, the smaller the third adjustment coefficient ⁇ t is, and the smaller the first adjustment coefficient r is, the larger the third adjustment coefficient ⁇ t is.
  • t MinDelay is the lower limit value of the sleep time
  • t MaxDelay is the upper limit value of the sleep time
  • the upper limit value and the lower limit value of the sleep time are preset.
  • the lower limit of the sleep time is set to 0, and the unit of the sleep time is milliseconds.
  • the size of each object IO request is different.
  • the split size threshold of the object IO request is preset in the controller, and the object IO request larger than the split size threshold is called a large object IO request, which is smaller than The object IO request of the split size threshold is referred to as a small object IO request.
  • the split size threshold refers to the size of the object IO request that the object storage system can process.
  • the controller splits the large object IO request into multiple sub-object IO requests, splitting The sub-object IO requests are not greater than the split size threshold and carry the same identifier, and the same identifier is used to indicate that the sub-object IO requests are split by the same large object IO request. In general, the controller splits the large object IO request based on the split size threshold.
  • the pre-set object IO request has a split size threshold of 1 megabyte (M).
  • M 1 megabyte
  • the controller splits the first object IO request into five sub-object IO requests in units of 1M, and the five sub-objects and their sizes may be: first sub-object IO request, 1M; second Sub-object IO request, 1M; third sub-object IO request, 1M; fourth sub-object IO request, 1M; fifth sub-object IO request, 0.5M; and the 5 sub-object IO requests will carry the same identifier.
  • first object IO request as a large object IO request (that is, the size of the first object IO request is greater than the split size threshold) as an example to describe the processing manner of the controller for the large object IO request
  • the flow is as follows Shown in Figure 3.
  • the handling of large object IO requests is somewhat the same as that of Figure 2-1 or 2-2 and the corresponding object IO request in the corresponding text description. The same parts will be explained and will not be described in detail.
  • Step 301 The controller receives a first object IO request, where the first object IO request is greater than a pre-set split size threshold in the controller; wherein the split size threshold refers to an object IO request that the object storage system can process size.
  • Step 301 is similar to step 201, except that the first object at this time The IO request is a large object IO request.
  • Step 303 The controller acquires a current value of the processing quantity threshold and a current value of the to-be-processed quantity. Step 303 is similar to step 203.
  • Step 305 The controller confirms that the current value of the to-be-processed quantity is less than the current value of the processing quantity threshold, and the controller updates the to-be-processed quantity, and splits the first object IO request into multiple sub-object IO requests. Each sub-object IO request is not greater than the split size threshold, and each sub-object IO request carries the same identifier. At this time, the method of updating the number of to-be-processed by the controller is the same as that described in step 205.
  • step 205 when the controller sends the first object IO request to the storage device client, the number of to-be-processed is increased by one unit, that is, the number to be processed is increased by one.
  • the first object IO request is split into multiple sub-object IO requests and sent to the storage device client.
  • the number to be processed is only increased by one unit, that is, the number to be processed is increased by one. Therefore, the quantity to be processed records the number of object IO requests to be processed accepted by the controller, and has no relationship with the object IO request to be split into several sub-object IO requests.
  • the IP disk client allocates the same interface for the IO request carrying the same identifier. That is to say, a plurality of object IO write requests after the large IO write request is split are processed by an interface of the IP disk client.
  • the interface calculates the Key value of the allocated object IO request, and obtains the information of the corresponding IP disk according to the Key value, and sends the object IO write request to the corresponding IP disk for processing.
  • the split IO request may be sent to different IP disks. deal with.
  • the IP disk client can process concurrently, and process multiple IO requests at the same time, and send the IO request to the corresponding IP disk through the calculated KEY value.
  • the metadata and data requested by the small object IO can be stored separately, that is, the metadata and the data use different Key values; the metadata and the data can also be stored together, that is, the metadata and the data share a Key value.
  • the key value of the metadata is the container name plus the object name; the key value of the data is a string randomly generated according to the data. Since metadata and data use different Key values, metadata and data may be stored on the same IP disk or on different IP disks.
  • metadata and data are stored together, when metadata and data share a Key value, the metadata and data are stored together in the same location.
  • Step 307 The controller sends the split first sub-object IO request to the storage device client; and starts the sleep time.
  • Step 309 After the sleep time ends, the controller sends a second sub-object IO request to the storage device client, and then loops until the split multiple sub-object IO requests are sent.
  • the sleep time in this step is the same as the sleep time described above, and the adjustment method is the same, and will not be described separately here.
  • the storage device client and the storage device process the received sub-object IO request in the same manner as the received object IO request, and may adopt an existing implementation manner, and therefore will not be further described herein.
  • the storage device After the storage device processes the sub-object IO request, it returns a corresponding response message to the storage device client, and the storage device client returns a corresponding response message to the controller.
  • the response message carries the processing result of the corresponding object IO request.
  • Step 311 The controller receives a response message of the first sub-object IO request returned by the storage device client, where the response message carries the processing result of the first sub-object IO request.
  • the controller also receives response messages from other split sub-object IO requests.
  • Step 313 When the predetermined condition is met, the controller adjusts the processing quantity threshold according to the processing result of the received object IO request (including the sub-object IO request).
  • step 313 is the same as the method described in step 209, and details are not described herein again.
  • step 313 and step 311 there is no strict time sequence between step 313 and step 311, that is, whether the controller receives the response message of the first sub-object IO request or other sub-object IO request does not affect the controller according to the received Adjusting the processing threshold by the processing result of the arrival object IO request (including the sub-object IO request)
  • the transmitted quantity record is the number of object IO requests sent by the controller to the storage device client, and the successful processing quantity records the number of object IO requests processed successfully by the controller to the storage device client. Therefore, in the case of splitting a large object IO request, the object IO request sent by the controller to the storage device client is no longer one, but multiple split sub-object IO requests.
  • the number of sent records is the number of object IO requests that the controller actually sends to the storage device client, whether it is a split object IO request or a split child IO request, the same
  • the successful processing quantity records the number of object IO requests sent by the controller to the storage device client, including the object IO request without splitting, and the split sub-object IO request.
  • the transmitted quantity is updated, for example, the number of the transmitted is incremented by one.
  • the controller receives the response message of the first sub-object IO request, if the response message sent by the first sub-object IO is a processing result that is successfully processed, the controller also needs to update the successful processing.
  • the quantity for example, adds 1 to the number of successful processes. If the processing result of the processing failure is carried in the response message requested by the first sub-object IO, the controller does not update the number of successful processing, that is, the number of successful processing does not change.
  • the controller sends a second sub-object IO request to the storage device
  • the number sent is incremented by one.
  • the controller receives the response message of the second sub-object IO request returned by the storage device client, if the response message requested by the second sub-object IO is a processing result that is processed successfully, the controller will The number of successful processes is increased by one.
  • the controller may further update the sent quantity after receiving the response message of the first sub-object IO request after sending the first sub-object IO request to the storage device client, for example, the The number sent has been increased by 1. At this time, it is also required to determine whether the number of successful processes needs to be updated according to the processing result in the response message requested by the first sub-object IO.
  • the controller After receiving the response message of the second sub-object IO request sent by the controller, the controller adds 1 to the sent quantity, and determines whether to update the successful processing quantity according to the response of the second sub-object IO request. .
  • the method for adjusting the number of processing thresholds and the number of pending processing is the same as the foregoing manner, except that the specific number of sent and the number of successfully processed numbers are different, and will not be further described herein. .
  • the large object IO request processing fails if the processing result of any sub-object IO request is processing failure.
  • the controller needs to return a response message that fails to be processed to the requester of the large object IO, and notifies the storage device client to split the other small object IO that has been written by the large object IO write request of the storage device. delete.
  • the controller may further send the failed sub-object IO request to the storage device client, and after receiving a certain number of times or time, the received response is received. The message is the final result.
  • large object IO requests can also be split in the client and sent to the controller for processing.
  • the split size threshold requested by the object IO is preset in the client, and the client splits the large object IO request according to the split size threshold and then sends the request to the controller in turn.
  • the controller whether the sub-object IO request after the client split or the object IO request without splitting is received is handled in the same way, with the figures 2, 3 and 4 and the corresponding text. The processing in the description is the same, and will not be described again.
  • the controller may dynamically adjust the method according to the processing result of the object IO or the sub-object IO request according to a certain rule.
  • the processing quantity threshold and the to-be-processed quantity are controlled to control the number of object IO requests accepted by the object storage system, thereby ensuring that the number of object IO requests accepted by the controller does not exceed the processing capacity of the storage device in the object IO request, and the entire object is guaranteed.
  • Another embodiment of the present invention discloses a method for controlling traffic flow in another object storage system.
  • the split sub-object IO is requested to initiate a sleep time to adjust the storage device sent to the object storage system.
  • the specific implementation flow of the method is shown in FIG. 4. The method is applicable to the object storage system shown in FIG. 1, and the relevant explanation of the object storage system is not separately described.
  • Step 401 The controller receives a first object IO request, where the first object IO request is greater than a preset split size threshold set in the controller.
  • the split size threshold refers to the size of the object IO request that the object storage system can process. This step is similar to step 201 and will not be described in detail herein.
  • Step 403 The controller acquires a split size threshold.
  • Step 405 When the size of the first object IO request is greater than the split size threshold, the controller splits the first object IO request into multiple sub-object IO requests, and each sub-object IO after splitting The request is not greater than the split size threshold and carries the same identity. Normally, the controller splits the first object IO request according to the split size threshold. For example, the split size threshold is 1 megabyte (M), the first object IO request is 3.7M, and the controller splits the first object IO request into 4 sub-objects according to the split size threshold.
  • IO request first child IO request, 1M; second child IO request, 1M; third child IO request, 1M; fourth child IO request, 0.7M.
  • Step 407 The controller sends the split first sub-object IO request to the storage device client, and starts the sleep time.
  • the storage device client requests the first sub-object IO in the same manner as the storage device client processes the object IO request described in step 203, and is not further described herein.
  • the controller can use a timer to record the sleep time, and the startup sleep time can be a start timer.
  • the sleep time may be recorded by a timer, and the time required for the interval may be recorded in a timed manner, or the time required for the interval may be recorded in a countdown manner.
  • Step 409 After the sleep time ends, the controller sends the split second sub-object IO request to the storage device client. And so on, until the controller sends the split multiple sub-object IO requests to the storage device client.
  • the storage device client processes the second sub-object IO request and other sub-object IO requests in the same manner as the storage device client processes the first sub-object IO request or other object IO request, and will not be further described.
  • Step 411 The controller receives a response message of the first sub-object IO request returned by the storage device client, where the response message carries the processing result of the first sub-object IO request; the processing result may be processing success or processing The end result of the failure.
  • step 409 and step 411 there is no strict time limit between step 409 and step 411, and they do not affect each other. That is, for the first sub-object IO request, the step of the controller sending the first sub-object IO request to the storage device client always receives the response message of the first sub-object IO request from the storage device client. Before the step, but there is no order requirement between the step of the controller sending the second sub-object IO request to the storage device client and the step of the controller receiving the response message of the first sub-object IO request from the storage device client.
  • the steps are cross-implemented and independent of one another.
  • the controller needs to end the sleep time after sending the first sub-object IO request After sending the second sub-object IO request to the storage device client; and the first sub-object IO requests the response message, the controller may receive the second sub-object IO request before sending, or may send the second Received after the child object IO request.
  • Step 413 When the predetermined condition is met, the controller adjusts the sleep time according to the processing result of the received object IO request (including the sub-object IO request).
  • the controller may receive the response message of the first sub-object IO request returned by the storage device client, or may not receive the first sub-object IO request returned by the storage device client. Response message.
  • the controller may also receive the response message of the first sub-object IO request and the second sub-object IO request returned by the storage device client, and has not received the third sub-object IO request and the fourth sub-object IO request. response.
  • the controller adjusts the sleep time according to the processing result in the response message according to the other object IO request that has been returned or the response message of the other sub-object IO request.
  • the controller can control the number of object IO requests sent to the storage device for processing by controlling the time interval during which the object IO request is sent to the storage device, ensuring that the number of object IO requests sent to the storage device does not exceed the processing of the storage device.
  • the method may further include the step 415: when the controller receives the response message of all the sub-object IO requests that the first object IO requests to be split, request all the sub-object IO requests that are split according to the first object IO request.
  • the processing result carried in the response message returns a response message of the first object IO request to the requester that sends the first object IO request, and the response message of the first object IO request carries the processing of the first object IO request result.
  • the controller returns the carrying result of the processing to the requester requested by the first object IO.
  • the response message of the first object IO request, or the controller returns a response message of the first object IO request carrying the processing failure result to the requester of the first object IO request.
  • the controller updates the number of pending requests when the requestor requesting the first object IO returns a response message of the first object IO request.
  • the controller reduces the number of the to-be-processed by one, and the specific processing method is not described separately.
  • the controller In order to implement dynamic adjustment of the sleep time by the controller through the received object IO request and the processing result of the sub-object IO request, the controller needs to perform statistics and analysis on the processing result of the object IO request and the sub-object IO request.
  • the controller dynamically adjusts the sleep time by the processing priority of the object IO request and the sub-object IO request. It can be understood that the controller can also dynamically adjust the sleep time according to the processing failure rate of the object IO request and the sub-object IO request, and the controller can also combine other elements on the basis of the object IO request processing success rate or processing failure rate. Dynamic adjustment of sleep time.
  • Dynamic adjustment can be adjusted according to a certain time rule, or it can be adjusted after the sleep time reaches a certain value.
  • the controller periodically adjusts the sleep time as an example for description.
  • the controller needs to record the number of sent and the number of successful processes.
  • the sent quantity records are the number of object IO requests and sub-object IO requests sent by the controller to the storage device client; the successfully processed quantity records are the object IO request and the sub-object IO request sent by the controller to the storage device client.
  • the number of sent There are two ways to update the number of sent. One is to update the sent quantity after the controller sends an object IO request to the storage device client, for example, incrementing the number of sent records of the current record by one. Another way is to update the sent quantity after the controller sends an object IO request to the storage device client, after receiving the response message of the object IO request returned by the storage device client, for example, the current record. The number of sent has been increased by 1. In the second mode, whether the returned response message is a response message that successfully processes or a response message that fails to process, as long as a response message is received, the number of sent records of the current record needs to be increased by one. The update is the same when the controller sends a sub-object IO request to the storage device client.
  • the controller sends a sub-object IO request to the storage device client, the number of sent records of the current record is increased by one; or the controller sends a sub-object IO request to the storage device client, and receives the return from the storage device client.
  • the number of sent records of the current record is increased by one.
  • the number of successful processing updates is such that the controller receives an object IO request returned by the storage device client or When the response message is requested by the sub-object IO, if the processing result carried in the response message is successful, the number of successful processing is updated, for example, the number of successful processing of the current record is increased by one.
  • the controller acquires the current value of the transmitted quantity and the current value of the successfully processed quantity, calculates the processing success rate, and adjusts the sleep time according to the calculated processing success rate as the first adjustment coefficient.
  • the processing success rate can be the ratio of the number of successfully processed to the number of transmitted.
  • the embodiment of the present invention proposes a success rate according to another adjustment coefficient. Adjust the sleep time to adjust, and the adjustment coefficient is inversely proportional to the processing success rate.
  • the processing success rate is referred to as a first adjustment coefficient; the adjustment coefficient for adjusting the sleep time is referred to as a third adjustment coefficient.
  • the third adjustment coefficient is a constant, and the value thereof is opposite to the first adjustment coefficient.
  • the sleep time of the object storage system cannot be increased or decreased indefinitely, so the sleep time of the object storage system needs to be limited.
  • the upper and lower limits of the sleep time can be preset in the controller.
  • the sleep time adjusted by the controller according to the first adjustment coefficient or the first adjustment coefficient and the third adjustment coefficient needs to be between the upper limit value and the lower limit value of the predetermined sleep time. If the sleep time calculated by the controller according to the first adjustment coefficient or the first adjustment coefficient and the third adjustment coefficient is not between the upper limit value and the lower limit value of the predetermined sleep time, then according to the sleep time
  • the upper limit value and the lower limit value correct the calculated sleep time.
  • the adjusted sleep time is equal to the sleep time.
  • the upper limit value if the sleep time calculated by the controller according to the first adjustment coefficient or the first adjustment coefficient and the third adjustment coefficient is less than the lower limit value of the set sleep time, the adjusted sleep time is equal to the sleep The lower limit of time.
  • the following is a specific example to illustrate how to adjust the sleep time by a predetermined time period.
  • the time period is preset to 1 minute and stored in the controller. It will be understood by those skilled in the art that the time period can be set to other values as needed, such as setting the time period to 30 seconds.
  • the time period can be set in the controller to record.
  • the trigger controller acquires the current number of sent and the number of successful processes, and adjusts the sleep time. That is, in the embodiment of the present invention, the controller adjusts the sleep time every one minute.
  • a method of adjusting the sleep time for a predetermined period of time will be exemplified below.
  • t (t 1 +constant)/r 1 ⁇ t , where t is the new sleep time obtained by the adjustment, t 1 is the current value of the sleep time, r 1 is the current value of the first adjustment coefficient, and ⁇ t is The third adjustment coefficient is relative to the value of the first adjustment coefficient.
  • ⁇ t is inversely proportional to r, that is, the larger the first adjustment coefficient r is, the smaller the third adjustment coefficient ⁇ t is, and the smaller the first adjustment coefficient r is, the larger the third adjustment coefficient ⁇ t is.
  • t MinDelay is the lower limit value of the sleep time
  • t MaxDelay is the upper limit value of the sleep time
  • the upper limit value and the lower limit value of the sleep time are preset.
  • the lower limit value of the sleep time is set to zero.
  • the flow of the method for implementing the service flow control in the object storage system is exemplarily described below with a specific example.
  • the applicable object storage system is as shown in FIG. 5, and the method flow is as shown in FIG. 6.
  • the object storage system as shown in FIG. 5 includes a controller 501, an IP disk client 503, and an IP disk cluster 504. That is to say, the storage device in the object storage system in FIG. 5 is an IP disk, and the corresponding storage device client is an IP disk client.
  • the controller 501 is connected to the IP disk client 503.
  • the controller 501 and the IP disk client 503 are deployed in a server, and the server can be an HTTP server.
  • the IP disk client 503 is connected to some of the IP disks (504-1, 504-2, 504-3, and 504-4) in the IP disk cluster 504.
  • the controller 501 is also coupled to a client 502 that sends an object IO request to the controller 501.
  • the controller 501 stores a processing quantity threshold M and a to-be-processed number N.
  • the processing quantity threshold M refers to the maximum number of object IO requests that the object storage system can currently process.
  • the number N to be processed is waiting for processing in the object storage system.
  • the current value of M is 2000
  • the controller 501 also stores a sleep time t, which is a time interval during which the controller 501 sends two object IO requests to the IP disk client.
  • t is a time interval during which the controller 501 sends two object IO requests to the IP disk client.
  • the controller 501 also stores a time period T, and the controller updates the values of M and t according to the time period.
  • T is 30 seconds.
  • the controller 501 also stores the transmitted number P and the number of successful processes Q.
  • the sent quantity P records the number of object IO requests sent by the controller 501 to the IP disk client;
  • the successful process quantity Q records the object successfully processed by the controller 501 to the object IO request sent by the IP disk client.
  • the current value of P is 2800
  • the split size threshold requested by the object IO is also stored in the controller 501.
  • the split size threshold is 1M.
  • An adjustment formula for the processing number threshold M and the sleep time t is also stored in the controller.
  • the adjustment formula of the processing quantity threshold M is as follows:
  • M Min 200
  • M Max 3000
  • r 1 (Q 1 /P 1 ) ⁇ 100%.
  • the adjustment formula for the sleep time t is as follows:
  • the method flow for implementing traffic flow control in the object storage system is as follows.
  • Step 601 the controller 501 receives the first object IO request sent by the client 502; the size of the first object IO request is 3.5M.
  • Step 603 N 1 ⁇ M 1 , the controller 501 updates the number N to be processed, and splits the first object IO request according to the split size threshold (1M).
  • the current value N 1 of the to-be-processed quantity N is updated to 1501, and the first object IO request is split into four sub-object IO requests, respectively being a first sub-object IO request (1M), and the second sub-object IO request (1M), the third sub-object IO request (1M) and the fourth sub-object IO request (0.5M), the four sub-object IO requests carry the same identifier.
  • the controller 501 If the result of the comparison is N 1 >M 1 , the controller 501 returns a response message of the system busy to the client 201 that sends the first object IO request, at which time the controller 501 does not update the number N to be processed, and the first object IO Request to drop.
  • step 604 the controller 501 sends a first sub-object IO request to the IP disk client 503; and initiates a sleep time.
  • the IP disk client 503 After receiving the first sub-object IO request, the IP disk client 503 sends the first sub-object IO request to the IP disk 504-3 for processing according to a predetermined Key-Value algorithm.
  • the IP disk 504-3 After processing the first sub-object IO request, the IP disk 504-3 returns a response message of the first sub-object IO request to the IP disk client 503, and the response message carries the processing result that the first sub-object IO requests the processing success. .
  • the IP disk client 503 returns a response message to the controller 501.
  • Step 605 After the sleep time ends, that is, 100 milliseconds after the controller 501 sends the first sub-object IO request to the IP disk client 503, the controller 501 sends a second sub-object IO request to the IP disk client 503 to start the sleep time. . Similarly, after receiving the second sub-object IO request, the IP disk client 503 sends the first sub-object IO request to the IP disk 504-2 for processing according to a predetermined Key-Value algorithm. The IP disk client 503 determines a specific IP disk according to the Key-Value algorithm based on information such as metadata in the sub-object IO request. The four sub-object IO requests that the first object IO requests to split may be sent to the same IP disk for processing, or may be sent to different IP disk processing.
  • Step 606 after the sleep time is over, the controller 501 sends a third sub-object IO request to the IP disk client 503 to start the sleep time.
  • the processing method of the third sub-object IO request by the IP disk client 503 is the same as that described above, and will not be further described herein.
  • Step 607 After the sleep time ends, the controller 501 sends a fourth sub-object IO request to the IP disk client 503.
  • the processing method of the request by the IP disk client 503 for the fourth sub-object IO is the same as that described above, and will not be further described herein.
  • Step 608 the controller 501 receives the response message of the first sub-object IO request returned by the IP disk client 503, the controller 501 updates the sent quantity P, and the current value P 1 of the sent quantity is updated to 2801;
  • the response message carries a response message that the first sub-object IO requests processing success, and the controller 501 updates the successful processing quantity Q, and the current value Q 1 of the successfully processed quantity Q is updated to 2401.
  • step 808 is only required after step 804.
  • Step 609 the controller 501 receives the response message of the second sub-object IO request returned by the IP disk client 503, the controller 501 updates the sent quantity P, and the current value P 1 of the sent quantity is updated to 2802;
  • the response message carries a response message that the second sub-object IO requests the processing success, and the controller 501 updates the successful processing quantity Q, and the current value Q 1 of the successfully processed quantity Q is updated to 2402.
  • step 609 There is no strict chronological relationship between step 609 and steps 606-608, and step 609 is only required after step 605.
  • Step 610 reaching a predetermined time period, the controller 501 adjusts the values of the processing number threshold M and the sleep time t according to the processing result of the received object IO request (including the sub-object IO request).
  • Step 610 and other steps have no strict chronological order.
  • the controller 501 acquires the current value of the transmitted quantity P according to the processing result of the already obtained object IO request (including the sub-object IO request).
  • the current value of the quantity Q is successfully processed, and the corresponding calculation adjustment can be made.
  • Step 611 the controller 501 receives the response message of the third sub-object IO request returned by the IP disk client 503, the controller 501 updates the sent quantity P, and the current value P 1 of the sent quantity is updated to 2803;
  • the response message carries a response message that the third sub-object IO requests the processing success.
  • the controller 501 updates the successful processing quantity Q, and the current value Q 1 of the successfully processed quantity Q is updated to 2403.
  • step 611 may be followed by step 606, and there is no strict chronological relationship between steps 607-610.
  • Step 612 the controller 501 receives the response message of the fourth sub-object IO request returned by the IP disk client 503, the controller 501 updates the sent quantity P, and the current value P 1 of the sent quantity is updated to 2804;
  • the response message carries a response message that the fourth sub-object IO requests processing success, and the controller 501 updates the successful processing quantity Q, and the current value Q 1 of the successfully processed quantity Q is updated to 2404.
  • step 612 is only required after step 607, and there is no strict chronological relationship between steps 608-611.
  • Step 613 the controller 501 confirms that the four sub-object IO requests that the first object IO requests to be split all receive the response message, and the response message carries the processing result of the processing success, and the controller 501 returns to the client 502.
  • a response message of the object IO request, the response message of the first object IO request carries information of successful processing; the controller 501 updates the number N to be processed, and the current value N 1 of the number N to be processed is updated to 1500.
  • the controller 501 If the response message of the sub-object IO request of the first object IO request is received by the controller 501, the controller 501 returns the processing to the client 502 as long as the response message requested by one of the sub-objects IO carries the information of the processing failure. Failed response message. At this time, the controller 501 also needs to update the number N to be processed, and the current value N 1 of the number N to be processed is updated to 1500.
  • the controller 501 may further send the object IO request to the IP disk client 503 for a certain number of times.
  • the controller When the final result carried in the response message returned by the first object IO requesting the splitting of the first object IO request is the processing failure information, the controller returns the processing failure to the client 502. In addition to the response message, the information of the plurality of sub-object IO requests split by the first object IO request is deleted, and the storage device client 503 and the storage device 504 are notified that the subsequent processing is no longer performed.
  • the specific processing method is the same as the existing technology, and will not be described in detail herein.
  • Step 614 the controller 501 receives the second object IO request sent by the client 502, and the size of the second object IO request is 0.8M.
  • Step 616 N 1 ⁇ M 1 , the controller 501 updates the number N to be processed, and sends a second object IO request to the IP disk client 503.
  • the current value N 1 of the number N to be processed is updated to 1501. Since the second object IO request is smaller than the split size threshold, in this case, the controller 501 does not split the second object IO request, and sends the second object IO request to the IP disk client 503.
  • Step 617 the controller 501 receives the response message of the second object IO request returned by the IP disk client 503, the controller 501 updates the sent quantity P, and the current value P 1 of the sent quantity is updated to 2805; the response The message carries the response message that the second object IO requests the processing success.
  • the controller 501 updates the successful processing quantity Q, and the current value Q 1 of the successfully processed quantity Q is updated to 2405.
  • Step 618 the controller 501 receives the third object IO request sent by the client 502, and the size of the third object IO request is 0.7M.
  • step 618 There is no strict order relationship between step 618 and step 617.
  • Step 620 N 1 ⁇ M 1 , the controller 501 updates the number N to be processed, and sends a third object IO request to the IP disk client 503.
  • the current value of the number N to be processed is updated to N 1 updated to 1502. Since the third object IO request is smaller than the split size threshold, in this case, the controller 501 does not split the third object IO request, and sends the third object IO request to the IP disk client 503.
  • the controller 501 acquires the current value of the transmitted quantity P and the current value of the successfully processed quantity Q, calculates the current success rate, and then according to the current success.
  • the rate adjustment handles the number threshold M and the sleep time t.
  • the controller 501 sends the third sub-object IO request to the IP disk client 503, the controller 501 receives the response message of the first sub-object IO request.
  • the controller 501 sends the fourth sub-object IO request to the IP disk client 503, the predetermined time period is reached. At this time, the controller 501 adjusts M and t according to the current values of the respective parameters. It is also possible that the controller 501 does not adjust the M and t according to the current values of the respective parameters until after receiving the second object IO request and the third object IO request, for a predetermined period of time.
  • the controller periodically adjusts the processing quantity threshold and the sleep time according to the processing result of the object IO request, thereby adjusting the quantity of the processing of the sending object IO request to the storage device client and the storage device.
  • the time interval can ensure that the number of object IO requests sent to the storage device does not exceed the processing capacity of the storage device to avoid congestion at the storage device, which can improve the processing performance of the object storage system and reduce the delay.
  • the embodiment of the invention further provides a controller for implementing the various methods described above, and the specific structure is as shown in FIG. 7.
  • the controller includes a storage module 701, a processing module 702, a receiving module 703, and a transmitting module 704.
  • the receiving module 703 is configured to receive an object IO request sent by the user through the client, and return a response message of the received object IO request to the client, where the response message carries the processing result of the successful or failed processing of the object IO request. .
  • the receiving module 703 is further configured to return a system busy response message or a rejected response message to the client after receiving the command of the processing module 702.
  • the sending module 704 is configured to send an object IO request to the storage device client, and receive a response message of the object IO request returned by the storage device client, where the response message carries the processing result of the object IO request, including the processing result or processing of the processing success. The result of the failure processing.
  • the storage module 701 is configured to store information required by the controller, including:
  • the number of pending thresholds the maximum number of object IO requests that the object storage system can currently handle
  • the number of pending objects the number of object IO requests currently waiting to be processed in the object storage system
  • the controller During sleep time, the controller currently sends 2 object IO requests (including children) to the storage device client. Time interval of object IO request);
  • the controller updates the processing time threshold and the sleep time period
  • the number of successfully processed, the number of object IO requests (including sub-object IO requests) processed by the controller in the object IO request (including the sub-object IO request) sent to the storage device client is processed successfully;
  • the adjustment formula of the quantity threshold to be processed is used to adjust the quantity threshold to be processed according to the adjustment formula of the quantity threshold to be processed when the predetermined condition is met;
  • the adjustment formula of the sleep time is used to adjust the sleep time according to the adjustment formula of the sleep time when the predetermined condition is satisfied.
  • the above information can be selected according to business needs, and does not need to be all included.
  • the split size threshold is stored in the client, and the controller stores There is no need to store split size threshold information in the module.
  • the number of pending thresholds or the sleep time is updated after a certain number of object IO requests are sent to the storage device client, it is not necessary to store the time period information in the storage module.
  • the user can also store other information in the storage module 701 as needed, and will not be exemplified herein.
  • the processing module 702 is configured to perform related determination, calculation, comparison, and the like.
  • the processing module 702 is configured to implement the following actions.
  • the processing module 702 obtains an object IO request from the receiving module 703.
  • the processing module 702 acquires the required data information from the storage module 701.
  • the processing module 702 compares the current value of the to-be-processed threshold obtained from the storage module with the current value of the to-be-processed quantity, and determines the size relationship between the two. When the current value of the to-be-processed quantity is less than the current value of the to-be-processed quantity threshold, the processing module 702 updates the current value of the quantity to be processed, and performs corresponding processing on the object IO request. When the current value of the to-be-processed quantity is greater than or equal to the current value of the to-be-processed quantity threshold, the receiving module 703 returns a rejected response message or a system busy response message to the client.
  • the processing module 702 is configured according to the The split size threshold splits the object IO request into multiple sub-object IO requests, and the size of the split multiple sub-object IO requests is not greater than the split size threshold and both carry the same identifier.
  • the object IO request request is sent by the sending module 704 to the storage device client.
  • the processing module 702 may also initiate a sleep time after sending an object IO request to the storage device client, and send a next object IO request to the storage device client after the sleep time ends. Or the processing module 702 only requests the split sub-object IO to initiate the sleep time, that is, after the sub-object IO request is sent, the sleep time is started, and after the sleep time ends, the next sub-object IO request is sent to the storage device client.
  • the processing module 702 is further configured to obtain, from the sending module 704, a response message of the object IO request returned by the storage device client, and return a response message of the object IO request to the client by the receiving module 703. After the processing module 702 splits an object IO request into multiple sub-object IO requests, after obtaining the response message of all the sub-object IO requests requested by the object IO, and then carrying the response message according to all the sub-object IO requests Processing the result, returning the response message of the object IO request to the client.
  • the processing module 702 If the response message of all the sub-object IO requests requested by the object IO is a response message that successfully processes, the processing module 702 returns a response message that the object IO requests the processing success to the client, otherwise, the processing module 702 sends the response message to the client. Returns a response message that the object IO request failed to process.
  • the processing module 702 is also used to update the number of sent and successfully processed values.
  • the sent number may be updated after the processing module 702 sends the object IO request or the sub-object IO request to the storage device client through the sending module 704, or may be updated after obtaining the object IO request or the response message of the sub-object IO request by the sending module 704. .
  • the number of successful processes is updated when the processing module 702 obtains the response message of the object IO request or the sub-object IO request through the sending module 704 and carries the processing result of the processing success in the response message.
  • the specific update method has been explained in detail and examples in the foregoing, and will not be further described here.
  • the processing module 702 is further configured to determine whether the predetermined time period has arrived, and when the predetermined time period is reached, adjust the processing quantity threshold and the sleep time.
  • the processing module 702 is further configured to adjust the processing quantity threshold and/or the sleep time according to the stored formula.
  • the specific adjustment method has been described in detail and exemplified in the foregoing, and will not be further described herein.
  • the controller may adjust the value of the processing quantity threshold and/or the sleep time by using a certain algorithm by using the received response message of the object IO request.
  • the controller directly returns a rejected response message or a busy response message to the requesting party, and discards the received object IO request.
  • the controller can control the number of object IO requests sent by the storage device client to the storage device through the stored processing threshold, and ensure that the number of object IO requests sent to the storage device does not exceed the capacity of the storage device, thereby making the storage device Both the processing resource and the cache resource are used for efficient processing of the object IO request, improving the performance and success rate of the entire object storage system processing the object IO request.
  • the controller can also adjust the time interval for sending the object IO request or the sub-object IO request to the storage device by using the storage sleep time, so that the storage device has sufficient processing time for the object IO request in the queue, and the object is improved.
  • the storage system handles the performance and success rate of object IO requests.
  • the controller provided by the embodiment of the present invention is configured to implement service flow control in an object storage system, and includes a storage module 701, a processing module 702, a receiving module 703, and a sending module 704.
  • the receiving module 703 is configured to receive a first object IO request, and send the request to the processing module 702;
  • the processing module 702 After receiving the first object IO request, the processing module 702 obtains a processing quantity threshold and a to-be-processed quantity from the storage module 701, where the processing quantity threshold is an object IO that the object storage system can process. a quantity threshold of the request, the number of to-be-processed being the number of object IO requests to be processed in the object storage system;
  • the processing module 702 is further configured to send the first object IO request to the sending module 704, and update the to-be-processed quantity in the storage module 701, if the to-be-processed quantity is less than the processing quantity threshold;
  • the sending module 704 is further configured to send the first object IO request to the storage device client, and receive the first response message of the first object IO request returned by the storage device client, the first response The message carries the processing result of the first object IO request; and sends the first response message to the processing module 702;
  • the processing module 702 is further configured to: when the predetermined condition is met, adjust the processing quantity threshold in the storage module 701 according to the processing result of the received object IO request.
  • the processing module 702 further A requester for requesting the first object IO returns a reject response message or a busy response message.
  • the processing module 702 is further configured to: after sending the first object IO request to the sending module 704, initiate a sleep time, and send a second object IO request to the sending module 704 after the sleep time ends.
  • the processing module 702 is further configured to: after receiving the first response message, update the sent quantity in the storage module 704, where the sent quantity is an object IO sent by the controller to the storage device client. If the processing result carried by the first response message indicates that the processing is successful, the number of successful processing in the storage module 704 is updated, and the number of successful processing is the storage device client receives the received object. The number of IO requests successfully processed.
  • the processing module 702 is further configured to split the first object IO request into multiple sub-object IO requests when the first object IO request is greater than a split size threshold, where each sub-object IO request is not greater than Decoding a size threshold and carrying the same identifier, where the split size threshold is a size threshold of an object IO request that can be processed by the object storage system; and the split first sub-object IO request is sent by the
  • the module 704 sends the storage device client; initiates a sleep time, and sends a second sub-object IO request through the sending module 704 after the sleep time ends.
  • the receiving module 704 receives a response message of the first sub-object IO request returned by the storage device client, where the response message carries the processing result of the first sub-object IO request; and sends the response message to
  • the processing module 702 is further configured to: receive a processing result of the first sub-object IO request, and update the sent quantity; the sent quantity is sent by the object IO request sent to the storage device client. If the processing result indicates that the processing is successful, the processing module 702 is further configured to update the number of successful processings, where the number of successful processings is the number of successful processing requests by the storage device client for the received object IO.
  • the processing module 702 adjusts the processing quantity threshold in the storage module 701 according to the processing result of the received object IO request, when the processing module 702 meets the predetermined condition, specifically: the processing module 702 periodically acquires the location according to a predetermined time period. Determining a current value of the sent quantity and a current value of the successfully processed quantity; calculating a processing success rate of the object IO request according to the current value of the sent quantity and the current value of the successfully processed quantity, and the processing success rate Adjusting the location as the first adjustment factor The number threshold.
  • the processing module 702 is further configured to adjust the quantity threshold adjusted according to the first adjustment coefficient according to the second adjustment coefficient, wherein the value of the second adjustment coefficient is proportional to the first adjustment coefficient.
  • the storage module 701 further stores an upper limit value and a lower limit value of the quantity threshold
  • the processing module 702 is further configured to: after the adjusted processing quantity threshold is modified according to the upper limit value or the lower limit value of the processing quantity threshold, such that the value of the adjusted processing quantity threshold is located in the processing quantity threshold Between the upper and lower limits.
  • the processing module 702 is further configured to periodically acquire the current value of the sent quantity and the current value of the successfully processed quantity according to a predetermined time period; according to the current value of the sent quantity and the number of successfully processed The current value, the processing success rate of the object IO request is calculated; and the processing success rate is used as the first adjustment coefficient to adjust the sleep time.
  • the processing module 702 is further configured to adjust the sleep time according to the third adjustment coefficient and the first adjustment coefficient; wherein the value of the third adjustment coefficient is inversely proportional to the first adjustment coefficient.
  • the storage module 701 further stores an upper limit value and a lower limit value of the sleep time
  • the processing module 702 is further configured to modify the adjusted sleep time according to the upper limit value or the lower limit value of the sleep time, so that the value of the adjusted sleep time is located at an upper limit value of the sleep time and Between the lower limits.
  • the processing module 702 is further configured to: by the receiving module 703, return a response message to the requester that sends the object IO request, where the response message carries the final processing result of the object IO request; and updates the to-be-processed quantity.
  • the embodiment of the present invention further provides another specific function of the controller, where the controller includes a storage module 701, a processing module 702, a receiving module 703, and a sending module 704;
  • the receiving module 703 is configured to receive a first object IO request, and send the request to the processing module 702;
  • the processing module 702 is configured to receive the first object IO request from the storage module Obtaining a split size threshold in 701, where the split size threshold is a size of an object IO request that the object storage system can process;
  • the processing module 702 is further configured to split the second object IO request into multiple sub-object IO requests when the specification of the first object IO request is greater than the split size threshold, where each sub-object IO The request is not greater than the split size threshold and carries the same identifier; the first sub-object IO request is sent to the sending module 704, and the sleep time is initiated;
  • the sending module 704 is further configured to send the first sub-object IO request to a storage device client connected to the controller, and receive a response of the first sub-object IO request returned by the storage device client. a message, the response message carries the processing result of the first sub-object IO request; the response message of the first sub-object IO request is sent to the processing module 702;
  • the processing module 702 is further configured to: when the predetermined condition is met, adjust the sleep time according to the processing result of the received object IO request.
  • the processing module 702 is further configured to: after the sleep time is started, after the sleep time ends, send, by the sending module, a second sub-object IO request to the storage device client; and return to perform the step of starting the sleep time Directly sending the plurality of sub-object IO requests to the storage device client.
  • the processing module 702 is further configured to: after receiving the response message requested by the first sub-object IO, update the sent quantity, where the sent quantity is sent by the processing module 702 to the storage device by using the sending module 704 The number of sent IO requests sent by the client; if the processing result of the first object IO request carried in the response message of the first sub-object IO indicates that the processing is successful, the processing module 702 is further used to update The number of successfully processed is the number of successfully processed by the storage device client for the received object IO request; if the first object IO request is carried in the response message of the first sub-object IO request The result of the processing indicates the failure processing of the termination, and the number of successful processing remains unchanged.
  • the processing module 702 is further configured to: when the predetermined condition is met, adjust the sleep time according to the processing result of the received object IO request, where the processing module 702 periodically acquires the sent time according to a predetermined time period. The current value of the quantity and the current value of the number of successfully processed; And calculating, by the current value of the sent quantity and the current value of the successfully processed quantity, a processing success rate of the object IO request; and adjusting the processing success rate as the first adjustment coefficient.
  • the processing module 702 is further configured to adjust, according to the third adjustment coefficient, a sleep time adjusted according to the first adjustment coefficient, where the value of the third adjustment coefficient is inversely proportional to the first adjustment coefficient.
  • the storage module 701 further stores an upper limit value and a lower limit value of the sleep time
  • the processing module 702 is further configured to modify the adjusted sleep time according to the upper limit value or the lower limit value of the sleep time, so that the value of the adjusted sleep time is located at an upper limit value of the sleep time and Between the lower limits.
  • the controller can also be regarded as a device composed of a CPU and a memory.
  • a program is stored in the memory, and the CPU executes the above-described service flow control method through a program in the memory.
  • the interface may be further configured to connect with a storage device client, and the function of the interface may send, for example, a request for generating an object IO after being processed by the CPU to the storage device client.
  • the interface can also be connected to other client clients outside the object storage system for receiving various types of object IO requests sent by the client.
  • the embodiment of the present invention further provides a service flow control device 8 for implementing service flow control in an object storage system, as shown in FIG. 8.
  • the device 8 includes a controller 801, which includes a receiving module 801-3, a storage module 801-1, a processing module 801-2, and a transmitting module 801-4.
  • the controller is used to implement the foregoing service flow control method.
  • the controller 801 has the same structure and function as the controller described in FIG. 7 and the corresponding text, and will not be separately described herein.
  • the embodiment of the invention further provides an object storage system for implementing service flow control, as shown in FIG.
  • a controller 901, a storage device client 903, and at least two storage devices 905 are included.
  • the controller 901 is connected to the storage device client 903, and the storage device client 903 and the storage device At least two storage devices 905 are connected.
  • the controller 901 and the storage device client 903 may be located in the same server.
  • the controller 901 includes a receiving module 901-3, a storage module 901-1, a processing module 901-2, and a sending module 901-4.
  • the controller is used to implement the foregoing service flow control method, and the controller 901 has the same structure and function as the controller described in FIG. 7 and the corresponding text, and will not be separately described herein.
  • the present invention can be implemented by means of software plus necessary general hardware, and of course, it can also be through hardware, but in many cases the former is a better implementation.
  • the technical solution of the present invention which is essential or contributes to the prior art, can be embodied in the form of a software product stored in a readable storage medium, such as a floppy disk of a computer.
  • a hard disk or optical disk, etc. includes instructions for causing a computer device (which may be a personal computer, server, or network device, etc.) to perform the methods described in various embodiments of the present invention.
  • the embodiment of the present invention sets a threshold value of the processing quantity of the object IO request that can be processed by the object storage system in the controller, and dynamically adjusts the processing condition of the received object IO request by the storage device according to a predetermined rule according to a predetermined rule.
  • the number of processing thresholds In this way, the controller can control the number of object IO requests sent to the storage device by the storage device client, so that the number of object IO requests received by the storage device does not exceed the processing capability of the storage device, so that the resources of the storage device can be fully invested in the object.
  • the processing success rate of the object IO request is guaranteed, and the processing performance of the object storage system is improved.
  • the controller also sets a time interval for sending two object IO requests (or sub-object IO requests), that is, a sleep time, and the controller can adjust the number of object IO requests sent to the storage device through the storage device client. Precisely controlling the number of object IO requests sent to the storage device, ensuring that the resources of the storage device can all be used for efficient processing of the object IO request, improving the processing performance of the object storage system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (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请求的处理成功率;将所述处理成功率作为第一调整系数调整所述休眠时间。
结合第二方面第三种可能的实现方式,在第二方面第四种可能的实现方式中,所述方法还包括:
根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
结合第二方面第三种可能的实现方式,或者第二方面第四种可能的实现方式,在第二方面第五种可能的实现方式中,所述控制器设置有所述休眠时间的上限值和下限值,所述方法还包括:根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和所述下限值之间。
本发明实施例第三方面提供一种在对象存储系统中实现业务流控制的控制器,所述控制器包括存储模块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或2所述的方法,其特征在于,还包括:
    在所述将所述第一对象IO请求发送给所述存储设备客户端之后启动休眠时间;
    当所述控制器接收第三对象IO请求时,获取所述处理数量阈值的当前值和所述待处理数量的当前值;
    若所述待处理数量的当前值小于所述处理数量阈值的当前值,在所述休眠时间结束后向所述存储设备客户端发送所述第三对象IO请求,并更新所述待处理数量。
  4. 根据权利要求1-3所述的方法,其特征在于,所述接收所述存储设备客户端返回的所述第一对象IO请求的第一响应消息之后,所述方法还包括:
    更新已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
    若所述第一响应消息携带的处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一响应消息携带的处理结果表示处理失败,维持成功处理数量不变。
  5. 根据权利要求1或2所述的方法,其特征在于,所述将所述第一对象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或8所述的方法,其特征在于,所述控制器设置有所述处理数量阈值的上限值和下限值,所述方法还包括:
    根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
  10. 根据权利要求4或6所述的方法,其特征在于,所述方法还包括:
    所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;
    根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;
    将所述处理成功率作为第一调整系数调整所述休眠时间。
  11. 根据权利要求10所述的方法,其特征在于,所述方法还包括:
    根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
  12. 根据权利要求10或11所述的方法,其特征在于,所述控制器设置有所述休眠时间的上限值和下限值,所述方法还包括:
    根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
  13. 根据权利要求1-12任一所述的方法,其特征在于,所述方法还包括:
    所述控制器向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;
    更新所述待处理数量。
  14. 一种对象存储系统中的业务流控制方法,所述对象存储系统中包括控制器和存储设备客户端,其特征在于,所述方法包括:
    所述控制器接收第一对象IO请求;
    获取拆分大小阈值,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小;
    当所述第一对象IO请求的规格大于所述拆分大小阈值时,所述控制器将所述第二对象IO请求拆分为多个子对象IO请求,其中,每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识;
    向所述存储设备客户端发送第一子对象IO请求,并启动休眠时间;
    接收所述存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;
    满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间。
  15. 根据权利要求14所述的方法,其特征在于,启动休眠时间之后还包括:
    所述休眠时间结束之后,向所述存储设备客户端发送第二子对象IO请求;
    返回执行启动所述休眠时间的步骤,直接将所述多条子对象IO请求发送给所述存储设备客户端。
  16. 根据权利要求14或15所述的方法,其特征在于,接收所述第一子对象IO请求的响应消息之后,还包括:
    更新已发送数量,所述已发送数量为所述控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
    若所述第一响应消息中携带的所述第一对象IO请求的处理结果表示处理成功,更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变;
    返回执行接收所述存储设备客户端返回响应消息的步骤,直至接收到所述多条子对象IO请求的处理结果。
  17. 根据权利要求14-16任一所述的方法,所述满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:
    所述控制器按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;
    根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;
    将所述处理成功率作为第一调整系数调整所述休眠时间。
  18. 根据权利要求17所述的方法,其特征在于,所述方法还包括:
    根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
  19. 根据权利要求17或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-21所述的控制器,其特征在于:
    所述处理模块702还用于将所述第一对象IO请求发送给所述发送模块704之后,启动休眠时间,并在所述休眠时间结束后向所述发送模块704发送第二对象IO请求。
  23. 根据权利要求20-22任一所述的控制器,其特征在于,所述处理模块 702还用于:
    在接收到所述第一响应消息之后更新所述存储模块704中的已发送数量,所述已发送数量为控制器向所述存储设备客户端发送的对象IO请求的已发送数量;
    若所述第一响应消息携带的处理结果表示处理成功,更新所述存储模块704中的成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量。
  24. 根据权利要求20或21所述的控制器,其特征在于,所述处理模块702还用于:
    当所述第一对象IO请求大于拆分大小阈值时,将所述第一对象IO请求拆分为多个子对象IO请求,其中每个子对象IO请求不大于所述拆分大小阈值且携带相同的标识,其中,所述拆分大小阈值为所述对象存储系统可处理的对象IO请求的大小阈值;
    将拆分后的第一子对象IO请求通过所述发送模块704发送给存储设备客户端;
    启动休眠时间,并在所述休眠时间结束之后通过所述发送模块704发送第二子对象IO请求。
  25. 根据权利要求24所述的控制器,其特征在于:
    所述接收模块704接收存储设备客户端返回的所述第一子对象IO请求的响应消息,所述响应消息中携带所述第一子对象IO请求的处理结果;并将所述响应消息发送给所述处理模块702;
    所述处理模块702还用于,接收第一子对象IO请求的处理结果,更新已发送数量;所述已发送数量为向存储设备客户端发送的对象IO请求的已发送数量;
    若所述处理结果表示处理成功,所述处理模块702还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求处理成功的数量。
  26. 根据权利要求23或25所述的控制器,其特征在于,所述处理模块702在满足预定的条件时根据接收到的对象IO请求的处理结果调整所述存储模块701中的所述处理数量阈值具体为:
    处理模块702按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值计算对象IO请求的处理成功率,将所述处理成功率作为第一调整系数调整所述处理数量阈值。
  27. 根据权利要求26所述的控制器,其特征在于:
    所述处理模块702还用于根据第二调整系数,调整根据所述第一调整系数调整后的数量阈值,其中,所述第二调整系数的取值与所述第一调整系数成正比。
  28. 根据权利要求26或27所述的控制器,其特征在于:
    所述存储模块701中还存储有所述数量阈值的上限值和下限值;
    所述处理模块702还用于根据所述处理数量阈值的上限值或下限值,对调整后的处理数量阈值进行修正,使得调整后的处理数量阈值的取值位于所述处理数量阈值的上限值和下限值之间。
  29. 根据权利要求23或25所述的控制器,其特征在于,所述处理模块702还用于:
    按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
  30. 根据权利要求29所述的控制器,其特征在于,所述处理模块702还用于:
    根据第三调整系数和所述第一调整系数,调整所述休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
  31. 根据权利要求29或30所述的控制器,其特征在于:
    所述存储模块701中还存储有所述休眠时间的上限值和下限值;
    所述处理模块702还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
  32. 根据权利要求20-31任一所述的控制器,其特征在于:所述处理模块702还用于通过所述接收模块703向发送对象IO请求的请求方返回响应消息,所述响应消息中携带所述对象IO请求的最终处理结果;并更新所述待处理数量。
  33. 一种在对象存储系统中实现业务流控制的控制器,其特征在于:所述控制器包括存储模块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请求的处理结果调整所述休眠时间。
  34. 根据权利要求33所述的控制器,其特征在于,所述处理模块702还 用于:
    启动休眠时间后,待所述休眠时间结束后,通过所述发送模块向存储设备客户端发送第二子对象IO请求;
    返返回执行启动所述休眠时间的步骤,直接将所述多条子对象IO请求发送给所述存储设备客户端。
  35. 根据权利要求33或34所述的控制器,其特征在于,所述处理模块702还用于:
    接收所述第一子对象IO请求的响应消息之后,更新已发送数量,所述已发送数量为所述处理模块702通过所述发送模块704向所述存储设备客户端发送的对象IO请求的已发送数量;
    若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示处理成功,所述处理模块702还用于更新成功处理数量,所述成功处理数量为所述存储设备客户端对接收到的对象IO请求成功处理的数量;若所述第一子对象IO请求的响应消息中携带的所述第一对象IO请求的处理结果表示终结的失败处理,维持成功处理数量不变。
  36. 根据权利要求33-35任一所述的控制器,其特征在于,所述处理模块702还用于满足预定的条件时,根据接收到的对象IO请求的处理结果调整所述休眠时间具体为:
    所述处理模块702按预定的时间周期周期性的获取所述已发送数量的当前值和所述成功处理数量的当前值;根据所述已发送数量的当前值和所述成功处理数量的当前值,计算对象IO请求的处理成功率;并将所述处理成功率作为第一调整系数调整所述休眠时间。
  37. 根据权利要求36所述的控制器,其特征在于,所述处理模块702还用于:
    根据第三调整系数,调整根据所述第一调整系数调整后的休眠时间;其中,所述第三调整系数的取值与所述第一调整系数成反比。
  38. 根据权利要求36或37所述的控制器,其特征在于:
    所述存储模块701中还存储有所述休眠时间的上限值和下限值;
    所述处理模块702还用于根据所述休眠时间的上限值或下限值,对调整后的休眠时间进行修正,使得调整后的休眠时间的取值位于所述休眠时间的上限值和下限值之间。
  39. 一种在对象存储系统中实现业务流控制的设备,其特征在于,包括如权利要求20-39任一所述的控制器。
  40. 一种可以实现业务流控制的对象存储系统,其特征在于,包括如权利要求20-39任一所述的控制器、存储设备客户端和至少两个存储设备;所述控制器与所述存储设备客户端相连,所述存储设备客户端与所述至少两个存储设备相连。
PCT/CN2014/089180 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统 WO2016061766A1 (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
PCT/CN2014/089180 WO2016061766A1 (zh) 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统
JP2016558104A JP6403140B2 (ja) 2014-10-22 2014-10-22 オブジェクト・ベース記憶システムにおけるサービス・フロー制御のための方法、コントローラ、およびシステム
CN201480064791.2A CN105900061B (zh) 2014-10-22 2014-10-22 对象存储系统中的业务流控制方法、控制器和系统
EP14904442.2A EP3128420B1 (en) 2014-10-22 2014-10-22 Service flow control method, controller and system in object-based storage system
US15/490,118 US9804981B2 (en) 2014-10-22 2017-04-18 Method, controller, and system for service flow control in object-based storage system
US15/716,163 US9984013B2 (en) 2014-10-22 2017-09-26 Method, controller, and system for service flow control in object-based storage system

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/490,118 Continuation US9804981B2 (en) 2014-10-22 2017-04-18 Method, controller, and system for service flow control in object-based storage system

Publications (1)

Publication Number Publication Date
WO2016061766A1 true WO2016061766A1 (zh) 2016-04-28

Family

ID=55760058

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2014/089180 WO2016061766A1 (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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107465630A (zh) * 2017-08-30 2017-12-12 郑州云海信息技术有限公司 一种带宽流量监管方法及系统
CN107911840A (zh) * 2017-11-21 2018-04-13 青岛海信电器股份有限公司 流媒体传输的控制方法及装置
CN109101194A (zh) * 2018-07-26 2018-12-28 郑州云海信息技术有限公司 一种刷写性能优化方法和存储系统
CN113849129A (zh) * 2021-09-18 2021-12-28 苏州浪潮智能科技有限公司 一种存储控制器间的io请求转发方法、装置及设备

Families Citing this family (15)

* 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
CN110740099B (zh) * 2018-07-18 2023-03-31 阿里巴巴集团控股有限公司 一种数据流控方法和装置
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
US11580082B2 (en) 2018-11-15 2023-02-14 Western Digital Technologies, Inc. Object storage system with control entity quota usage mapping
CN110096379B (zh) * 2019-04-30 2022-09-09 武汉斗鱼鱼乐网络科技有限公司 基于通用协议的消息分发方法、装置、设备及存储介质
EP3942749A4 (en) 2019-05-23 2023-06-07 Hewlett Packard Enterprise Development LP OPTIMIZED ADAPTIVE ROUTING TO REDUCE THE NUMBER OF JUMPS
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 中国银联股份有限公司 一种基于异步应答的传输数据的方法及系统
CN113741991B (zh) * 2021-11-04 2022-02-18 苏州浪潮智能科技有限公司 提升ssd服务质量方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013387A (zh) * 2007-02-09 2007-08-08 华中科技大学 基于对象存储设备的负载平衡方法
CN101957729A (zh) * 2010-09-27 2011-01-26 中兴通讯股份有限公司 逻辑块变换方法及基于该方法兼容用户读写的方法和装置

Family Cites Families (23)

* 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 华为技术有限公司 一种实现业务流量控制的方法及系统
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
US9104599B2 (en) * 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
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
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 航天恒星科技有限公司 一种分布式组态化海量数据归档系统及实现方法
US20140153577A1 (en) * 2012-12-03 2014-06-05 Aruba Networks, Inc. Session-based forwarding
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013387A (zh) * 2007-02-09 2007-08-08 华中科技大学 基于对象存储设备的负载平衡方法
CN101957729A (zh) * 2010-09-27 2011-01-26 中兴通讯股份有限公司 逻辑块变换方法及基于该方法兼容用户读写的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3128420A4 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107465630A (zh) * 2017-08-30 2017-12-12 郑州云海信息技术有限公司 一种带宽流量监管方法及系统
CN107465630B (zh) * 2017-08-30 2021-08-31 郑州云海信息技术有限公司 一种带宽流量监管方法及系统
CN107911840A (zh) * 2017-11-21 2018-04-13 青岛海信电器股份有限公司 流媒体传输的控制方法及装置
CN109101194A (zh) * 2018-07-26 2018-12-28 郑州云海信息技术有限公司 一种刷写性能优化方法和存储系统
CN113849129A (zh) * 2021-09-18 2021-12-28 苏州浪潮智能科技有限公司 一种存储控制器间的io请求转发方法、装置及设备
CN113849129B (zh) * 2021-09-18 2023-08-25 苏州浪潮智能科技有限公司 一种存储控制器间的io请求转发方法、装置及设备

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2016061766A1 (zh) 对象存储系统中的业务流控制方法、控制器和系统
US10637947B2 (en) Scalable, real-time messaging system
US11157324B2 (en) Partitioning for delayed queues in a distributed network
US11102095B2 (en) Monitoring data queues and providing alerts
US10382380B1 (en) Workload management service for first-in first-out queues for network-accessible queuing and messaging services
WO2018059222A1 (zh) 一种文件切片上传方法、装置及云存储系统
JP2018525760A (ja) スケーラブルなリアルタイムメッセージングシステム
CN106716335B (zh) 映射信息的异步处理
US10944683B1 (en) Hybrid queue system for request throttling
US9836358B2 (en) Ephemeral remote data store for dual-queue systems
JP2018531472A (ja) スケーラブルなリアルタイムメッセージングシステム
JP2018531472A6 (ja) スケーラブルなリアルタイムメッセージングシステム
US10447623B2 (en) Data storage systems and methods using a real-time messaging system
US9152639B2 (en) Method and apparatus to transfer file data to a cloud environment
JP6943790B2 (ja) セッション情報セットをキャッシュするサーバ、及び、セッション情報セットのキャッシュ制御方法
US10154116B1 (en) Efficient synchronization of locally-available content
US20190319901A1 (en) Scalable, real-time messaging system
US10067959B1 (en) Techniques for adapting data storage systems for peaky usage models
EP3707610B1 (en) Redundant data storage using different compression processes
US10728291B1 (en) Persistent duplex connections and communication protocol for content distribution
WO2018196459A1 (zh) 一种下载请求处理方法、装置、处理设备及介质
Jeevarani et al. Improved consistency model in cloud computing databases
WO2016070364A1 (zh) 一种数据分发方法,装载机及存储系统

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14904442

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016558104

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2014904442

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014904442

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE