System Design শেখো
শেখো / মৌলিক ধারণা

Load Balancers (লোড ব্যালেন্সার)

7 মিনিট Module 1 · Fundamentals
এক নজরে
  • Load balancer অনেকগুলো server-এর মধ্যে আসা request ভাগ করে দেয়, যাতে কোনো একটা server-এর উপর বেশি চাপ না পড়ে।
  • ভাগ করার নানা algorithm আছে — Round Robin, Least Connections, IP Hash ইত্যাদি।
  • কোনো server নষ্ট হলে load balancer তাকে বাদ দিয়ে বাকিদের কাছে request পাঠায় — এটাই high availability।

সমস্যাটা কী?

ধরো তোমার ৫টা server আছে (horizontal scaling)। কিন্তু ব্যবহারকারীর request তো একটাই ঠিকানায় আসে। কোন request কোন server-এ যাবে, কে ঠিক করবে?

আর সবাই যদি একই server-এ গিয়ে পড়ে, বাকি ৪টা বসে থাকবে আর ওই একটা চাপে মরে যাবে। এই সমস্যার সমাধানই Load Balancer

Load Balancer হলো এমন একটা অংশ, যা আসা request গুলোকে একাধিক server-এর মধ্যে ভাগ করে দেয় — যাতে কোনো একটা server অতিরিক্ত চাপে না পড়ে।

সহজ উদাহরণ: ব্যাংকের লাইন

ব্যাংকে অনেকগুলো কাউন্টার (server) থাকে, আর একজন লোক (load balancer) দাঁড়িয়ে বলে দেন "আপনি ৩ নম্বরে যান, আপনি ৫ নম্বরে"। এতে কোনো একটা কাউন্টারে অযথা ভিড় জমে না।

জনপ্রিয় Load Balancing Algorithm

  1. Round Robin — পালা করে সবাইকে সমানভাবে request দেয়।
  2. Weighted Round Robin — যে server বেশি শক্তিশালী, তাকে বেশি request দেয়।
  3. Least Connections — এই মুহূর্তে যার সবচেয়ে কম কাজ চলছে, তাকে দেয়।
  4. Least Response Time — যে সবচেয়ে দ্রুত সাড়া দিচ্ছে, তাকে দেয়।
  5. IP Hash — ব্যবহারকারীর IP দেখে ঠিক করে — একই ব্যবহারকারী যেন বারবার একই server-এ যায়।

নিজে চালিয়ে দেখো

Algorithm বদলে দেখো ভাগটা কীভাবে পাল্টায়। আর একটা server "down" করে দেখো — load balancer কীভাবে তাকে বাদ দিয়ে বাকিদের কাছে request পাঠায়:

টুল লোড হচ্ছে…

Health Check — সুস্থতা পরীক্ষা

Load balancer নিয়মিত প্রতিটা server-কে জিজ্ঞেস করে: "তুমি কি ঠিক আছো?" একে বলে health check

কোনো server সাড়া না দিলে load balancer ধরে নেয় সেটা নষ্ট, আর তাকে তালিকা থেকে বাদ দেয়। ফলে ব্যবহারকারী কোনো error দেখে না — এটাই availability বাড়ানোর মূল কৌশল।

L4 vs L7 Load Balancer (একটু গভীরে)

  • Layer 4 (L4) — শুধু IP ও port দেখে দ্রুত সিদ্ধান্ত নেয়। ভেতরের ডেটা দেখে না।
  • Layer 7 (L7) — request-এর ভেতরটা (URL, header) দেখে আরও বুদ্ধিমান সিদ্ধান্ত নিতে পারে। যেমন /images request এক server-এ, /api request আরেক server-এ।
টিপস

ইন্টারভিউতে high availability বা scaling নিয়ে কথা উঠলে load balancer প্রায় সবসময়ই তোমার ডিজাইনে থাকবে — client আর server-গুলোর মাঝখানে। এটা আঁকতে ভুলো না।

বাস্তব উদাহরণ

প্রায় সব বড় ওয়েবসাইটেই (Amazon, Google, Facebook) তোমার request প্রথমে একটা load balancer-এ পৌঁছায়, তারপর সেটা হাজারো server-এর কোনো একটাতে পাঠানো হয়। তুমি কখনো জানতেও পারো না কোন server তোমাকে উত্তর দিল।

মিনি কুইজ

1. Round Robin algorithm কীভাবে request ভাগ করে?

2. একটা server হঠাৎ নষ্ট হলে ভালো load balancer কী করে?