IP Library Granted Patent US 10,404,791
Granted Patent B2
US 10,404,791 · App. 14/960,218 · Granted Sep 3, 2019

State-aware load balancing of application servers

Inventors: Ranjit Puri (Bothell, WA); Benjamin M. Schultz (Bellevue, WA); David G. Thaler (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L67/1029G06F9/5083H04L43/0805H04L67/2842
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 10,404,791
App. No.
14/960,218
Granted
Sep 3, 2019
Kind
B2
Abstract

A load balancer receives a client request from a client device for a connection to an application. The load balancer queries a monitoring server for a list of one or more application servers associated with the application. The monitoring server determines, based on cache state information of the plurality of application servers, the list of one or more application servers. The load balancer establishes a connection on behalf of the client device to one of the application servers.

Claims (57)

1. A computing system, comprising:

one or more processors;

memory; and

a plurality of programming instructions stored on the memory and executable by the one or more processors to perform at least the following:

receiving by a monitoring server, information indicating a client request received by a load balancer from a client device, the client request comprising a request to establish a connection to an application;

identifying at least one application server from a plurality of application servers to handle the client request, wherein the identifying is based at least on:

identifying cache state information of the plurality of application servers;

determining that data cached on at least one of the plurality of application servers are relevant to the client request; and

based on the identifying, providing to the load balancer an identifier corresponding to the at least one application server that has been identified as having cache state information and cached data that is relevant to the client request.

2. The computing system of claim 1 , wherein the cache state information includes information stored in local memory of the plurality of application servers and application state information of the plurality of applications servers.

3. The computing system of claim 1 , wherein determining a relevance of data cached on an application server to the client request comprises determining a likelihood that the data cached on the application server is relevant.

4. The computing system of claim 1 , further comprising:

receiving one or more updates from the plurality of application servers and datacenter infrastructure that hosts the plurality of application servers, the one or more updates collectively including the cache state information and capacity information;

computing a list of identifiers for a given set of application servers based on the one or more updates; and

causing additional application servers to be instantiated based at least on the one or more updates.

5. The computing system of claim 1 , further comprising identifying the one or more application servers based on capacity information of a datacenter infrastructure that hosts the plurality of application servers on which applications execute, and wherein the capacity information includes a capacity threshold.

6. The computing system of claim 5 , wherein the capacity information includes one or more of central processing unit (CPU) utilization, memory utilization, storage utilization, network utilization, and wherein the datacenter infrastructure includes one selected from a group consisting of operating systems, software, servers, file servers, network connected storage, and network equipment.

7. The computing system of claim 5 , wherein the capacity information includes at least one of numbers of currently active connections of the plurality of application servers, numbers of connections per second handled by the plurality of application servers, or online states of the plurality of application servers.

8. The computing system of claim 5 , wherein the plurality of application servers are virtualized instantiations of application servers executing on one or more host servers, and wherein the capacity information indicates whether the virtualized instantiations are in an active or reachable state.

9. A computing system, comprising:

one or more processors;

memory; and

a plurality of programming instructions stored on the memory and executable by the one or more processors to perform load balancing amongst a plurality of application servers, the load balancing including:

receiving from a client device a client request for a connection to be established to an application;

transmitting a query to a monitoring server, the query indicating the client request;

receiving from the monitoring server, responsive to the query, one or more identifiers of one or more application servers to handle the client request, the one or more application servers being identified based at least on

cache state information for the one or more application servers; and

a determination that each of the one or more application servers contains data cached on the respective application server that is relevant to the client request; and

establishing a connection on behalf of the client device to at least one application server of the one or more application servers that has been identified as having cache state information and data cached on the at least one application server that is relevant to the client request.

10. The computing system of claim 9 , wherein the load balancing further includes:

monitoring availability statuses of the plurality of application servers; and

selecting the one application server of the one or more application servers based at least on the availability statuses of the plurality of application servers.

11. The computing system of claim 10 , wherein the availability statuses of the plurality of application servers includes availability statuses of at least one host server that hosts at least one of the plurality of application servers.

12. The computing system of claim 9 , wherein the load balancing further includes:

receiving from the monitoring server data indicating relative rankings of the one or more application servers; and

selecting the one application server based at least on the relative rankings.

13. The computing system of claim 9 , wherein the one or more application servers includes at least a first application server and a second application server, and wherein the load balancing further includes:

receiving a first hash value associated with the first application server and a second hash value associated with the second application server; and

selecting the one application server as either the first application server or the second application server, based on a largest one of the first hash value and the second hash value.

14. A method comprising:

receiving by a load balancer a client request from a client device for a connection to an application;

querying a monitoring server for a list of one or more application servers of a plurality of application servers to handle the client request;

determining by the monitoring server the list of one or more application servers, wherein the determining of the one or more application servers is based at least on:

cache state information of the plurality of application servers; and

determining whether data cached on the plurality of application servers are relevant to the client request; and

establishing, by the load balancer, a connection on behalf of the client device to an application server of the one or more application servers that has been identified as having cache state information and data cached on the application server that is relevant to the client request.

15. The method of claim 14 , further comprising:

providing, by the monitoring server, to the load balancer, the list of the one or more application servers and information indicating a relative priority of the one or more application servers; and

determining, by the load balancer, the one application server based at least on the information indicating the relative priority.

16. The method of claim 14 , further comprising determining the list of one or more application servers based at least on determining whether capacity information of the plurality of application servers meets or exceeds one or more utilization thresholds, wherein the capacity information includes hardware state utilization data of one or more host servers on which the application servers are instantiated.

17. The method of claim 16 , wherein the plurality of application servers are instantiated as virtual machines on a plurality of host servers, and the capacity information indicates whether each of the virtual machines are currently active and reachable, the method further comprising:

determining the list of one or more application servers based at least on the capacity information indicating whether each of the virtual machines are currently active and reachable;

monitoring, by the load balancer, availability information for the plurality of host servers; and

selecting, by the load balancer, the one application server from amongst the one or more application servers based at least on the availability information for the plurality of host servers.

18. The method of claim 16 , wherein the capacity information is selected from a group consisting of numbers of currently active connections of the plurality of application servers, numbers of connections per second handled by the plurality of application servers, and online states of the plurality of application servers.

19. The method of claim 14 , wherein the cache state information includes information stored in local memory of the plurality of application servers and the method further comprises determining the list of one or more application servers based at least on a relevance of an overlapping cache state of some or all of the information stored in local memory of the plurality of application servers to the request.

20. The method of claim 14 , further comprising receiving notifications from the plurality of application servers, the notifications indicating the cache state information of the plurality of application servers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2015
From: PURI, RANJIT; SCHULTZ, BENJAMIN M.; THALER, DAVID G.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 037217/0752 →
Continuity (1)
Related Publication 20170163724A1 · Jun 8, 2017
Cited By (60)
US 12,192,026 US 12,200,038 US 12,200,083 US 12,200,084 US 12,218,776 US 12,218,777 US 12,229,210 US 12,231,253 US 12,231,519 US 12,250,089 US 12,250,090 US 12,260,364 US 12,261,712 US 12,277,187 US 12,277,188 US 12,277,189 US 12,278,878 US 12,278,880 US 12,284,069 US 12,289,383 US 12,294,481 US 12,301,401 US 12,309,123 US 12,309,241 US 12,323,287 US 12,323,500 US 12,323,501 US 12,332,960 US 12,341,860 US 12,355,855 US 12,368,789 US 12,375,582 US 12,411,902 US 12,413,648 US 12,425,492 US 12,438,956 US 12,445,511 US 12,457,273 US 12,483,635 US 12,517,972 US 12,524,490 US 12,524,491 US 12,536,243 US 12,542,764 US 12,547,626 US 12,549,645 US 12,563,130 US 12,587,429 US 12,587,430 US 12,587,579 US 12,603,809 US 12,652,330 US 12,659,218 US 12,671,750 US 12,706,984 US 12,719,734 US 12,719,735 US 12,719,945 US 12,724,840 US 12,726,551