The before code calls a fixed service instance, risking overload and failure. The after code cycles through multiple instances, distributing requests evenly to balance load.
import requests
### Before: No load balancing, direct calls to fixed service instance
class ServiceClient:
def get_data(self):
# Always calls the same service instance
response = requests.get('http://service-instance-1/api/data')
return response.json()
### After: Simple round-robin load balancer client
class LoadBalancerClient:
def __init__(self):
self.instances = [
'http://service-instance-1/api/data',
'http://service-instance-2/api/data',
'http://service-instance-3/api/data'
]
self.index = 0
def get_data(self):
url = self.instances[self.index]
self.index = (self.index + 1) % len(self.instances)
response = requests.get(url)
return response.json()