A method to achieve at least substantially constant processing request throughput within an environment having varying resource availability, comprising, in response to a change in availability of the resources, where the change specifies which of the resources are available and which of the resources are unavailable, and where each resource has a maximum request limit, a minimum request limit, a willingness parameter, and a factor:
- setting a normalized factor for each resource based on the factors of the resources, and determining a load for each resource based on the normalized factors;
- repeating
- determining a willingness capacity for each resource based on the willingness parameter of the resource, the willingness parameter indicating at least whether the resource is willing to receive a number of processing requests no greater than the maximum request limit or no greater than the minimum request limit;
- determining a throughput overflow for each resource having a load greater than its willingness capacity, determining a potential throughput loss as equal to a sum of the throughput overflows that have been determined, and resetting the load for each resource having a throughput overflow greater than zero;
- setting a new normalized factor for each resource that is available and not fully loaded, and updating the load for each resource that is available and not fully loaded based on the new normalized factors and the potential throughput loss,
- until the load for each resource is less than or equal to the willingness capacity of the resource or until all the resources are each fully loaded or unavailable.