Lesson 1: Load Balancers#
What is a Load Balancer?#
A load balancer sits between clients and servers, distributing incoming network traffic across a group of backend servers. This ensures that no single server bears too much load.
Types of Load Balancing#
Layer 4 (Transport Layer)#
- Decisions based on IP address and TCP/UDP ports.
- Faster, less CPU intensive.
- Does not inspect the content of the request.
Layer 7 (Application Layer)#
- Decisions based on the content of the message (URL, HTTP headers, cookies).
- Can route traffic to different services based on URL (e.g.,
/imagesto image servers). - More CPU intensive but smarter.
Algorithms#
- Round Robin: Requests are distributed sequentially.
- Least Connections: Sends request to the server with the fewest active connections.
- IP Hash: The client’s IP address is used to determine which server receives the request (useful for session stickiness).
🛠️ Sruja Perspective: Modeling Load Balancers#
In Sruja, a load balancer is typically modeled as a container or component that sits in front of your application servers.
architecture "Web Application" {
container LB "Nginx Load Balancer" {
technology "Nginx"
tags "load-balancer"
description "Layer 7 load balancer routing traffic based on URL paths."
}
container AppServer "App Server" {
technology "Python, Django"
tags "scaled"
}
// Traffic flow
LB -> AppServer "Distributes requests (Round Robin)"
}