This document discusses various load balancing techniques. It begins with an introduction to load balancing and outlines strategies from using multiple web servers with a software load balancer to scaling load balancers using DNS. Lower level techniques like n-tuple hashing and anycast routing are covered. Optimizing for locality with techniques like Geo DNS and BGP routing are also summarized. Emerging techniques involving service meshes and direct container return are briefly outlined. Finally, several Go projects for implementing various load balancing functions are listed.