IP Library Granted Patent US 7,987,268
Granted Patent B2
US 7,987,268 · App. 10/693,238 · Granted Jul 26, 2011

Methods and systems for dynamically reconfigurable load balancing

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,987,268
App. No.
10/693,238
Granted
Jul 26, 2011
Kind
B2
Abstract

Techniques for serving data to a plurality of clients in a client-server environment are provided. In one aspect of the invention, the technique provides a plurality of versions of data in which different versions have different overheads associated therewith. Individual clients are assigned to one of a plurality of quality-of-service classes. Requests are satisfied so that a client belonging to a high quality-of-service class is given preferential access to data versions which require higher overheads to serve.

Claims (72)

1. A method of serving data to a plurality of clients in a client-server environment, comprising the steps of:

generating a plurality of versions of given data in which at least two versions of the given data have different overheads associated therewith, the overhead of a given version of the given data comprising a quantity of processing resources required to serve the given version of the given data;

assigning individual clients to one of a plurality of quality-of-service classes; and

satisfying requests so that a client belonging to a high quality-of-service class is given preferential access to data versions which require higher overheads to serve while a client belonging to a low quality-of-service class receives a data version which requires lower overhead to serve;

wherein the overhead to serve a version is correlated with a quality of the version;

wherein the plurality of versions comprise images of different resolutions and clients belonging to the high quality-of-service class are given preferential access to higher resolution images while a client belonging to the low quality-of-service class receives a lower resolution image;

wherein the quality of a version is correlated with a processing time required to create the version; and

wherein the steps are performed at least in part by at least one processor.

2. The method of claim 1 , wherein the overhead to serve a version is correlated with how current the version is.

3. The method of claim 1 , further comprising the step of:

in response to a system load exceeding a threshold, satisfying a higher percentage of requests from clients belonging to a lower quality-of-service class with a version requiring lower overhead to serve.

4. The method of claim 1 , wherein the server comprises multiple nodes and different nodes provide data versions requiring different overheads to serve.

5. The method of claim 1 , further comprising the step of implementing a quality-of-service policy that specifies at least one of content quality and latency.

6. The method of claim 5 , wherein one or more clients belonging to a premium service class are served with high content quality and low latency.

7. The method of claim 5 , wherein one or more clients belonging to a medium service class are served with one of high content quality and low latency.

8. The method of claim 5 , wherein one or more clients belonging to a best-effort service class are served with unspecified content quality and latency.

9. The method of claim 1 , wherein a client request is routed using at least one of an identity of the client, a quality of content, a load on at least one server, a data distribution on at least one server, and a capacity of at least one server.

10. The method of claim 1 , wherein a client is assigned to a quality-of-service class by program logic that is externalized from the server.

11. The method of claim 1 , further comprising the step of satisfying requests using a policy determined by program logic that is externalized from the server.

12. Apparatus for serving data to a plurality of clients in a client-server environment, comprising:

a memory, and

at least one processor coupled to the memory and operative to: (i) generate a plurality of versions of given data in which at least two versions of the given data have different overheads associated therewith, the overhead of a given version of the given data comprising a quantity of processing resources required to serve the given version of the given data; (ii) assign individual clients to one of a plurality of quality-of-service classes; and (iii) satisfy requests so that a client belonging to a high quality-of-service class is given preferential access to data versions which require higher overheads to serve while a client belonging to a low quality-of-service class receives a data version which requires lower overhead to serve;

wherein the overhead to serve a version is correlated with a quality of the version;

wherein the plurality of versions comprise images of different resolutions and clients belonging to the high quality-of-service class are given preferential access to higher resolution images while a client belonging to the low quality-of-service class receives a lower resolution image; and

wherein the quality of a version is correlated with a processing time required to create the version.

13. The apparatus of claim 12 , wherein the overhead to serve a version is correlated with how current the version is.

14. The apparatus of claim 12 , wherein the at least one processor is further operative to, in response to a system load exceeding a threshold, satisfy a higher percentage of requests from clients belonging to a lower quality-of-service class with a version requiring lower overhead to serve.

15. The apparatus of claim 12 , wherein the at least one processor comprises multiple nodes and different nodes provide data versions requiring different overheads to serve.

16. The apparatus of claim 12 , wherein the at least one processor is further operative to implement a quality-of-service policy that specifies at least one of content quality and latency.

17. The apparatus of claim 16 , wherein one or more clients belonging to a premium service class are served with high content quality and low latency.

18. The apparatus of claim 16 , wherein one or more clients belonging to a medium service class are served with one of high content quality and low latency.

19. The apparatus of claim 16 , wherein one or more clients belonging to a best-effort service class are served with unspecified content quality and latency.

20. The apparatus of claim 12 , wherein a client request is routed using at least one of an identity of the client, a quality of content, a load on at least one server, a data distribution on at least one server, and a capacity of at least one server.

21. An article of manufacture for use in serving data to a plurality of clients in a client-server environment, comprising a non-transitory machine readable storage medium containing one or more programs which when executed implement the steps of:

generating a plurality of versions of given data in which at least two versions of the given data have different overheads associated therewith, the overhead of a given version of the given data comprising a quantity of processing resources required to serve the given version of the given data;

assigning individual clients to one of a plurality of quality-of-service classes; and

satisfying requests so that a client belonging to a high quality-of-service class is given preferential access to data versions which require higher overheads to serve while a client belonging to a low quality-of-service class receives a data version which requires lower overhead to serve;

wherein the overhead to serve a version is correlated with a quality of the version;

wherein the plurality of versions comprise images of different resolutions and clients belonging to the high quality-of-service class are given preferential access to higher resolution images while a client belonging to the low quality-of-service class receives a lower resolution image; and

wherein the quality of a version is correlated with a processing time required to create the version.

22. A system, comprising:

a plurality of clients, each client belonging to a quality-of-service class;

a load balancer for sending requests from clients to at least one back-end server; and

at least one back-end server for (i) generating a plurality of versions of a given object in which at least two versions of the given object have different overheads associated therewith, the overhead of a given version of the given object comprising a quantity of processing resources required to serve the given version of the given object and (ii) satisfying the requests so that a client belonging to a high quality-of-service class is given preferential access to object versions which require higher overheads to serve while a client belonging to a low quality-of-service class receives an object version which requires lower overhead to serve;

wherein the overhead to serve a version is correlated with a quality of the version;

wherein the plurality of versions comprise images of different resolutions and clients belonging to the high quality-of-service class are given preferential access to higher resolution images while a client belonging to the low quality-of-service class receives a lower resolution image;

wherein the quality of a version is correlated with a processing time required to create the version; and

wherein at least a portion of the system comprises a memory and at least one processor coupled to the memory.

23. A method of providing a data serving service, comprising the step of:

a service provider: (i) generating a plurality of versions of given data in which at least two versions of the given data have different overheads associated therewith, the overhead of a given version of the given data comprising a quantity of processing resources required to serve the given version of the given data; (ii) assigning individual clients to one of a plurality of quality-of-service classes; and (iii) satisfying requests so that a client belonging to a high quality-of-service class is given preferential access to data versions which require higher overheads to serve while a client belonging to a low quality-of-service class receives a data version which requires lower overhead to serve;

wherein the overhead to serve a version is correlated with a quality of the version;

wherein the plurality of versions comprise images of different resolutions and clients belonging to the high quality-of-service class are given preferential access to higher resolution images while a client belonging to the low quality-of-service class receives a lower resolution image; wherein the quality of a version is correlated with a processing time required to create the version; and

wherein the step is performed at least in part by at least one processor.

24. The method of claim 23 , wherein the data serving service comprises a quality-of-service policy specification.

25. The method of claim 24 , wherein the quality-of-service policy specification comprises:

a plurality of subscriptions, each subscription being specified by content quality and service latency, wherein a limited premium service subscription is served with high content quality in low service latency, a medium service subscription is served with a high content quality or a low service latency, and an unlimited best-effort service subscription is served with unspecified content quality and latency.

26. The method of claim 23 , wherein the service provider modifies data content and how the data content is served to clients in response to one or more changing conditions.

27. The method of claim 26 , wherein one or more changing conditions comprises a source of a bottleneck.

28. The method of claim 23 , wherein the step of assigning individual clients to one of a plurality of quality-of-service classes is based on a client payment.

29. A method of serving data to a plurality of clients, comprising the steps of:

generating a plurality of versions of given data in which at least two versions of the given data have different overheads associated therewith, the overhead of a given version of the given data comprising a quantity of processing resources required to serve the given version of the given data;

establishing at least two quality-of-service classes; and

satisfying requests so that a client belonging to one quality-of-service class is served with one version of the given data having one overhead associated therewith, while a client belonging to another quality-of-service class is served with another version of the given data having another overhead associated therewith;

wherein the overhead of the given version of the given data is correlated with a quality of the given version;

wherein the plurality of versions of the given data comprise images of different resolutions and clients belonging to the high quality-of-service class are given preferential access to higher resolution images while a client belonging to the low quality-of-service class receives a lower resolution image;

wherein the quality of the given version is correlated with a processing time required to create the given version; and

wherein the steps are performed at least in part by at least one processor.

30. The system of claim 22 , where the at least one back-end server comprises:

at least a first back-end server for generating a first version of the given object; and

at least a second back-end server for generating a second version of the given object;

wherein the first and second versions of the given object have different overheads associated therewith.

31. The method of claim 29 , wherein the one version of the given data is served by one back-end server while the other version of the given data is served by another back-end server.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2016
From: CORAL BAY INNOVATIONS, LLC
To: HULU, LLC
Reel/Frame 038824/0206 →
CHANGE OF NAME Recorded Feb 13, 2015
From: SHORELINE INNOVATIONS, LLC
To: CORAL BAY INNOVATIONS, LLC
Reel/Frame 034992/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SHORELINE INNOVATIONS, LLC
Reel/Frame 034954/0956 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2004
From: CHEN, HUAMIN; IYENGAR, ARUN KWANGIL; ROUVELLOU, ISABELLE M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 014303/0154 →