A method for processing requests, wherein the request processing is distributed among a plurality of servers, the method comprising the steps of: receiving a request at a first-chance server(k), the request being forwarded at random to the first-chance server(k) by any of the plurality of servers, said first-chance server being associated with at least one predetermined neighbour server; determining whether or not said first-chance server is overloaded by comparing a current load of the first-chance server (w k) to an overload constant (W k), wherein if the first-chance server is determined as being not overloaded, the method further comprises processing the request by the first-chance server; if the first-chance server is determined as being overloaded, the method further comprises the steps of: determining a difference between the current load of the first-chance server (w k) and a current load of a first predetermined neighbour server(w next-neighbour) and comparing said difference to a threshold θ k, where θ k is a comparative threshold indicating when the first predetermined neighbour server is less loaded than the first-chance server; wherein;if the first predetermined neighbour server is determined as being less loaded than the first-chance server, the method further comprises forwarding the request to the first predetermined neighbour server for processing. receiving a request at a first-chance server(k), the request being forwarded at random to the first-chance server(k) by any of the plurality of servers, said first-chance server being associated with at least one predetermined neighbour server; determining whether or not said first-chance server is overloaded by comparing a current load of the first-chance server (w k) to an overload constant (W k), wherein if the first-chance server is determined as being not overloaded, the method further comprises processing the request by the first-chance server; if the first-chance server is determined as being overloaded, the method further comprises the steps of: determining a difference between the current load of the first-chance server (w k) and a current load of a first predetermined neighbour server(w next-neighbour) and comparing said difference to a threshold θ k, where θ k is a comparative threshold indicating when the first predetermined neighbour server is less loaded than the first-chance server; wherein;if the first predetermined neighbour server is determined as being less loaded than the first-chance server, the method further comprises forwarding the request to the first predetermined neighbour server for processing. determining a difference between the current load of the first-chance server (w k) and a current load of a first predetermined neighbour server(w next-neighbour) and comparing said difference to a threshold θ k, where θ k is a comparative threshold indicating when the first predetermined neighbour server is less loaded than the first-chance server; wherein;if the first predetermined neighbour server is determined as being less loaded than the first-chance server, the method further comprises forwarding the request to the first predetermined neighbour server for processing.