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

মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস রেজিস্ট্রি (Eureka Server) তৈরি

ইন্ট্রোডাকশন: আজকালকার সফটওয়্যার ডেভেলপমেন্টে যখন অনেকগুলো ছোট ছোট সার্ভিস বা মাইক্রোসার্ভিস একসাথে কাজ করে, তখন তারা একে অপরকে চিনবে কীভাবে? এই সমস্যা সমাধানের জন্যই প্রয়োজন একটি 'সার্ভিস রেজিস্ট্রি'। সহজ কথায়, এটি একটি ফোনের কন্টাক্ট লিস্টের মতো, যেখানে সব সার্ভিসের নাম এবং ঠিকানা (IP address ও Port) জমা থাকে। আজকের আলোচনায় আমরা শিখব কীভাবে Netflix Eureka Server ব্যবহার করে একটি সার্ভিস রেজিস্ট্রি তৈরি করতে হয় এবং কীভাবে অন্যান্য সার্ভিসগুলো এর সাথে যুক্ত হয়।

১. সার্ভিস রেজিস্ট্রি কী এবং কেন প্রয়োজন?

রেফারেন্স: [00:00]

যখন আপনার সিস্টেমে ১০-২০টি বা তার বেশি মাইক্রোসার্ভিস থাকে, তখন একটি সার্ভিস অন্যটির সাথে কানেক্ট করতে চাইলে তার নির্দিষ্ট ঠিকানা জানা কঠিন হয়ে পড়ে। এখানেই আসে Service Discovery বা সার্ভিস রেজিস্ট্রির ধারণা।

  • সার্ভিস ডিসকভারি: এটি একটি কেন্দ্রীয় সার্ভার যেখানে সব মাইক্রোসার্ভিস নিজে থেকে এসে নাম লিখিয়ে (Register) যায়।

  • ইউরেকা সার্ভার (Eureka Server): এটি নেটফ্লিক্সের তৈরি একটি ওপেন সোর্স টুল যা মাইক্রোসার্ভিস ম্যানেজ করতে সাহায্য করে।

সহজ কথায় ব্যাখ্যা: ধরুন একটি বিয়ে বাড়িতে অনেকজন বাবুর্চি কাজ করছে। একজন জানে মাংস রান্না করতে, অন্যজন পোলাও। এখন যদি মাংসের বাবুর্চির লবণের দরকার হয়, সে সরাসরি লবণের কাছে না গিয়ে 'ম্যানেজার'কে (সার্ভিস রেজিস্ট্রি) জিজ্ঞেস করে লবণ কার কাছে আছে। ম্যানেজার তাকে বলে দেয় লবণ কার কাছে এবং কোথায় পাওয়া যাবে।


২. ইউরেকা সার্ভার প্রজেক্ট তৈরি করা

রেফারেন্স: [00:45]

ইউরেকা সার্ভার তৈরি করা খুবই সহজ। এর জন্য আমাদের Spring Initializr (start.spring.io) ব্যবহার করতে হবে।

  • Project: Maven

  • Language: Java

  • Dependencies: 1. Spring Web: ওয়েব অ্যাপ্লিকেশন চালানোর জন্য। 2. Eureka Server: এটিকে একটি সার্ভিস রেজিস্ট্রি হিসেবে কাজ করানোর জন্য।

প্রজেক্টটি ডাউনলোড করে আপনার পছন্দের IDE (যেমন IntelliJ IDEA) তে ওপেন করুন।


৩. কোডিং এবং কনফিগারেশন

রেফারেন্স: [02:45]

প্রজেক্ট সেটআপ হওয়ার পর আমাদের দুটি জায়গায় পরিবর্তন করতে হবে: মেইন ক্লাস এবং প্রোপার্টিজ ফাইল।

ধাপ ১: মেইন ক্লাসে অ্যানোটেশন যোগ করা আমাদের জাভা মেইন ক্লাসের উপরে একটি বিশেষ কমান্ড বা 'অ্যানোটেশন' দিতে হবে যাতে স্প্রিং বুঝতে পারে এটি একটি ইউরেকা সার্ভার।

Java

package com.telusko.serviceregistry;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer // এই কোডটি প্রজেক্টকে ইউরেকা সার্ভার হিসেবে ঘোষণা করে
public class ServiceRegistryApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceRegistryApplication.class, args);
    }
} 
  • ব্যাখ্যা: @EnableEurekaServer লিখলেই আপনার সাধারণ প্রজেক্টটি একটি শক্তিশালী সার্ভিস রেজিস্ট্রিতে পরিণত হয়।

ধাপ ২: application.properties ফাইল সেটআপ ইউরেকা সার্ভার নিজেই একটি সার্ভিস, কিন্তু সে নিজেকে নিজের লিস্টে রাখতে চায় না। তাই নিচের কনফিগারেশনগুলো দিতে হয়:

Properties

spring.application.name=service-registry
server.port=8761

# ইউরেকা সার্ভার নিজেকে ক্লায়েন্ট হিসেবে রেজিস্টার করবে না
eureka.client.register-with-eureka=false
# অন্য কোনো সার্ভার থেকে ডেটা ফেচ বা নিয়ে আসবে না
eureka.client.fetch-registry=false 
  • সহজ ব্যাখ্যা: 8761 হলো ইউরেকা সার্ভারের ডিফল্ট পোর্ট (ঠিকানা)। আমরা তাকে বলছি, "তুমি তো নিজেই বস, তোমার নিজের নাম নিজের লিস্টে তোলার দরকার নেই (register-with-eureka=false)"।

৪. ক্লায়েন্ট সার্ভিস কানেক্ট করা (Question Service)

রেফারেন্স: [06:04]

এখন আমাদের আসল মাইক্রোসার্ভিস (যেমন: Question Service) কে এই রেজিস্ট্রির সাথে যুক্ত করতে হবে।

  • প্রথমে ক্লায়েন্ট সার্ভিসের pom.xml ফাইলে Eureka Discovery Client ডিপেন্ডেন্সি যোগ করতে হবে।

  • এরপর তার application.properties ফাইলে নাম দিতে হবে।

Properties

spring.application.name=question-service
server.port=8080 

এখন যদি আপনি ইউরেকা সার্ভারটি ব্রাউজারে localhost:8761 লিখে ওপেন করেন, আপনি দেখতে পাবেন question-service সেখানে সুন্দরভাবে লিস্টেড হয়ে গেছে! [07:50]


কঠিন শব্দের সহজ ব্যাখ্যা:

১. Dependency (ডিপেন্ডেন্সি): এটি এক ধরণের সাহায্যকারী ফাইল বা লাইব্রেরি যা আপনার প্রজেক্টে নতুন কোনো ক্ষমতা (যেমন: ডেটাবেস কানেকশন বা সার্ভার তৈরি) যোগ করে। ২. Annotation (অ্যানোটেশন): জাভাতে @ দিয়ে শুরু হওয়া শব্দগুলো, যা কম্পাইলারকে বিশেষ নির্দেশনা দেয়। যেমন @EnableEurekaServer মানে "ইউরেকা চালু করো"। ৩. Instance (ইন্সট্যান্স): যখন আপনি একই সার্ভিসের একাধিক কপি বিভিন্ন পোর্টে চালান, প্রতিটি কপিকে এক একটি ইন্সট্যান্স বলা হয়। [08:13]


এনালাইসিস এবং বাস্তব জীবনের উপলব্ধি

সারাংশ ও চিন্তাধারা: কন্টেন্ট ক্রিয়েটর এখানে বুঝিয়েছেন যে মাইক্রোসার্ভিস আর্কিটেকচারে সরাসরি হার্ডকোড করা IP address ব্যবহার করা বিপজ্জনক। কারণ সার্ভার রিস্টার্ট হলে বা ক্লাউডে থাকলে IP বদলে যেতে পারে। ইউরেকা ব্যবহার করলে আমরা শুধু সার্ভিসের 'নাম' (যেমন: question-service) দিয়ে তাকে খুঁজে পেতে পারি।

বাস্তবতা ও পরামর্শ: বর্তমানে বড় বড় কোম্পানি যেমন নেটফ্লিক্স, অ্যামাজন এই কনসেপ্ট ব্যবহার করে।

  • বিকল্প: আপনি ইউরেকার বদলে Consul বা Zookeeper ব্যবহার করতে পারেন, তবে স্প্রিং বুটের সাথে ইউরেকা ব্যবহার করা সবচেয়ে সহজ।

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

লিঙ্ক: https://www.youtube.com/watch?v=KvGugXhgbr8

[

Creating a Service Registry | Microservice

Telusko · 64K views

](http://www.youtube.com/watch?v=KvGugXhgbr8)

মন্তব্যসমূহ

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

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

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

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

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

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

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