Load Balancing in Microservices using Spring Cloud LoadBalancer

What is Load Balancing in Microservices?

What is Load Balancing in Microservices?

Load balancing means distributing incoming requests across multiple instances of a service to:

  • Improve performance

  • Increase availability

  • Avoid overloading a single instance

πŸ“Œ Example:
Order Service has 3 instances β†’ requests should be distributed among them.


πŸ”Ή Why Load Balancing is Needed?

Without load balancing:

  • One instance gets overloaded

  • Others remain idle

  • High latency & failures


πŸ”Ή Types of Load Balancing

1️⃣ Server-side Load Balancing

  • Load balancer sits before services

  • Example: Nginx, AWS ELB

2️⃣ Client-side Load Balancing (Spring approach)

  • Client decides which service instance to call

  • Uses service discovery (Eureka/Consul)

πŸ‘‰ Spring Cloud LoadBalancer = Client-side


πŸ”Ή What is Spring Cloud LoadBalancer?

It is the replacement of Netflix Ribbon.

It:

  • Works with service discovery

  • Chooses a service instance

  • Integrates with WebClient & Feign


πŸ”Ή How It Works (Flow)

  1. Service registers with Eureka

  2. Client asks Eureka for available instances

  3. LoadBalancer selects one instance

  4. Request is sent to that instance


πŸ”Ή Load Balancing Strategies

  • Round Robin (default)

  • Random

  • Custom (based on metadata, zone, etc.)


πŸ”Ή Example Configuration

1️⃣ Dependency

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

2️⃣ Using WebClient

@Bean
@LoadBalanced
public WebClient.Builder webClientBuilder() {
return WebClient.builder();
}
webClient.get()
.uri("http://payment-service/pay")
.retrieve()
.bodyToMono(String.class);

3️⃣ With Feign Client

@FeignClient(name = "payment-service")
public interface PaymentClient {
@GetMapping("/pay")
String pay();
}

πŸ”Ή Real-World Example

πŸ’³ Payment Service has 5 instances

  • LoadBalancer distributes traffic

  • If one instance goes down β†’ others continue


πŸ”Ή Spring Cloud LoadBalancer vs Ribbon

Feature Ribbon Spring Cloud LoadBalancer
Status Deprecated Active
Reactive Support Limited Native
Spring Native ❌ βœ…

πŸ”₯ Interview One-Liner

β€œSpring Cloud LoadBalancer provides client-side load balancing by selecting service instances dynamically using service discovery.”

Leave a Reply