Patent ID: 8296774

Claim:
A method for service-based endpoint discovery for client-side load balancing, the method comprising: a server farm including a plurality of server devices, wherein each server device includes a target service endpoint and a topology service endpoint; a client computing system including a client application, a load balancing module, and a Uniform Resource Identifier (URI) request module; in response to receiving, at a topology service endpoint of a server device of the plurality of server devices, a topology service request from the URI request module, sending, by the topology service endpoint, a topology service response to the URI request module, wherein the topology service response specifies a plurality of target service endpoint resource identifiers and a plurality of topology service endpoint resource identifiers, each target service endpoint resource identifier identifying a different target service endpoint in the server farm, each topology service endpoint resource identifier identifying a different topology service endpoint in the server farm, storing, by the URI request module, the target service endpoint resource identifiers and the topology service endpoint resource identifiers; in response to receiving, by the load balancing module, a target service endpoint URI request from the client application, using a load balancing algorithm to select a target service endpoint resource identifier among the stored target service endpoint resource identifiers and returning the selected target service endpoint resource identifier to the client application; sending, by the client application, a target service request to the target service specified by the selected target service endpoint resource identifier; in response to receiving, by the load balancing module, a topology service endpoint URI request from the URI request module, using a load balancing algorithm to select a topology service endpoint resource identifier among the stored topology service endpoint resource identifiers and returning the selected topology service endpoint resource identifier to the URI request module; and utilizing, by the URI request module, the selected topology service endpoint resource identifier to construct a new topology service request.