Erasure coding of data within a group of storage units based on connection characteristics
US-2016378624-A1 · Dec 29, 2016 · US
US10659532B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10659532-B2 |
| Application number | US-201514866893-A |
| Country | US |
| Kind code | B2 |
| Filing date | Sep 26, 2015 |
| Priority date | Sep 26, 2015 |
| Publication date | May 19, 2020 |
| Grant date | May 19, 2020 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Technologies for reducing latency variation of stored data object requests include a proxy computing node communicatively coupled to a plurality of storage nodes. The proxy computing node is configured to determine whether to chunk a data object corresponding to a data object request received by the proxy computing node. Accordingly, the proxy computing node is configured to obtain a retrieval latency of the storage node and determine whether to chunk the data object based on the retrieval latency. The proxy computing node is further configured to, subsequent to a determination to chunk the data object, determine a chunk size (i.e., a portion of the data object) to be retrieved from the storage node and a remaining size of the data object at the storage node after the portion of the data object corresponding to the chunk request is received. Other embodiments are described and claimed.
Opening claim text (preview).
The invention claimed is: 1. A proxy computing node for managing data object requests in a storage node cluster, the proxy computing node comprising: one or more processors; and one or more data storage devices having stored therein a plurality of instructions that, when executed by the one or more processors, cause the proxy computing node to: receive a data object request from a client computing node, wherein the data object request identifies a data object; identify, based on the data object request, a storage node of a plurality of storage nodes on which the data object is stored; obtain an exponentially weighted moving value indicative of a latency of the storage node, wherein the latency is indicative of a temporal latency for retrieving data from the storage node, and wherein the exponentially weighted moving value is indicative of a per-byte-latency of the storage node and the exponentially weighted moving value is indicative of a recent request latency of the storage node; determine whether to chunk the data object based on the exponentially weighted moving value of the storage node, wherein to determine whether to chunk the data object comprises to determine whether a first product of the per-byte latency and a total size of the data object is greater than a second product of the recent request latency and a predetermined chunk trigger value; determine, in response to a determination to chunk the data object, a chunk size of the data object to request from the storage node as a function of the exponentially weighted moving value; generate a chunk request to retrieve, from the storage node, the portion of the data object based on the chunk size; and transmit the chunk request to the storage node. 2. The proxy computing node of claim 1 , wherein the plurality of instructions further cause the proxy computing node to: determine, subsequent to having transmitted the chunk request to the storage node, whether the requested chunk was received from the storage node; and determine a request completion time based on a duration of time between having transmitted the chunk request and having received the requested chunk. 3. The proxy computing node of claim 2 , wherein the plurality of instructions further cause the proxy computing node to calculate an updated per-byte-latency for the data object request as a function of a weighted parameter, the request completion time, the total size of the data object, and a last calculated per-byte-latency of the storage node, wherein the weighted parameter defines a value between 0 and 1 that is configured to adjust an influence of previously calculated request latencies. 4. The proxy computing node of claim 2 , wherein to determine the request completion time comprises to (i) start, prior to transmission of the chunk request to the storage node, a timer of the proxy computing node, (ii) stop, in response to a determination that the requested chunk was received, the timer, and (iii) determine the request completion time based on a value of the timer. 5. The proxy computing node of claim 1 , wherein the plurality of instructions further cause the proxy computing node to: determine a remaining size of the data object at the storage node after the portion of the data object corresponding to the chunk request is received; generate a data object remainder request based on the remaining size; and place the data object remainder request at a tail of a request queue of the proxy computing node, wherein the request queue defines a queue of data object requests that correspond to the storage node from which the data object is to be retrieved. 6. The proxy computing node of claim 1 , wherein the plurality of instructions further cause the proxy computing node to: place the data object request at a tail of a request queue of the proxy computing node, wherein the request queue defines a queue of data object requests that correspond to the storage node from which the data object is to be retrieved; and determine whether the data object request is at a head of the request queue, wherein to obtain the exponentially weighted moving value of the storage node comprises to obtain the exponentially weighted moving value of the storage node subsequent to a determination that the data object request is at the head of the request queue. 7. One or more non-transitory, computer-readable storage media comprising a plurality of instructions stored thereon that in response to being executed cause the proxy computing node to: receive a data object request from a client computing node, wherein the data object request identifies a data object; identify, based on the data object request, a storage node of a plurality of storage nodes on which the data object is stored; obtain an exponentially weighted moving value indicative of a latency of the storage node, wherein the latency is indicative of a temporal latency for retrieving data from the storage node and wherein the exponentially weighted moving value is indicative of a per-byte-latency of the storage node and the exponentially weighted moving value is indicative of a recent request latency of the storage node; determine whether to chunk the data object based on the exponentially weighted moving value of the storage node, wherein to determine whether to chunk the data object comprises to determine whether a first product of the per-byte latency and a total size of the data object is greater than a second product of the recent request latency and a predetermined chunk trigger value; determine, in response to a determination to chunk the data object, a chunk size of the data object to request from the storage node as a function of the exponentially weighted moving value; generate a chunk request to retrieve, from the storage node, the portion of the data object based on the chunk size; and transmit the chunk request to the storage node. 8. The one or more non-transitory, computer-readable storage media of claim 7 , wherein the plurality of instructions further cause the proxy computing node to: determine, subsequent to having transmitted the chunk request to the storage node, whether the requested chunk was received from the storage node; and determine a request completion time based on a duration of time between having transmitted the chunk request and having received the requested chunk. 9. The one or more non-transitory, computer-readable storage media of claim 8 , wherein the plurality of instructions further cause the proxy computing node to calculate an updated per-byte-latency for the data object request as a function of a weighted parameter, the request completion time, the total size of the data object, and a last calculated per-byte-latency of the storage node, wherein the weighted parameter defines a value between 0 and 1 that is configured to adjust an influence of previously calculated request latencies. 10. The one or more non-transitory, computer-readable storage media of claim 8 , wherein to determine the request completion time comprises to (i) start, prior to transmission of the chunk request to the storage node, a timer of the proxy computing node, (ii) stop, in response to a determination that the requested chunk was received, the timer, and (iii) determine the request completion time based on a value of the timer. 11. The one or more non-transitory, computer-readable storage media of claim 7 , wherein the plurality of instructions further cause the proxy computing node to: determine a remaining size of the data object at the storage node after the portion of the data object corresponding to the chunk request is received; generate a data object remainder request based on the remaining size; and
based on parameters of servers, e.g. available memory or workload (monitoring of computer activity G06F11/30) · CPC title
Network utilisation, e.g. volume of load or congestion level · CPC title
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] · CPC title
Electricity · mapped topic
Delays · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.