Load Balance
# Load Balance
# What is a load balancer?
A Load Balancer (LB) is a device or software application that distributes incoming network or application traffic across multiple servers. By doing so, a load balancer aims to optimize resource use, maximize throughput, minimize response time, and avoid overloading a single server.
# Types of load balancer?
- Layer 4 Load Balancers: Operate at the transport layer (TCP/UDP). They route traffic based on the source and destination IP addresses and ports.
 - Layer 7 Load Balancers: Operate at the application layer (HTTP/HTTPS). They can make more intelligent routing decisions based on the content of the request (i.e. HTTP request header, url information, etc.).
 
For example, something you could say in a system design interview:
"I would place a Layer 7 load balancer in front of the web servers. This allows us to route traffic intelligently, perhaps directing API calls to a specific set of servers optimized for those operations. The load balancer would perform health checks to ensure traffic is only directed to healthy servers. To avoid it becoming a single point of failure, we could use a secondary load balancer as a fallback."
# Load balancing algorithms
Overview
- Static
- Random
 - Round-robin
 - Sticky round-robin
 - Weighted round-robin
 - IP hashing
 - Consistent hashing
 
 - Dynamic
- Least connections
 - Least response time
 
 

Static algorithms: Distribute requests without taking into account real-time server state, conditions, and performance.
# Round robin

# Sticky round robin

# Weighted round robin

# IP hashing

Dynamic algorithms
# Least connections

# Least response time

# Load balancer solutions
Layer 4: Linux Virtual Server, HAProxy, Nginx Layer 7: HAProxy, Nginx