Suppose that n balls are placed into $n$ bins, each ball being placed into a bin chosen independently and uniformly at random. Then, with high probability, the maximum load in any bin is approximately $\log n \over \log \log n$. Suppose instead that each ball is placed sequentially into the least full of $d$ bins chosen independently and uniformly at random. It has recently been shown that the maximum load is then only ${\log \log n \over \log d} + \O(1)$ with high probability. Thus giving each ball two choices instead of just one leads to an exponential improvement in the maximum load. This result demonstrates the power of two choices, and it has several applications to load balancing in distributed systems.
In this thesis, we expand upon this result by examining related models and by developing techniques for studying similar randomized load balancing schemes. We first remove the restriction above that the balls be placed sequentially. We provide a lower bound demonstrating a tradeoff between the number of rounds of communication used and the maximum load achieved. Our lower bound shows that one cannot achieve a maximum load of $\O(\log \log n)$ with only a constant number of rounds of communication. We also provide simple algorithms that match our lower bounds within a constant factor.
We then consider dynamic models, where balls enter and leave the system over time. This leads to a natural queueing problem: customers arrive as a Poisson stream at a collection of $n$ servers. Each customer chooses $d$ of these servers independently and uniformly at random and queues at the server currently containing the fewest customers. Customers require an exponentially distributed amount of service time before leaving the system. We call this model the {\em supermarket model}. We determine the behavior of the supermarket model by defining an idealized process, corresponding to a system of infinite size, which is cleaner and easier to analyze. We then relate the idealized system to the finite system, bounding the error between them. Using this technique, we also study several generalizations of the supermarket model and many other load balancing schemes. Our results demonstrate the effectiveness of having two choices in many situations.