Zookeeper-এ Watcher হলো একটি গুরুত্বপূর্ণ উপাদান যা ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে ডেটার পরিবর্তন বা ইভেন্ট ট্র্যাক করতে সাহায্য করে। Watcher মূলত একটি event-driven সিস্টেম তৈরি করে, যেখানে একটি নির্দিষ্ট ZNode বা ডেটার উপর কোনো পরিবর্তন হলে, তা ক্লায়েন্টকে অবহিত করে। Zookeeper-এ One-time Watch এবং Persistent Watch দুটি ধরনের Watch রয়েছে, যেগুলি বিভিন্ন পরিস্থিতিতে ব্যবহার করা হয়।
One-time Watch
One-time Watch হলো একটি টাইপের Watch যা একটি নির্দিষ্ট ইভেন্ট ঘটলে একবারই কার্যকর হয়। একবার ইভেন্টটি ট্রিগার হয়ে গেলে, Watch বন্ধ হয়ে যায় এবং পরবর্তী সময়ে আবার কাজ করে না।
বৈশিষ্ট্য:
- একই ইভেন্টের জন্য একাধিক বার ট্রিগার না হওয়া: One-time Watch শুধুমাত্র প্রথমবার ইভেন্ট ঘটলে কাজ করে। একবার Watch ট্রিগার হলে, এটি আর পুনরায় কার্যকর হয় না।
- ইভেন্ট টাইপ: একাধিক ধরনের ইভেন্টে Watch লাগানো হতে পারে, যেমন NodeCreated, NodeDataChanged, NodeDeleted বা NodeChildrenChanged।
- ক্লায়েন্টে সিস্টেম ইভেন্ট ম্যানেজমেন্ট: ক্লায়েন্ট কেবলমাত্র একটি নির্দিষ্ট ইভেন্ট সম্পর্কে অবহিত হওয়ার পরেই নির্দিষ্ট কার্যকলাপ করতে পারে।
উদাহরণ:
ধরা যাক, আপনি একটি NodeCreated ইভেন্টের জন্য One-time Watch সেট করেছেন। যদি কোনো নতুন ZNode /app/config তৈরি হয়, তাহলে একবারে আপনার ক্লায়েন্ট সেই ইভেন্ট ট্র্যাক করতে পারবে এবং তার পরে Watch স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
zk.getData("/app/config", false, null);
এখানে getData() কমান্ডটি একটি One-time Watch ট্রিগার করবে, এবং একবার এই ZNode এর ডেটা পরিবর্তিত হলে, Watch কার্যকর হবে এবং এরপর আর কাজ করবে না।
Persistent Watch
Persistent Watch হলো এমন একটি টাইপের Watch যা একবার ট্রিগার হওয়ার পরেও বারবার পুনরায় কাজ করতে থাকে যতক্ষণ না এটি ম্যানুয়ালি বন্ধ করা হয়। অর্থাৎ, এটি কোনো পরিবর্তন ঘটে এমনকি পরবর্তীতে নতুন পরিবর্তনগুলির জন্য আবারও ট্রিগার হতে থাকে।
বৈশিষ্ট্য:
- বারবার ট্রিগার হওয়া: Persistent Watch সব সময় নতুন পরিবর্তনগুলি পর্যবেক্ষণ করে এবং যেকোনো পরিবর্তন ঘটলে এটি ক্লায়েন্টকে অবহিত করে। এটি পূর্ববর্তী Watch কে শেষ না করে পুনরায় কাজ করে।
- প্রতিটি পরিবর্তনে একটি নতুন ইভেন্ট: প্রতিটি নতুন পরিবর্তন বা ইভেন্ট (যেমন নোডের ডেটা পরিবর্তন বা নতুন নোড তৈরি) ঘটলে Watch আবার কাজ করবে।
- ডায়নামিক রিয়েল-টাইম মনিটরিং: Persistent Watch ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম মনিটরিং বা সিঙ্ক্রোনাইজেশন পরিচালনা করতে ব্যবহৃত হয়, যেমন কোনও একটি নোডের কনফিগারেশন পরিবর্তন হওয়ার পরপরই সকল ক্লায়েন্টকে তা জানিয়ে দেওয়া।
উদাহরণ:
ধরা যাক, আপনি একটি NodeDataChanged ইভেন্টের জন্য Persistent Watch সেট করেছেন। যদি /app/config ZNode এর ডেটা পরিবর্তন হয়, তবে Watch বারবার ট্রিগার হতে থাকবে যতক্ষণ না এটি ম্যানুয়ালি বন্ধ করা হয়।
zk.exists("/app/config", true); // true means Persistent Watch
এখানে exists() কমান্ডটি একটি Persistent Watch স্থাপন করবে, এবং যদি ZNode /app/config-এ কোনো পরিবর্তন ঘটে, তবে এটি ক্লায়েন্টকে অবহিত করবে। Watchটি সিস্টেমের মধ্যে চলতে থাকবে যতক্ষণ না আপনি এটি বন্ধ না করেন।
One-time Watch এবং Persistent Watch এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | One-time Watch | Persistent Watch |
|---|---|---|
| ট্রিগার | একবার ইভেন্ট ট্রিগার হলে বন্ধ হয়ে যায়। | একাধিকবার ট্রিগার হতে পারে যতক্ষণ না বন্ধ করা হয়। |
| ব্যবহার | শুধুমাত্র একবার পরিবর্তন ট্র্যাক করা। | পরিবর্তন নিয়মিত ট্র্যাক করা এবং ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম মনিটরিং। |
| পারফরম্যান্স | সিস্টেমের ওপর কম পারফরম্যান্স প্রভাব ফেলে। | বেশী পারফরম্যান্স খরচ হতে পারে যদি বেশি Watch থাকে। |
| ক্লায়েন্টে প্রতিক্রিয়া | একবার ইভেন্ট পাওয়ার পর ক্লায়েন্ট কাজ করে। | প্রতিটি পরিবর্তনের জন্য ক্লায়েন্ট অবহিত হয় এবং প্রতিক্রিয়া জানায়। |
কখন One-time এবং Persistent Watch ব্যবহার করবেন?
- One-time Watch সাধারণত এমন পরিস্থিতিতে ব্যবহার করা হয় যেখানে আপনি একটি একক পরিবর্তন বা ইভেন্ট ট্র্যাক করতে চান এবং তারপর আর কোন ধরনের পরিবর্তন সম্পর্কে অবহিত হতে চান না।
- উদাহরণ: আপনি শুধুমাত্র একটি নতুন নোড তৈরি হওয়ার সময় অবহিত হতে চান।
- Persistent Watch তখন ব্যবহার করা হয় যখন আপনি ডিস্ট্রিবিউটেড সিস্টেমে রিয়েল-টাইম পরিবর্তন ট্র্যাক করতে চান এবং চান যে Watchটি বারবার ট্রিগার হয়ে চলুক যতক্ষণ না আপনি এটি বন্ধ করেন।
- উদাহরণ: আপনি একটি ডিস্ট্রিবিউটেড সিস্টেমের কনফিগারেশন পরিবর্তনগুলি ট্র্যাক করতে চান যাতে ক্লায়েন্টদের সঠিক সময়ে ডেটা জানানো যায়।
সারাংশ
Zookeeper-এ One-time Watch এবং Persistent Watch দুটি গুরুত্বপূর্ণ Watch টাইপ, যেগুলি বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়। One-time Watch শুধুমাত্র একটি একক ইভেন্ট বা পরিবর্তনের জন্য কার্যকর হয়, যেখানে Persistent Watch একাধিক পরিবর্তন বা ইভেন্টের জন্য কাজ করে এবং ক্লায়েন্টদেরকে অবহিত করতে থাকে। Zookeeper-এর Watch ব্যবহার করে, আপনি ডিস্ট্রিবিউটেড সিস্টেমে ডেটার পরিবর্তনগুলি রিয়েল-টাইমে ট্র্যাক করতে এবং সিঙ্ক্রোনাইজ করতে পারবেন।
Read more