Zookeeper একটি ডিস্ট্রিবিউটেড কোঅর্ডিনেশন সার্ভিস যা বিভিন্ন ডিস্ট্রিবিউটেড সিস্টেমে সিঙ্ক্রোনাইজেশন, কনফিগারেশন ম্যানেজমেন্ট এবং নামস্পেস প্রদান করে। Zookeeper এর Java API ব্যবহারের মাধ্যমে আপনি Zookeeper সার্ভার এবং ক্লায়েন্টের মধ্যে ইন্টারঅ্যাকশন করতে পারেন। Java Zookeeper API-র মাধ্যমে আপনি Zookeeper-এ বিভিন্ন অপারেশন যেমন নোড তৈরি, ডেটা আপডেট, ডেটা রিড, নোড মুছে ফেলা ইত্যাদি পরিচালনা করতে পারেন।
Java Zookeeper API Setup
Java Zookeeper API ব্যবহার করার জন্য প্রথমে আপনাকে Zookeeper এর Java ক্লায়েন্ট লাইব্রেরি ডিপেন্ডেন্সি যুক্ত করতে হবে। সাধারণত, আপনি Maven বা Gradle ব্যবহার করে Zookeeper API কে আপনার প্রকল্পে যুক্ত করতে পারেন।
Maven Dependency:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.7.1</version> <!-- Ensure you are using the correct version -->
</dependency>
Gradle Dependency:
implementation 'org.apache.zookeeper:zookeeper:3.7.1'
এটি আপনার প্রকল্পে Zookeeper এর Java লাইব্রেরি যোগ করবে।
Zookeeper Java API ব্যবহার করার প্রাথমিক পদক্ষেপ
- Zookeeper ক্লায়েন্ট তৈরি করা: Zookeeper Java API-তে ক্লায়েন্ট তৈরি করতে ZooKeeper ক্লাস ব্যবহার করা হয়। এটি Zookeeper সার্ভারের সাথে সংযোগ স্থাপন এবং কমিউনিকেশন পরিচালনা করে।
- Zookeeper এর সাথে সংযোগ স্থাপন: Zookeeper সার্ভারের সাথে সংযোগ স্থাপনের জন্য, ZooKeeper কনস্ট্রাক্টর ব্যবহার করতে হয়। আপনাকে সার্ভারের ঠিকানা এবং ক্লায়েন্ট সেশন টাইমআউট প্রদান করতে হবে।
- Zookeeper Watcher সেট করা: Zookeeper এর Watcher এর মাধ্যমে আপনি নির্দিষ্ট NODES-এর উপর পরিবর্তন পর্যবেক্ষণ করতে পারেন। এই Watcher ক্লাসটি পরিবর্তনের জন্য ইভেন্ট নোটিফিকেশন পাঠাবে।
Java Zookeeper API ব্যবহার করার উদাহরণ
নিচে একটি সাধারণ Java Zookeeper API ব্যবহার করার উদাহরণ দেখানো হলো:
Zookeeper ক্লায়েন্টের তৈরি এবং সংযোগ স্থাপন:
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
public class ZookeeperExample {
public static void main(String[] args) throws Exception {
// Zookeeper সার্ভারের ঠিকানা এবং ক্লায়েন্ট সেশন টাইমআউট
String connectString = "127.0.0.1:2181"; // Zookeeper সার্ভারের আইপি ঠিকানা
int sessionTimeout = 3000; // সেশন টাইমআউট (3 সেকেন্ড)
// Zookeeper ক্লায়েন্ট তৈরি
ZooKeeper zooKeeper = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent event) {
// Watcher ইভেন্ট হ্যান্ডলার
System.out.println("Watcher Event: " + event.getType());
}
});
// Zookeeper সার্ভারের সাথে সংযোগ স্থাপন
System.out.println("Connecting to Zookeeper...");
Thread.sleep(1000); // একটু সময় দিন সংযোগ স্থাপন হতে
System.out.println("Connected to Zookeeper");
// Zookeeper ক্লায়েন্ট ব্যবহার করে আরো অপারেশন করা যাবে
}
}
এখানে ZooKeeper ক্লাসের কনস্ট্রাক্টর দ্বারা একটি ক্লায়েন্ট তৈরি করা হয়েছে। Watcher ইন্টারফেসটি ক্লায়েন্টে সেট করা হয়েছে, যা Zookeeper সার্ভারের উপর নির্দিষ্ট ইভেন্ট ট্র্যাক করবে।
Zookeeper API দিয়ে NODES তৈরি এবং ডেটা রিড / রাইট করা
1. ZNode তৈরি করা:
Zookeeper-এ একটি নতুন ZNode তৈরি করতে create কমান্ড ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো, যেখানে একটি নতুন ZNode /myZNode তৈরি করা হচ্ছে এবং তার মান "Hello Zookeeper" দেওয়া হয়েছে।
zooKeeper.create("/myZNode", "Hello Zookeeper".getBytes(),
ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
System.out.println("ZNode /myZNode created with value: Hello Zookeeper");
2. ZNode থেকে ডেটা পড়া (Get Data):
Zookeeper-এ একটি ZNode থেকে ডেটা পড়তে getData() পদ্ধতি ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে /myZNode থেকে ডেটা পড়া হচ্ছে:
Stat stat = new Stat();
byte[] data = zooKeeper.getData("/myZNode", false, stat);
System.out.println("Data of /myZNode: " + new String(data));
System.out.println("Version of /myZNode: " + stat.getVersion());
3. ZNode এর ডেটা পরিবর্তন (Set Data):
Zookeeper-এ একটি ZNode এর ডেটা পরিবর্তন করতে setData() পদ্ধতি ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে /myZNode এর ডেটা পরিবর্তন করা হচ্ছে:
zooKeeper.setData("/myZNode", "Updated Data".getBytes(), -1);
System.out.println("Data of /myZNode updated to: Updated Data");
4. ZNode মুছে ফেলা (Delete Node):
Zookeeper-এ একটি ZNode মুছে ফেলতে delete পদ্ধতি ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে /myZNode মুছে ফেলা হচ্ছে:
zooKeeper.delete("/myZNode", -1);
System.out.println("ZNode /myZNode deleted");
Zookeeper Watcher ব্যবহার করা
Zookeeper Watcher ইভেন্টগুলির মাধ্যমে পরিবর্তন সম্পর্কে অবহিত হতে সাহায্য করে। নিচে একটি উদাহরণ দেখানো হলো যেখানে ZNode এর ওপর Watcher সেট করা হচ্ছে:
zooKeeper.exists("/myZNode", new Watcher() {
@Override
public void process(WatchedEvent event) {
System.out.println("Watcher event triggered: " + event.getType());
}
});
এখানে /myZNode এর উপর একটি Watcher সেট করা হয়েছে এবং যখনই সেই ZNode পরিবর্তিত হবে, Watcher ক্লায়েন্টকে অবহিত করবে।
সারাংশ
Zookeeper Java API ডিস্ট্রিবিউটেড সিস্টেমে Zookeeper সার্ভারের সাথে ইন্টারঅ্যাকশন করার জন্য একটি শক্তিশালী উপায়। আপনি Java ব্যবহার করে Zookeeper সার্ভারের সাথে সংযোগ স্থাপন, ZNode তৈরি, ডেটা পড়া, ডেটা আপডেট এবং ZNode মুছে ফেলা সহ বিভিন্ন অপারেশন করতে পারেন। Java Zookeeper API এর সাহায্যে আপনি Watcher ব্যবহার করে সিস্টেমের মধ্যে পরিবর্তনগুলির উপর নজর রাখতে পারেন এবং তাৎক্ষণিকভাবে সেগুলি সম্পর্কে অবহিত হতে পারেন।
Read more