মন্টু মিয়াঁর সিস্টেম ডিজাইন
লোড ব্যালেন্সার

কীভাবে কাজ করে লোড ব্যালেন্সার?

আমরা তো জানলাম যে লোড ব্যালেন্সার একটা রিকোয়েস্ট রিসিভ করে সেটাকে 'ফরোয়ার্ড' করে দেয় সার্ভারের কাছে। কিন্তু কাজটা যত সহজ মনে হচ্ছে, আসলে ততটা না।

মন্টু মিয়াঁ ভাবলেন, "আমার তো ১০টা সার্ভার। এখন প্রথম ইউজার আসলে তাকে কোন সার্ভারে পাঠাব? ১ নম্বরটায় নাকি ১০ নম্বরটায়?"

এই সিদ্ধান্ত নেওয়ার জন্যই লোড ব্যালেন্সারের কিছু নিয়ম বা 'অ্যালগরিদম' সেট করা থাকে। মন্টু মিয়াঁ তার নোটখাতায় পেন্সিল দিয়ে দাগ কেটে পপুলার কিছু অ্যালগরিদম নোট করে নিলেন:

রাউন্ড রবিন (Round Robin)

তাস খেলার পদ্ধতি 🃏

এটা হলো লোড ব্যালেন্সিং জগতের 'লুডু খেলা'র মতো সহজ। আমরা বন্ধুরা মিলে তাস খেলার সময় যেভাবে কার্ড বিলি করি, একটা তোমাকে, একটা আমাকে, একটা তাকে, ঠিক সেভাবেই এটা কাজ করে।

প্রথম রিকোয়েস্ট -> সার্ভার ১-এ যাবে। দ্বিতীয় রিকোয়েস্ট -> সার্ভার ২-এ যাবে। ... দশম রিকোয়েস্ট -> সার্ভার ১০-এ যাবে। এগারো নম্বর রিকোয়েস্ট আসলে? আবার ঘুরে সার্ভার ১-এর কাছে যাবে।

সুবিধা:

  • ইমপ্লিমেন্ট করা পানির মতো সহজ।
  • সব সার্ভার সমান ট্রাফিক পায়। কেউ বসে থাকে না।

অসুবিধা:

  • বোকা অ্যালগরিদম: এ কোনো খোঁজ নেয় না সার্ভারটি ব্যস্ত নাকি ফ্রি। সার্ভার ১ যদি আগের রিকোয়েস্ট প্রসেস করতে গিয়ে ধুঁকতে থাকে, রাউন্ড রবিন তবুও তার ঘাড়েই নতুন রিকোয়েস্ট চাপাবে।
  • মন্টুর সব সার্ভার যদি সমান শক্তিশালী না হয় (যেমন একটা সুপার কম্পিউটার আর একটা ল্যাপটপ), তবে ল্যাপটপটি লোড নিতে পারবে না কিন্তু সুপার কম্পিউটার বসে থাকবে।

Load Balancer Round Robin

ওয়েটেড রাউন্ড রবিন (Weighted Round Robin)

যার শক্তি বেশি, তার কাজ বেশি 💪

মন্টু মিয়াঁ হঠাৎ মনে করলেন, "আরে! আমার তো একটা নতুন দামী সুপার কম্পিউটার আছে, আর একটা পুরোনো ল্যাপটপ আছে। আমি যদি রাউন্ড রবিন চালাই, তবে তো আমার সুপার কম্পিউটারের লস!"

ঠিক এই সমস্যার সমাধান হলো 'ওয়েটেড রাউন্ড রবিন'। এখানে আপনি বলে দিতে পারেন কোন সার্ভারের ক্ষমতা কত।

  • সুপার কম্পিউটার (Weight 5) -> একে একবারে ৫টা রিকোয়েস্ট দাও।
  • ল্যাপটপ (Weight 1) -> একে ১টা রিকোয়েস্ট দাও।

এভাবে ক্ষমতার বিচারে কাজ ভাগ করে দেওয়া হয়।

Load Balancer Weighted Round Robin

লিস্ট কানেকশন (Least Connection)

ব্যাংকের ক্যাশ কাউন্টার 🏦

এটা একটু স্মার্ট পদ্ধতি। ধরুন আপনি ব্যাংকে বা সুপারশপে গেছেন। সামনে ৫টা কাউন্টার। আপনি কোন লাইনে দাঁড়াবেন? অবশ্যই যে লাইনে মানুষ সবচেয়ে কম, তাই না?

লিস্ট কানেকশন ঠিক এই কাজটাই করে। লোড ব্যালেন্সার সবসময় নজর রাখে কোন সার্ভারে বর্তমানে কয়টা রিকোয়েস্ট প্রসেসিং-এ আছে। নতুন রিকোয়েস্ট আসলে সে খুঁজে বের করে কোন সার্ভারটি সবচেয়ে রিলাক্সে আছে (Connection কম), এবং তার কাছেই পাঠিয়ে দেয়।

কখন ব্যবহার করবেন?

যখন রিকোয়েস্টগুলোর প্রসেসিং টাইম সমান না। যেমন, কোনো ইউজার ভিডিও আপলোড দিচ্ছে (অনেক সময় লাগবে), আবার কেউ শুধু চ্যাট করছে (কম সময় লাগবে)। এসব ক্ষেত্রে লিস্ট কানেকশন সেরা।

Load Balancer Least Connection

আইপি হ্যাশ (IP Hash)

পরিচিত রিকশাওয়ালা 🛺

মাঝেমধ্যে আমাদের এমন হয় যে, আমরা পরিচিত রিকশাওয়ালা বা নাপিত ছাড়া চুল কাটাতে চাই না। কারণ সে আমাকে চেনে, আমার পছন্দ জানে।

সফটওয়্যারের ক্ষেত্রেও তাই। যদি এমন দরকার হয় যে, 'করিম সাহেব' প্রথমবার যে সার্ভারে লগ-ইন করেছেন, তার সেশন বা শপিং কার্ট ওই সার্ভারেই আছে। পরেরবার রিকোয়েস্ট করলে তাকে যেন অন্য সার্ভারে না পাঠিয়ে ওই পুরোনো সার্ভারেই পাঠানো হয়।

আইপি হ্যাশ অ্যালগরিদম ইউজারের আইপি অ্যাড্রেস দেখে তাকে চিনে রাখে এবং প্রতিবার তাকে নির্দিষ্ট সার্ভারের কাছেই পাঠায়। একে 'স্টিকি সেশন' (Sticky Session)-ও বলা হয়।

📝 মন্টু মিয়াঁর 'কুইক নোট' - বাকিদেরও চিনে রাখি:

মন্টু দেখল বইয়ের পাতায় আরও কিছু অ্যালগরিদমের নাম লেখা। সবগুলোর ডিটেইলস না পড়লেও সে এক লাইনে এদের কাজগুলো টুকে রাখল:

  • লিস্ট রেসপন্স টাইম (Least Response Time): অনেকটা 'কুইজ প্রতিযোগিতা'র মতো। যে সার্ভার সবার আগে উত্তর (TTFB) দিতে পারে, লোড ব্যালেন্সার নতুন কাজ তার কাছেই পাঠায়। স্পিডই এখানে আসল।
  • লিস্ট ব্যান্ডউইথ (Least Bandwidth): যে সার্ভার বর্তমানে সবচেয়ে কম ডাটা (Traffic in Mbps) আদান-প্রদান করছে, তাকে বেছে নেওয়া হয়।
  • র‍্যান্ডম (Random): কোনো চিন্তাভাবনা নেই! চোখ বন্ধ করে লটারির মতো যেকোনো একটা সার্ভারে ইউজারকে পাঠিয়ে দেওয়া। লাক ভালো হলে ফাস্ট সার্ভার, খারাপ হলে স্লো সার্ভার! 🎲
  • কাস্টম (Custom): যখন উপরের কোনো নিয়মেই মন ভরে না, তখন ইঞ্জিনিয়াররা নিজেদের প্রয়োজন মতো নিয়ম বানিয়ে নেয় (যেমন: শুধু প্রিমিয়াম ইউজাররা ফাস্ট সার্ভারে যাবে)।

On this page