1. A method for locating a resource, comprising: obtaining a first availability of the resource on a first server and a second availability of the resource on a second server; storing the first availability and the second availability in a capacity object; publishing the capacity object after storing the first availability and the second availability; after publishing the capacity object, receiving a request for the resource from a client; identifying the capacity object storing a first server information for the first server of the resource and a second server information for the second server of the resource, wherein the first server information comprises the first availability of the resource on the first server and a first bandwidth of the first server, and wherein the second server information comprises the second availability of the resource on the second server and a second bandwidth of the second server; replicating the capacity object on a first indirection server; replicating the capacity object on a second indirection server; selecting the first server in response to the request using a function, wherein selecting is based on the first server information and the second server information; redirecting the request from the first indirection server to the first server, wherein the first server handles the request; receiving a message from the first server, wherein the message is sent in response to handling the request by the first server, and wherein the message comprises an updated availability and an updated bandwidth for the first server; and updating the capacity object by: reducing the first availability of the resource on the first server and the first bandwidth of the first server in the capacity object to generate an updated capacity object; replicating the updated capacity object on the first indirection server; and replicating the updated capacity object on the second indirection server.