Temporal affinity-based routing of workloads
First Claim
1. A computer-implemented method for distributing requests, the method comprising:
- a coordinator within a database server cluster (a) developing advice as to whether affinity-based routing would benefit a service at a node in the database server cluster and (b) posting the advice to one or more middle-tier servers that send requests to and receive responses from database servers in the database server cluster;
determining whether a potential gain in performance in the database server cluster can be achieved by using affinity-based routing in the database server cluster;
in response to determining that a potential gain in performance in the database server cluster can be achieved by using affinity-based routing in the database server cluster, recommending, in the advice, to distribute requests to nodes in the database server cluster to preserve client-to-node affinity for requests from the same client;
after recommending, collating performance characteristics of the database server cluster;
based on collating the performance characteristics, measuring a potential loss in performance in the database server cluster;
in response to measuring a potential loss in performance in the database server cluster, removing the advice to distribute requests to nodes in the database server cluster to preserve client-to-node-affinity; and
wherein the method is performed by one or more computing devices.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques for routing client requests among a group of nodes offering a service are described. A coordinator determines that performance could be improved by using affinity-based routing. In one embodiment, the coordinator calculates a Time-to-Live (TTL) metric whereby clients benefit by returning to the same cache and posts this hint to subscribers. Client'"'"'s start preserving locality data in an affinity context, such that later requests for a connection can be routed to the location last visited. The coordinator measures the system over subsequent intervals. If the gradient of the goodness (viz service quality and capacity) is stable or improving, then the coordinator continues to advise subscribers to use the affinity-based technique. Alternatively, if the gradient of the goodness is deteriorating, then the coordinator posts advice to the subscribers to stop using the affinity-based technique for any instance during the next intervals.
-
Citations
32 Claims
-
1. A computer-implemented method for distributing requests, the method comprising:
-
a coordinator within a database server cluster (a) developing advice as to whether affinity-based routing would benefit a service at a node in the database server cluster and (b) posting the advice to one or more middle-tier servers that send requests to and receive responses from database servers in the database server cluster; determining whether a potential gain in performance in the database server cluster can be achieved by using affinity-based routing in the database server cluster; in response to determining that a potential gain in performance in the database server cluster can be achieved by using affinity-based routing in the database server cluster, recommending, in the advice, to distribute requests to nodes in the database server cluster to preserve client-to-node affinity for requests from the same client; after recommending, collating performance characteristics of the database server cluster; based on collating the performance characteristics, measuring a potential loss in performance in the database server cluster; in response to measuring a potential loss in performance in the database server cluster, removing the advice to distribute requests to nodes in the database server cluster to preserve client-to-node-affinity; and wherein the method is performed by one or more computing devices. - View Dependent Claims (2, 3)
-
-
4. A computer-implemented method comprising:
-
obtaining a measurement of a characteristic of a system; determining whether the measurement satisfies specified criteria; and in response to determining that the measurement does not satisfy the specified criteria, distributing requests from one or more clients among two or more nodes of the system based on an affinity-based technique; wherein distributing requests based on the affinity-based technique comprises sending all requests that come from each client of the one or more clients to a particular node of the two or more nodes while an affinity relationship exists between said each client and the particular node and a particular service; and wherein the characteristic is an average time taken by nodes in the system to receive replicas of data blocks that were requested from other nodes in the system; wherein each node in the system is a separate database server instance with a cache that stores data blocks; wherein the method is performed by one or more computing devices. - View Dependent Claims (5, 6, 7, 8, 9, 10)
-
-
11. A computer-implemented method for distributing requests, the method comprising:
-
during a first time interval, distributing, based on a non-affinity load-balancing technique, requests from one or more clients among two or more nodes in a system; during the first time interval, obtaining a measurement of a characteristic of the system; determining whether the measurement satisfies specified criteria; and if the measurement does not satisfy the specified criteria, then, during a second time interval that is subsequent to the first time interval, distributing requests from at least one of the one or more clients among the two or more nodes based on an affinity-based technique, thereby switching from the non-affinity load-balancing technique to the affinity-based technique in between the first time interval and the second time interval; wherein distributing requests based on the affinity-based technique comprises sending all requests that come from a particular client to a particular node of the two or more nodes while an affinity relationship exists between the particular client and the particular node; wherein the method is performed by one or more computing devices. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A computer-readable non-transitory storage that stores instructions which, when executed by one or more processors, cause the one of more processors to perform the steps of:
-
a coordinator within a database server cluster (a) developing advice as to whether affinity-based routing would benefit a service at a node in the database server cluster and (b) posting the advice to one or more middle-tier servers that send requests to and receive responses from database servers in the database server cluster; determining whether a potential gain in performance in the database server cluster can be achieved by using affinity-based routing in the database server cluster; in response to determining that a potential gain in performance in the database server cluster can be achieved by using affinity-based routing in the database server cluster, recommending, in the advice, to distribute requests to nodes in the database server cluster to preserve client-to-node affinity for requests from the same client; after recommending, collating performance characteristics of the database server cluster; based on collating the performance characteristics, measuring a potential loss in performance in the database server cluster; and in response to measuring a potential loss in performance in the database server cluster, removing the advice to distribute requests to nodes in the database server cluster to preserve client-to-node affinity. - View Dependent Claims (18, 19)
-
-
20. A computer-readable non-transitory storage that stores instructions which, when executed by one or more processors, cause the one of more processors to perform the steps of:
-
obtaining a measurement of a characteristic of a system; determining whether the measurement satisfies specified criteria; and in response to determining that the measurement does not satisfy the specified criteria, distributing requests from one or more clients among two or more nodes of the system based on an affinity-based technique; wherein distributing requests based on the affinity-based technique comprises sending all requests that come from each client of the one or more clients to a particular node of the two or more nodes while an affinity relationship exists between said each client and the particular node and a particular service; and wherein the characteristic is an average time taken by nodes in the system to receive replicas of data blocks that were requested from other nodes in the system; and wherein each node in the system is a separate database server instance with a cache that stores data blocks. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
-
27. A computer-readable non-transitory storage that stores instructions which, when executed by one or more processors, cause the one of more processors to perform the steps of:
-
during a first time interval, distributing, based on a non-affinity load-balancing technique, requests from one or more clients among two or more nodes in a system; during the first time interval, obtaining a measurement of a characteristic of the system; determining whether the measurement satisfies specified criteria; and if the measurement does not satisfy the specified criteria, then, during a second time interval that is subsequent to the first time interval, distributing requests from at least one of the one or more clients among the two or more nodes based on an affinity-based technique, thereby switching from the non-affinity load-balancing technique to the affinity-based technique in between the first time interval and the second time interval; and wherein distributing requests based on the affinity-based technique comprises sending all requests that come from a particular client to a particular node of the two or more nodes while an affinity relationship exists between the particular client and the particular node. - View Dependent Claims (28, 29, 30, 31, 32)
-
Specification