Methods and systems for content delivery
Methods and systems for content delivery are described. A content delivery network may include a request server that receives a request for content from a client device. The request server may send the request to each caching device among a plurality of caching devices. Each caching device may receive the service query and assess its current health based on one or more parameters. Each caching device may wait for a duration of time before responding to the request based on the determined current health. The caching device that is first to respond to the request may be the caching device that has the most available resources to provide the requested content to the client device.
1 . A method comprising:
based on a service query receive by a first caching device via a first computing device, determining, based on the service query and one or more parameters, a first duration of time, wherein the service query is associated with a request for content; and
sending, after the first duration of time, the content to a second computing device.
2 . The method of claim 1 , wherein the request for content is received by the first computing device from the second computing device.
3 . The method of claim 1 , further comprising sending, to the first computing device, a first service query response that indicates the first caching device has sufficient resources to provide the content to the second computing device.
4 . The method of claim 1 , further comprising:
determining, based on the service query and the one or more parameters, the first duration of time, wherein the one or more parameters comprises a determination that the content is not resident in memory of the first caching device, a computational load of the first caching device, a number of requests for content received by the first caching device within a threshold amount of time, a network load of the first caching device, or a fail over status of the first caching device.
5 . The method of claim 1 , further comprising:
receiving, by at least one additional caching device, the service query;
determining, by the at least one additional caching device, a second duration of time;
determining, by the at least one additional caching device, a second service query response; and
receiving, by the at least one additional caching device after the first duration of time elapses and before the second duration of time elapses, a first service query response indicating the first caching device has sufficient resources to provide the content to the second computing device, wherein the first service query response causes the at least one additional caching device to refrain from sending the second service query response to the first computing device.
6 . The method of claim 1 , further comprising:
sending, by the first computing device to the first caching device and at least one additional caching device, the service query;
receiving, by the first computing device from the first caching device, a first service query response at a first time, wherein the first service query response indicates the first caching device has sufficient resources to provide the content to the second computing device;
determining, by the first computing device, a collision between the first service query response and a second service query response;
determining, by the first computing device based on the collision and the first service query response, that the first caching device satisfies one or more network parameters; and
instructing, by the first computing device based on the first caching device satisfying the one or more network parameters, the second computing device to send the request for content to the first caching device.
7 . The method of claim 6 , further comprising:
receiving, by the first computing device from the at least one additional caching device, the second service query response at a second time, wherein the first time occurs prior to the second time; and
discarding, by the first computing device based on the second service query response being received after the first service query response, the second service query response.
8 . An apparatus comprising:
one or more processors; and
a memory storing processor-executable instructions that, when executed by the one or more processors, cause the apparatus to:
based on a service query received via a first computing device, determine, based on the service query and one or more parameters, a first duration of time, wherein the service query is associated with a request for content; and
send, after the first duration of time, the content to a second computing device.
9 . The apparatus of claim 8 , wherein the request for content is received by the first computing device from the second computing device.
10 . The apparatus of claim 8 , wherein the processor-executable instructions, when executed by the one or more processors, further cause the apparatus to:
send, to the first computing device, a first service query response that indicates the apparatus has sufficient resources to provide the content to the second computing device.
11 . The apparatus of claim 8 , wherein the processor-executable instructions, when executed by the one or more processors, further cause the apparatus to:
determine, based on the service query and the one or more parameters, the first duration of time, wherein the one or more parameters comprises a determination that the content is not resident in memory of the apparatus, a computational load of the apparatus, a number of requests for content received by the apparatus within a threshold amount of time, a network load of the apparatus, or a fail over status of the apparatus.
12 . The apparatus of claim 8 , wherein the processor-executable instructions, when executed by the one or more processors, further cause the apparatus to:
receive, by at least one additional caching device, the service query;
determine, by the at least one additional caching device, a second duration of time;
determine, by the at least one additional caching device, a second service query response; and
receive, by the at least one additional caching device after the first duration of time elapses and before the second duration of time elapses, a first service query response indicating the apparatus has sufficient resources to provide the content to the second computing device, wherein the first service query response causes the at least one additional caching device to refrain from sending the second service query response to the first computing device.
13 . The apparatus of claim 8 , wherein the processor-executable instructions, when executed by the one or more processors, further cause the apparatus to:
send, by the first computing device to the apparatus and at least one additional caching device, the service query;
receive, by the first computing device from the apparatus, a first service query response at a first time, wherein the first service query response indicates the apparatus has sufficient resources to provide the content to the second computing device;
determine, by the first computing device, a collision between the first service query response and a second service query response;
determine, by the first computing device based on the collision and the first service query response, that the apparatus satisfies one or more network parameters; and
instruct, by the first computing device based on the apparatus satisfying the one or more network parameters, the second computing device to send the request for content to the apparatus.
14 . The apparatus of claim 13 , wherein the processor-executable instructions, when executed by the one or more processors, further cause the apparatus to:
receive, from the at least one additional caching device, the second service query response at a second time, wherein the first time occurs prior to the second time; and
discard, based on the second service query response being received after the first service query response, the second service query response.
15 . One or more non-transitory computer-readable media storing processor-executable instructions that, when executed by at least one processor of a first caching device, cause the at least one processor of the first caching device to:
based on a service query received via a first computing device, determining, based on the service query and one or more parameters, a first duration of time, wherein the service query is associated with a request for content; and
send, after the first duration of time, the content to a second computing device.
16 . The one or more non-transitory computer-readable media of claim 15 , wherein the request for content is received by the first computing device from the second computing device.
17 . The one or more non-transitory computer-readable media of claim 15 , wherein the processor-executable instructions, when executed by the at least one processor, further cause the at least one processor to:
send, to the first computing device, a first service query response that indicates the first caching device has sufficient resources to provide the content to the second computing device.
18 . The one or more non-transitory computer-readable media of claim 15 , wherein the processor-executable instructions, when executed by the at least one processor, further cause the at least one processor to:
determine, based on the service query and the one or more parameters, the first duration of time, wherein the one or more parameters comprises a determination that the content is not resident in memory of the first caching device, a computational load of the first caching device, a number of requests for content received by the first caching device within a threshold amount of time, a network load of the first caching device, or a fail over status of the first caching device.
19 . The one or more non-transitory computer-readable media of claim 15 , wherein the processor-executable instructions, when executed by the at least one processor, further cause the at least one processor to:
receive, by at least one additional caching device, the service query;
determine, by the at least one additional caching device, a second duration of time;
determine, by the at least one additional caching device, a second service query response; and
receive, by the at least one additional caching device after the first duration of time elapses and before the second duration of time elapses, a first service query response indicating the first caching device has sufficient resources to provide the content to the second computing device, wherein the first service query response causes the at least one additional caching device to refrain from sending the second service query response to the first computing device.
20 . The one or more non-transitory computer-readable media of claim 15 , wherein the processor-executable instructions, when executed by the at least one processor, further cause the at least one processor to:
send, by the first computing device to the first caching device and at least one additional caching device, the service query;
receive, by the first computing device from the first caching device, a first service query response at a first time, wherein the first service query response indicates the first caching device has sufficient resources to provide the content to the second computing device;
determine, by the first computing device, a collision between the first service query response and a second service query response;
determine, by the first computing device based on the collision and the first service query response, that the first caching device satisfies one or more network parameters; and
instruct, by the first computing device based on the first caching device satisfying the one or more network parameters, the second computing device to send the request for content to the first caching device.
21 . The one or more non-transitory computer-readable media of claim 20 , wherein the processor-executable instructions, when executed by the at least one processor, further cause the at least one processor to:
receive, by the first computing device from the at least one additional caching device, the second service query response at a second time, wherein the first time occurs prior to the second time; and
discard, by the first computing device based on the second service query response being received after the first service query response, the second service query response.
22 . An system comprising:
a first caching device configured to:
based on a service query received via a first computing device, determine, based on the service query and one or more parameters, a first duration of time, wherein the service query is associated with a request for content; and
send, after the first duration of time, the content to a second computing device; and
the second computing device configured to:
receive the content from the first caching device.
23 . The system of claim 22 , wherein the first computing device is further configured to receive the request for content from the second computing device.
24 . The system of claim 22 , wherein the first caching device is further configured to send, to the first computing device, a first service query response that indicates the first caching device has sufficient resources to provide the content to the second computing device.
25 . The system of claim 22 , wherein the first caching device is further configured to determine, based on the service query and the one or more parameters, the first duration of time, wherein the one or more parameters comprises a determination that the content is not resident in memory of the first caching device, a computational load of the first caching device, a number of requests for content received by the first caching device within a threshold amount of time, a network load of the first caching device, or a fail over status of the first caching device.
26 . The system of claim 22 , further comprising:
at least one additional caching device configured to:
receive the service query;
determine a second duration of time;
determining a second service query response;
receive, after the first duration of time elapses and before the second duration of time elapses, a first service query response indicating the first caching device has sufficient resources to provide the content to the second computing device; and
refrain, based on the received first service query response, from sending the second service query response to the first computing device.
27 . The system of claim 22 , wherein the first computing device is further configured to:
send, to the first caching device and at least one additional caching device, the service query;
receive, from the first caching device, a first service query response at a first time, wherein the first service query response indicates the first caching device has sufficient resources to provide the content to the second computing device;
determine a collision between the first service query response and a second service query response;
determine, based on the collision and the first service query response, that the first caching device satisfies one or more network parameters; and
instruct, based on the first caching device satisfying the one or more network parameters, the second computing device to send the request for content to the first caching device.
28 . The system of claim 27 , wherein the first computing device is further configured to:
receive, from the at least one additional caching device, the second service query response at a second time, wherein the first time occurs prior to the second time; and
discard, based on the second service query response being received after the first service query response, the second service query response.