LOAD BALANCING FOR SERVICES
First Claim
1. Within a computer architecture, the computer architecture including a plurality of instances of an application and an application load balancer for the application, the application load balancing being part of the application, instances of the application running on machines in a farm of machines, a method for balancing the load for the application across the plurality of instances of the application, the method comprising:
- an act of the application load balancer receiving a first client initiated message directed to the application, the application load balancer being integrated as part of the application such that the application load balancer can access message content under the same security model as the application, the first client initiated message being the first message in a plurality of messages included in a message sequence;
an act of the application load balancer assigning a specified identifier to the plurality of messages included in the message sequence based on the characteristics of the first client initiated message;
an act of the application load balancer determining that the assigned identifier is not mapped to an instance of the application;
an act of the application load balancer mapping the specified identifier to a specified instance of the application in accordance with a load balancing algorithm to balance the load for the application across the plurality of instances of the application;
an act of the application load balancer sending the first client initiated message to the specified instance of the application;
an act of the application load balancer receiving a second client initiated message included in the message sequence subsequent to receiving the first client initiated message;
an act of the application load balancer assigning the specified identifier to the second client initiated message based on the characteristics of the second client initiated message;
an act of the application load balancer correlating the second client initiated message with the first client initiated message based on the mapping of the specified identifier to the specified instance of the application; and
an act of the application load balancer sending the second client initiated message to the specified instance of the application in response to the correlation.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention extends to methods, systems, and computer program products for load balancing for services. Embodiments of the invention facilitate load balancing between instances of a service based on affinitization of messages, based on content of the message. For example, messages in the same session can be dispatched to the same service instance. A sequence or series of related messages associated with long running and/or stateful services are more likely to be dispatched to the same instance of the service. Thus, if the service instance has persisted client state, there is an increased likely of utilizing the persisted client state and not having another service instance recreate the client state.
-
Citations
20 Claims
-
1. Within a computer architecture, the computer architecture including a plurality of instances of an application and an application load balancer for the application, the application load balancing being part of the application, instances of the application running on machines in a farm of machines, a method for balancing the load for the application across the plurality of instances of the application, the method comprising:
-
an act of the application load balancer receiving a first client initiated message directed to the application, the application load balancer being integrated as part of the application such that the application load balancer can access message content under the same security model as the application, the first client initiated message being the first message in a plurality of messages included in a message sequence; an act of the application load balancer assigning a specified identifier to the plurality of messages included in the message sequence based on the characteristics of the first client initiated message; an act of the application load balancer determining that the assigned identifier is not mapped to an instance of the application; an act of the application load balancer mapping the specified identifier to a specified instance of the application in accordance with a load balancing algorithm to balance the load for the application across the plurality of instances of the application; an act of the application load balancer sending the first client initiated message to the specified instance of the application; an act of the application load balancer receiving a second client initiated message included in the message sequence subsequent to receiving the first client initiated message; an act of the application load balancer assigning the specified identifier to the second client initiated message based on the characteristics of the second client initiated message; an act of the application load balancer correlating the second client initiated message with the first client initiated message based on the mapping of the specified identifier to the specified instance of the application; and an act of the application load balancer sending the second client initiated message to the specified instance of the application in response to the correlation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. Within a computer architecture, the computer architecture including a plurality of instances of an application and an application load balancer for the application, the application load balancing being part of the application, each instance of the application running on a different corresponding machine, a method for balancing the load for the application across the plurality of instances of the application, the method comprising:
-
an act of the application load balancer receiving an application instance initiated message from a specified instance of the plurality of instances of the application, the application instance initiated message directed to another application that is external to the plurality of instances of an application; an act of the application load balancer assigning an specified identifier to the application instance initiated message based on the characteristics of the application instance initiated message; an act of the application load balancer mapping the specified identifier to the specified instance of the application to balance the load for the application across the plurality of instances of the application; an act of the application load balancer receiving a return message from the other application directed to the application; an act of the application load balancer assigning the specified identifier to the return message based on the characteristics of the return message; an act of the application load balancer correlating the return message with the application instance initiated message based on the mapping of the specified identifier to the specified instance of the application; and an act of the application load balancer sending the return message to the specified instance of the application. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
-
17. A load balancing system for balancing an application load across a plurality of instances of the application, the load balancing system comprising:
-
at least one computer system; system memory; and one or more computer readable-storage media having stored thereon computer-executable instructions representing an application, the application including a plurality of instances of the application running on different machines and an application load balancer running on a different machine, the application load balancer for balancing the load across the plurality of instances of the application, wherein each instance of the application is configured to; communicate with the application load balancer through a communication stack; deserialize serialized security claim headers; reconstruct security claims from deserialzed security claim headers; provide health state information related to the health of the application instance; and provide lifecycle events related status changes at the application instance; and wherein the application load balancer is configured to; receive messages directed to the application; assign identifiers to messages based on message characteristics; receiving lifecycle events from each of the plurality of application instances and health state information from corresponding computer systems running the plurality of application instances; determine that an assigned identifier is not mapped to an application instance; map assigned identifiers to application instances based on received health state information and received lifecycle events in response to determining that an assigned identifier is not mapped to an application instance such that a series of the messages with the same characteristics can be correlated with one another; determine that an assigned identifier is mapped to an application instance; correlate a received message with one or more previously received messages in a series of messages based on an assigned identifier in response to determining that the assigned identifier is mapped to the application instance; and send a received message to an application instance so as to balance the load for the application across the plurality of instances of the application. - View Dependent Claims (18, 19, 20)
-
Specification