Zookeeper-এ ZNode (Zookeeper Node) হলো একটি ডেটা স্ট্রাকচার যা Zookeeper সিস্টেমের মধ্যে ডেটা সংরক্ষণ এবং পরিচালনা করে। প্রতিটি ZNode একটি ডিরেক্টরি বা ফাইল সিস্টেমের মতো আচরণ করে, যেখানে আপনি ডেটা সংরক্ষণ করতে পারেন এবং অন্য নোডগুলির সাথে সিঙ্ক্রোনাইজ করতে পারেন। ZNodes দুটি ধরনের হতে পারে: Ephemeral এবং Persistent। ZNode গুলোর মধ্যে ডেটা পড়া এবং লেখা Zookeeper-এ একটি সাধারণ কার্যকলাপ, যা ডিস্ট্রিবিউটেড সিস্টেমে ডেটা শেয়ার এবং সিঙ্ক্রোনাইজ করতে সহায়ক।
ZNode Data Read এবং Write করার প্রক্রিয়া
Zookeeper-এ ZNode গুলোর মধ্যে ডেটা পাঠানো এবং লেখা খুবই সরল, তবে এটি কিছু গুরুত্বপূর্ণ প্রক্রিয়া অনুসরণ করে। এখানে বিস্তারিতভাবে ZNode-এ ডেটা রিড এবং রাইট করার পদ্ধতি ব্যাখ্যা করা হয়েছে।
1. ZNode Data Write করা
Zookeeper-এ ZNode-এ ডেটা লিখতে setData() পদ্ধতি ব্যবহার করা হয়। এই পদ্ধতি ব্যবহার করে আপনি একটি নির্দিষ্ট ZNode-এ ডেটা আপডেট বা লিখতে পারেন। Zookeeper একটি ZNode-এ ডেটা লেখা হলে, এটি একটি নতুন সংস্করণ তৈরি করে এবং সেই সংস্করণটি নতুন ডেটা সহ সংরক্ষিত হয়।
উদাহরণ:
// Zookeeper সার্ভার থেকে ZNode এর ডেটা সেট করার উদাহরণ
String path = "/myZNode"; // ZNode এর পাথ
byte[] data = "Hello, Zookeeper!".getBytes(); // নতুন ডেটা
// ZNode এর ডেটা আপডেট করুন
zooKeeper.setData(path, data, -1); // -1 বলে যে কোন ভার্সন ব্যবহৃত হবে না
ব্যাখ্যা:
setData(path, data, version): এটি একটি ZNode-এর ডেটা আপডেট করতে ব্যবহৃত হয়।path: ZNode এর পাথ।data: নতুন ডেটা যা আপনি ZNode-এ লিখতে চান।version: যদি আপনি একটি নির্দিষ্ট সংস্করণে ডেটা আপডেট করতে চান, তাহলে এটি ব্যবহার করতে হবে। যদি-1দেয়া হয়, তবে Zookeeper সর্বশেষ সংস্করণে ডেটা আপডেট করবে।
2. ZNode Data Read করা
Zookeeper-এ ZNode-এ ডেটা পড়তে getData() পদ্ধতি ব্যবহার করা হয়। এই পদ্ধতি ZNode-এর ডেটা পড়তে এবং সেই ডেটা পুনরুদ্ধার করতে সাহায্য করে। getData() পদ্ধতির মাধ্যমে আপনি ZNode-এ সংরক্ষিত ডেটা এবং এর স্ট্যাটাস দেখতে পারেন।
উদাহরণ:
// Zookeeper সার্ভার থেকে ZNode এর ডেটা পড়ার উদাহরণ
String path = "/myZNode"; // ZNode এর পাথ
// ZNode এর ডেটা পড়ুন
Stat stat = new Stat();
byte[] data = zooKeeper.getData(path, false, stat); // false মানে Watch লাগানো হবে না
// ডেটা আউটপুট করুন
System.out.println("Data from ZNode: " + new String(data));
System.out.println("Version: " + stat.getVersion());
ব্যাখ্যা:
getData(path, watch, stat): এটি ZNode থেকে ডেটা পড়তে ব্যবহৃত হয়।path: ZNode-এর পাথ।watch: যদিtrueথাকে, তাহলে একটি Watch চালু হবে, যা ZNode-এ কোনো পরিবর্তন হলে ক্লায়েন্টকে অবহিত করবে।stat: ZNode-এর মেটাডেটা, যেমন সংস্করণ, তৈরি সময়, ইত্যাদি ফেরত দেয়।
3. ZNode Data Read এবং Write এর মধ্যে পার্থক্য
- Write Operation: Zookeeper-এ ZNode-এ ডেটা লিখতে গেলে একটি নতুন সংস্করণ তৈরি হয়, এবং আপনি কখনোই পুরনো ডেটা দেখতে পাবেন না। যদি আপনি একই ZNode-এ বারবার ডেটা লিখতে চান, তবে প্রতিবার একটি নতুন সংস্করণ তৈরি হবে।
- Read Operation: ZNode থেকে ডেটা পড়ার সময়, আপনি যে সংস্করণটি পড়তে চান তা নির্বাচন করতে পারেন (যদি আপনি একটি নির্দিষ্ট সংস্করণ চয়ন করেন)। যদি
watchব্যবহার করেন, তবে ZNode-এ কোনো পরিবর্তন হলে আপনার অ্যাপ্লিকেশন অবহিত হবে।
ZNode Types: Ephemeral এবং Persistent
Zookeeper-এ দুই ধরনের ZNode রয়েছে: Persistent এবং Ephemeral।
- Persistent ZNode: এই ধরনের ZNode-এ ডেটা স্থায়ীভাবে সংরক্ষণ করা হয়। যখন ZNode তৈরি করা হয়, তখন এটি যতক্ষণ পর্যন্ত ম্যানুয়ালি মুছে না ফেলা হয়, ততক্ষণ পর্যন্ত বিদ্যমান থাকে।
- Ephemeral ZNode: এই ধরনের ZNode শুধুমাত্র ক্লায়েন্টের সংযোগ স্থিতিশীল থাকা পর্যন্ত বিদ্যমান থাকে। যখন ক্লায়েন্ট সংযোগ ছেড়ে দেয়, তখন ZNode নিজে নিজে মুছে যায়।
সারাংশ
Zookeeper-এ ZNode এর মাধ্যমে ডেটা রিড এবং রাইট করার প্রক্রিয়া অত্যন্ত সরল এবং কার্যকর। setData() পদ্ধতির মাধ্যমে ZNode-এ ডেটা লেখা হয় এবং getData() পদ্ধতির মাধ্যমে ডেটা পড়া হয়। এছাড়া Zookeeper-এ ZNode গুলির দুটি প্রধান ধরন — Persistent এবং Ephemeral — রয়েছে, যা বিভিন্ন পরিস্থিতিতে ব্যবহৃত হতে পারে। Zookeeper-এর ZNode-এ ডেটা রিড এবং রাইট করার এই কার্যকলাপ ডিস্ট্রিবিউটেড সিস্টেমের ডেটা সিঙ্ক্রোনাইজেশন এবং ব্যবস্থাপনা নিশ্চিত করতে সাহায্য করে।
Read more