Factors affecting the design of load balancing algorithms in distributed systems