Watchers এবং Event Handling এর জন্য Java API ব্যবহার

Zookeeper API ব্যবহার করে Programming - জুকিপার (Zookeeper) - Big Data and Analytics

277

Zookeeper এর মধ্যে Watchers এবং Event Handling একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এটি ক্লায়েন্টদের ZNode-এ পরিবর্তন ঘটলে অবহিত করতে সাহায্য করে। Zookeeper ক্লায়েন্টরা Watchers ব্যবহার করে নির্দিষ্ট ZNode-এ কোনো পরিবর্তন (যেমন ডেটা পরিবর্তন, ZNode তৈরি বা মুছে ফেলা) ঘটলে অবহিত হতে পারে। এই Watchers মূলত Event Handling এর মাধ্যমে কাজ করে, যা অ্যাসিঙ্ক্রোনাসভাবে কার্যকরী হয়।

Java API ব্যবহার করে Zookeeper এ Watchers এবং Event Handling ব্যবহারের প্রক্রিয়া নিচে ব্যাখ্যা করা হয়েছে।


1. Watchers কী?

Zookeeper-এ Watcher হল একটি অবজারভার যা একটি নির্দিষ্ট ZNode বা একটি নির্দিষ্ট পাথের ওপর নজর রাখে। যখনই ZNode বা তার পাথের মধ্যে কোনো পরিবর্তন ঘটে, Watcher সেই পরিবর্তনগুলির জন্য সিগন্যাল দেয় এবং একটি ইভেন্ট ট্রিগার করে। এই ইভেন্ট ট্রিগার হলে, আপনি সেই পরিবর্তনগুলির উপর ভিত্তি করে কিছু অ্যাকশন গ্রহণ করতে পারেন।


2. Watchers এবং Event Handling এর Java API ব্যবহার

Zookeeper এর Java API তে Watchers এবং Event Handling ব্যবহারের জন্য একটি Watcher ইন্টারফেস ব্যবহৃত হয়। Watcher ইন্টারফেসটি ডিফাইন করে কিভাবে একটি ইভেন্টকে হ্যান্ডেল করতে হবে, এবং এই ইভেন্টটি তখন ক্লায়েন্ট অ্যাপ্লিকেশন দ্বারা গ্রহণ করা হয়।

Watcher Interface:

import org.apache.zookeeper.*;

public class MyWatcher implements Watcher {
    @Override
    public void process(WatchedEvent event) {
        // ইভেন্ট প্রসেসিং এর জন্য কোড
        System.out.println("Received event: " + event.getType());
    }
}

এখানে, process() মেথডটি WatchedEvent গ্রহণ করে, যা ZNode এর ওপর ঘটে যাওয়া কোনো পরিবর্তন বা ইভেন্ট সম্পর্কিত তথ্য ধারণ করে।


3. Watcher সেট করা

Zookeeper Java API তে Watcher সেট করা বেশ সরল। getData() বা exists() মেথডগুলো ব্যবহার করে আপনি একটি Watcher সেট করতে পারেন, যা ZNode-এ কোনো পরিবর্তন ঘটলে ট্রিগার হবে।

Watcher সেট করার উদাহরণ:

import org.apache.zookeeper.*;

public class ZookeeperWatcherExample {
    public static void main(String[] args) throws Exception {
        // Zookeeper কনফিগারেশন এবং ক্লায়েন্ট ইনস্ট্যান্স তৈরি
        ZooKeeper zooKeeper = new ZooKeeper("localhost:2181", 3000, new MyWatcher());

        String path = "/myZNode";

        // Watcher সেট করা হচ্ছে
        zooKeeper.getData(path, true, null);

        // Zookeeper এ কোনো পরিবর্তন ঘটলে ইভেন্ট ট্রিগার হবে
        Thread.sleep(5000);  // মূল থ্রেড বন্ধ না হয়ে থাকলে ইভেন্টের জন্য অপেক্ষা করবে
    }
}

ব্যাখ্যা:

  • getData(path, watch, stat): ZNode-এ ডেটা পড়ার জন্য ব্যবহৃত হয় এবং এটি একটি Watcher watch প্যারামিটার গ্রহণ করে। এই Watcher ZNode-এ কোনো পরিবর্তন হলে process() মেথডে সিগন্যাল পাঠাবে।
  • zooKeeper.getData("/myZNode", true, null): এটি Watcher সেট করার একটি উদাহরণ, যেখানে true মানে হলো ZNode-এ কোনো পরিবর্তন ঘটলে Watcher সিগন্যাল করবে।

4. Watcher ইভেন্ট হ্যান্ডলিং

Zookeeper-এ Watcher ইভেন্ট হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ, কারণ যখন কোনো পরিবর্তন ঘটে, তখন ক্লায়েন্টকে সেই পরিবর্তনের উপর ভিত্তি করে কাজ করতে হতে পারে। WatchedEvent ক্লাসটি Watcher দ্বারা পাঠানো ইভেন্টগুলোর বিস্তারিত তথ্য ধারণ করে, যেমন ইভেন্টের ধরণ, ZNode পাথ, ইত্যাদি।

WatchedEvent উদাহরণ:

import org.apache.zookeeper.*;

public class MyWatcher implements Watcher {
    @Override
    public void process(WatchedEvent event) {
        Event.KeeperState state = event.getState();
        Event.EventType type = event.getType();
        String path = event.getPath();

        // ইভেন্টের ধরন এবং পাথ প্রিন্ট করা
        System.out.println("State: " + state);
        System.out.println("Event Type: " + type);
        System.out.println("Path: " + path);

        // যদি ZNode এর ডেটা পরিবর্তিত হয়
        if (type == Event.EventType.NodeDataChanged) {
            System.out.println("Data of the ZNode has been changed!");
        }
    }
}

ব্যাখ্যা:

  • event.getState(): ইভেন্টের বর্তমান অবস্থাকে বর্ণনা করে, যেমন SyncConnected, Disconnected, ইত্যাদি।
  • event.getType(): ইভেন্টের ধরন, যেমন NodeCreated, NodeDeleted, NodeDataChanged, ইত্যাদি।
  • event.getPath(): যেই ZNode এর ওপর ইভেন্টটি ঘটেছে তার পাথ।

5. একাধিক Watcher ব্যবহারের উদাহরণ

Zookeeper-এ একাধিক Watcher তৈরি করা সম্ভব এবং আপনি একাধিক ZNode-এ Watchers যোগ করতে পারেন। আপনি একটি Watcher একাধিক ZNode তে ব্যবহার করতে পারেন অথবা একাধিক Watcher তৈরি করে বিভিন্ন ZNode তে সেট করতে পারেন।

একাধিক Watcher উদাহরণ:

import org.apache.zookeeper.*;

public class MultiWatcherExample {
    public static void main(String[] args) throws Exception {
        ZooKeeper zooKeeper = new ZooKeeper("localhost:2181", 3000, new MyWatcher());

        // একাধিক ZNode তে Watcher সেট করা
        zooKeeper.getData("/ZNode1", true, null);
        zooKeeper.getData("/ZNode2", true, null);
        zooKeeper.getData("/ZNode3", true, null);

        // কিছু সময়ের জন্য থ্রেড থামানো হচ্ছে
        Thread.sleep(5000);
    }
}

ব্যাখ্যা:

এখানে, তিনটি আলাদা ZNode তে Watcher সেট করা হয়েছে। Zookeeper সার্ভারে কোনো পরিবর্তন ঘটলে, Watcher-রা তাদের নিজ নিজ process() মেথডে সিগন্যাল পাবে এবং ইভেন্টটি প্রসেস করবে।


সারাংশ

Zookeeper-এ Watchers এবং Event Handling ক্লায়েন্টদেরকে ZNode তে ঘটে যাওয়া পরিবর্তনগুলির জন্য অবহিত করতে সাহায্য করে। Java API তে Watcher ইন্টারফেস ব্যবহার করে, আপনি Zookeeper ক্লায়েন্টকে নির্দিষ্ট ZNode বা পাথের উপর নজর রাখতে এবং পরিবর্তন ঘটলে ইভেন্ট হ্যান্ডলিং করতে সক্ষম হবেন। Watcher-এর মাধ্যমে আপনি ডিস্ট্রিবিউটেড সিস্টেমে সিঙ্ক্রোনাইজেশন এবং কনফিগারেশন পরিবর্তনগুলির উপর নজর রাখতে পারেন এবং এই পরিবর্তনগুলির উপর ভিত্তি করে দ্রুত প্রতিক্রিয়া জানাতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...