Introduction
হ্যালো! আজ আমরা জানবো মাইক্রোসার্ভিস আর্কিটেকচারে "লোড ব্যালেন্সিং" (Load Balancing) কী এবং এটি কীভাবে কাজ করে। সহজ কথায় বলতে গেলে, যখন কোনো ওয়েবসাইটে বা অ্যাপে অনেক বেশি মানুষ একসাথে ঢুকে পড়ে, তখন সেই চাপ সামলানোর জন্য আমরা অনেকগুলো সার্ভার ব্যবহার করি। এই চাপের ভাগাভাগিটাকেই বলা হয় লোড ব্যালেন্সিং। ভিডিওটিতে দেখানো হয়েছে কীভাবে স্প্রিং বুট (Spring Boot) ব্যবহার করে আমরা খুব সহজেই এটি সেটআপ করতে পারি।
১. লোড ব্যালেন্সিং কী?
প্রথমে আমরা মূল ধারণাটি বুঝে নিই। নিচের ভিডিও রেফারেন্সটি এই আলোচনার ভিত্তি:
ভিডিও রেফারেন্স: Load Balancing in Microservices [00:00]
বিস্তারিত আলোচনা: কল্পনা করুন একটি জনপ্রিয় বিরিয়ানির দোকান। সেখানে যদি একজন মাত্র লোক অর্ডার নেয়, তবে অনেক ভিড় জমে যাবে। কিন্তু যদি সেখানে তিনজন লোক অর্ডার নেয়, তবে কাস্টমাররা ভাগ হয়ে যাবে এবং কাজ দ্রুত হবে। একেই বলে Horizontal Scaling (সার্ভারের সংখ্যা বাড়ানো)।
- আমার চিন্তা: লোড ব্যালেন্সার হলো একজন ট্রাফিক পুলিশের মতো, যে ঠিক করে দেয় কোন রিকোয়েস্ট কোন সার্ভারে যাবে যাতে কোনো একটি সার্ভারের ওপর বেশি চাপ না পড়ে।
সহজ ভাষায় কঠিন শব্দ:
-
Instance (ইনস্ট্যান্স): একটি অ্যাপ্লিকেশনের হুবহু কপি। যেমন আপনার ফোনে একই অ্যাপের দুটি ক্লোন থাকা। [00:05]
-
Horizontal Scaling: সার্ভারের ক্ষমতা না বাড়িয়ে সার্ভারের সংখ্যা বাড়ানো।
২. মাইক্রোসার্ভিসে লোড ব্যালেন্সিং এর প্রয়োগ
মাইক্রোসার্ভিসের ক্ষেত্রে একটি সার্ভিস যখন অন্য একটি সার্ভিসকে কল করে, তখন সেখানে লোড ব্যালেন্সিং এর প্রয়োজন হয়।
রেফারেন্স: How it works in Microservices [00:40]
বিস্তারিত আলোচনা: ভিডিওতে 'Quiz Service' এবং 'Question Service' এর উদাহরণ দেয়া হয়েছে। ধরা যাক, 'Question Service' এ অনেক বেশি চাপ। তাই আমরা এর দুটি কপি বা ইনস্ট্যান্স চালাচ্ছি। এখন কুইজ সার্ভিস যখন প্রশ্ন চাইবে, তখন সে কোন কপি থেকে নিবে? এখানেই কাজ করে Feign Client। এটি স্বয়ংক্রিয়ভাবে দেখে নেয় কোন কপিটি ফ্রি আছে এবং সেখানে রিকোয়েস্ট পাঠায়। [01:52]
- আমার চিন্তা: আগে এই কাজগুলো ম্যানুয়ালি কনফিগার করতে হতো, কিন্তু এখনকার আধুনিক লাইব্রেরিগুলো (যেমন: Spring Cloud LoadBalancer) আমাদের কাজ অনেক সহজ করে দিয়েছে।
৩. হাতে কলমে পরীক্ষা (Coding & Port Checking)
আমরা কীভাবে বুঝবো যে রিকোয়েস্ট আলাদা আলাদা সার্ভারে যাচ্ছে? এটি বোঝার জন্য ভিডিওতে পোর্ট নম্বর (Port Number) প্রিন্ট করে দেখানো হয়েছে।
কোডিং রেফারেন্স: Implementation Details [02:55]
কোড স্নিপেট (Java/Spring Boot):
Java
@Autowired
Environment environment; // স্প্রিং ফ্রেমওয়ার্কের এনভায়রনমেন্ট ইন্টারফেস
@GetMapping("getQuestions")
public String getQuestions() {
// বর্তমানে কোন পোর্টে এই সার্ভিসটি চলছে তা প্রিন্ট করবে
String port = environment.getProperty("local.server.port");
System.out.println("Request handled by port: " + port);
return "Returning questions from port: " + port;
}
ব্যাখ্যা: এই কোডটি ব্যবহার করে আমরা কনসোলে দেখতে পারবো রিকোয়েস্টটি কি ৮০৮০ পোর্টে গেল নাকি ৮০৮১ পোর্টে। Environment অবজেক্টটি আমাদের সার্ভারের বর্তমান সেটিংস বা প্রপার্টি জানতে সাহায্য করে। [03:17]
৪. ফলাফল বিশ্লেষণ
যখন আপনি বারবার রিকোয়েস্ট পাঠাবেন, তখন দেখবেন কখনো উত্তর আসছে ৮০৮০ পোর্ট থেকে, আবার কখনো ৮০৮১ থেকে। [04:46]
সহজ ভাষায় কঠিন শব্দ:
- Port (পোর্ট): একটি কম্পিউটারের ভেতরে আলাদা আলাদা সফটওয়্যার বা সার্ভিসের জন্য নির্দিষ্ট 'দরজা'। যেমন ৮০৮০ একটি দরজা, ৮০৮১ অন্য একটি।
আমার বিশ্লেষণ ও শেষ কথা
বাস্তবতা ও সম্ভাবনা: ভিডিওতে যা দেখানো হয়েছে তাকে বলা হয় Client-side Load Balancing। অর্থাৎ যে রিকোয়েস্ট পাঠাচ্ছে (কুইজ সার্ভিস), সে নিজেই জানে তার সামনে কয়টি অপশন আছে এবং সে নিজেই বেছে নিচ্ছে।
-
কেন এটি ভালো? এটি সিস্টেমকে 'Fault Tolerant' করে তোলে। অর্থাৎ একটি সার্ভার নষ্ট হয়ে গেলেও অন্যটি দিয়ে কাজ চালানো যায়।
-
বিকল্প: আপনি চাইলে Netflix Ribbon ব্যবহার করতে পারতেন (যদিও এটি এখন পুরনো হয়ে গেছে) অথবা NGINX এর মতো এক্সটারনাল লোড ব্যালেন্সার ব্যবহার করতে পারেন। তবে ছোট বা মাঝারি প্রজেক্টের জন্য স্প্রিং বুটের এই ডিফল্ট পদ্ধতিটিই সেরা।
পরামর্শ: আপনি যখন বড় কোনো অ্যাপ্লিকেশন বানাবেন, সবসময় অন্তত দুটি ইনস্ট্যান্স চালানোর চেষ্টা করবেন। এতে আপনার সার্ভিস কখনো ডাউন হবে না এবং ইউজাররা দ্রুত সার্ভিস পাবে। ভিডিওতে দেখানো Feign Client এবং Eureka এর কম্বিনেশন বর্তমানে মাইক্রোসার্ভিস জগতের সবচেয়ে জনপ্রিয় এবং সহজ সমাধান। [05:34]
[
Load Balancing | Microservice
Telusko · 66K views
](http://www.youtube.com/watch?v=y0RLt73vyX8)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d