সরাসরি প্রধান সামগ্রীতে চলে যান

মাইক্রোসার্ভিসে লোড ব্যালেন্সিং এর সহজ পাঠ


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)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...