Pub/Sub (Publish/Subscribe) একটি মেসেজিং প্যাটার্ন যা রেডিসের মতো ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহৃত হয়। এটি রিয়েল-টাইম যোগাযোগ ব্যবস্থা তৈরি করার জন্য ব্যবহৃত হয়, যেখানে এক বা একাধিক পাবলিশার মেসেজ পাঠায় এবং এক বা একাধিক সাবস্ক্রাইবার সেই মেসেজ গ্রহণ করে। রেডিসের Pub/Sub মডেলটি এই প্যাটার্ন বাস্তবায়িত করে, যেখানে মেসেজগুলো চ্যানেল (channel) ভিত্তিক আদান প্রদান করা হয়।
Pub/Sub কী?
Pub/Sub হল একটি মেসেজিং মডেল যেখানে:
- Publisher (পাবলিশার): এটি মেসেজ পাঠায় একটি নির্দিষ্ট চ্যানেলে।
- Subscriber (সাবস্ক্রাইবার): এটি চ্যানেলে সাবস্ক্রাইব করে এবং সেই চ্যানেল থেকে মেসেজ গ্রহণ করে।
- Channel (চ্যানেল): এটি একটি ভার্চুয়াল লাইন বা পথ, যার মাধ্যমে মেসেজগুলি পাঠানো এবং গ্রহণ করা হয়।
এটি এমনভাবে কাজ করে যে, সাবস্ক্রাইবারদের মেসেজ পাঠানোর সময় পাবলিশারদের কোনও প্রকার কেয়ার নেওয়ার প্রয়োজন হয় না এবং পাবলিশাররা জানে না কে বা কতজন সাবস্ক্রাইব করেছে।
Pub/Sub কিভাবে কাজ করে?
রেডিসে Pub/Sub এর মাধ্যমে যোগাযোগ তিনটি প্রধান কাজের মধ্যে বিভক্ত:
- Publish (পাবলিশ): পাবলিশার একটি চ্যানেলে মেসেজ পাঠায়। এটি একটি বিশেষ চ্যানেল বা নেমস্পেস হতে পারে, যা নির্দিষ্ট ধরনের মেসেজের জন্য ব্যবহৃত হয়।
- Subscribe (সাবস্ক্রাইব): সাবস্ক্রাইবার একটি বা একাধিক চ্যানেলে সাবস্ক্রাইব করে, যার ফলে তারা সেই চ্যানেল থেকে মেসেজ গ্রহণ করতে সক্ষম হয়।
- Unsubscribe (আনসাবস্ক্রাইব): সাবস্ক্রাইবার কোনো চ্যানেল থেকে আনসাবস্ক্রাইব করলে, তারা আর সেই চ্যানেল থেকে মেসেজ গ্রহণ করবে না।
Pub/Sub কমান্ড
রেডিসের Pub/Sub সিস্টেমে কিছু গুরুত্বপূর্ণ কমান্ড রয়েছে:
১. SUBSCRIBE কমান্ড
এটি একটি বা একাধিক চ্যানেলে সাবস্ক্রাইব করতে ব্যবহৃত হয়। যখন আপনি কোনো চ্যানেলে সাবস্ক্রাইব করেন, তখন রেডিস ওই চ্যানেলে পাঠানো মেসেজগুলো পাঠাবে।
SUBSCRIBE channel_name # একটি চ্যানেলে সাবস্ক্রাইব
এখানে channel_name হল আপনার সাবস্ক্রাইব করা চ্যানেলের নাম। সাবস্ক্রাইব করার পর, যদি কোনো পাবলিশার ওই চ্যানেলে মেসেজ পাঠায়, সাবস্ক্রাইবার সেই মেসেজ পাবে।
২. PUBLISH কমান্ড
পাবলিশাররা একটি নির্দিষ্ট চ্যানেলে মেসেজ পাঠানোর জন্য PUBLISH কমান্ড ব্যবহার করে:
PUBLISH channel_name "Your message" # একটি চ্যানেলে মেসেজ পাঠানো
এই কমান্ডটি চ্যানেলটি নির্ধারণ করে এবং মেসেজটি পাঠায়। সব সাবস্ক্রাইবার যাদের ওই চ্যানেলে সাবস্ক্রিপশন আছে, তারা মেসেজটি পাবে।
৩. UNSUBSCRIBE কমান্ড
আপনি যদি কোনো চ্যানেল থেকে আনসাবস্ক্রাইব করতে চান, তাহলে UNSUBSCRIBE কমান্ড ব্যবহার করবেন:
UNSUBSCRIBE channel_name # চ্যানেল থেকে আনসাবস্ক্রাইব করা
এটি সাবস্ক্রিপশন বন্ধ করে দেয় এবং ওই চ্যানেল থেকে আর মেসেজ পাবেন না।
Pub/Sub মডেলের সুবিধা
- ডিকপ্লিং (Decoupling):
- পাবলিশার এবং সাবস্ক্রাইবারের মধ্যে কোনো সরাসরি সম্পর্ক নেই। সাবস্ক্রাইবাররা শুধুমাত্র চ্যানেলে মেসেজের জন্য অপেক্ষা করে এবং পাবলিশাররা জানে না যে কে মেসেজ গ্রহণ করবে।
- রিয়েল-টাইম মেসেজিং:
- Pub/Sub মডেলটি রিয়েল-টাইম কমিউনিকেশন সিস্টেম তৈরি করতে সাহায্য করে। একাধিক সাবস্ক্রাইবার একযোগে রিয়েল-টাইম মেসেজ পেতে পারে।
- স্কেলেবিলিটি:
- আপনি নতুন সাবস্ক্রাইবার যুক্ত করতে পারেন এবং পাবলিশারদের জন্য এই প্রক্রিয়া নিরবিচ্ছিন্ন থাকে। অনেক পাবলিশার একাধিক সাবস্ক্রাইবারকে মেসেজ পাঠাতে পারে।
- ইনস্ট্যান্ট আপডেট:
- Pub/Sub ব্যবহার করলে, আপনি সরাসরি সব সাবস্ক্রাইবারকে ইনস্ট্যান্ট আপডেট দিতে পারেন, যা বিশেষ করে লাইভ ফিড, চ্যাট অ্যাপ্লিকেশন এবং নিউজ আপডেটের জন্য উপকারী।
Pub/Sub এর ব্যবহারের কিছু উদাহরণ
- চ্যাট অ্যাপ্লিকেশন:
- একটি চ্যাট অ্যাপ্লিকেশনে বিভিন্ন গ্রুপের জন্য পৃথক চ্যানেল থাকতে পারে, এবং ব্যবহারকারীরা নির্দিষ্ট গ্রুপে সাবস্ক্রাইব করে চ্যাটের মেসেজ পেতে পারে।
- লাইভ ফিড বা নোটিফিকেশন:
- আপনি যদি কোন নিউজ বা ফিড সার্ভিস তৈরি করতে চান, যেখানে সাবস্ক্রাইবাররা তাদের পছন্দসই নিউজ ফিড সাবস্ক্রাইব করতে পারে, তাহলে Pub/Sub ব্যবহার করা হবে। যেমন, নতুন আর্টিকেল প্রকাশ হলে সাবস্ক্রাইবাররা তা সরাসরি পাবে।
- রিয়েল-টাইম ডেটা আপডেট:
- ফাইন্যান্সিয়াল মার্কেট বা গেমিং সিস্টেমে, যেখানে ব্যবহারকারীরা রিয়েল-টাইম ডেটা বা স্কোর আপডেট পেতে চায়, Pub/Sub ব্যবহৃত হয়।
Pub/Sub-এর সীমাবদ্ধতা
- Persistent Messaging:
- Pub/Sub মডেলটি বার্তা স্থায়ী করে রাখে না। অর্থাৎ, যদি কোনো সাবস্ক্রাইবার চ্যানেল থেকে কিছু সময়ের জন্য চলে যায়, তাহলে তারা পাঠানো পূর্ববর্তী মেসেজগুলো মিস করবে। এটি শুধুমাত্র রিয়েল-টাইম মেসেজিং সিস্টেমে কার্যকর।
- No Acknowledgment:
- Pub/Sub মডেলটি মেসেজ প্রেরণের পরে কোনও নিশ্চিতকরণ বা acknowledgment দেয় না। মেসেজ পাঠানো এবং গ্রহন নিশ্চিত হয় না, এবং এটি বিশেষ ক্ষেত্রে একটি সীমাবদ্ধতা হতে পারে।
সারাংশ
Pub/Sub রেডিসের একটি শক্তিশালী মেসেজিং প্যাটার্ন, যা পাবলিশারদের দ্বারা মেসেজ পাঠানো এবং সাবস্ক্রাইবারদের দ্বারা সেই মেসেজ গ্রহণ করার জন্য ব্যবহৃত হয়। এটি রিয়েল-টাইম মেসেজিং, চ্যাট, লাইভ ফিড, এবং ডেটা আপডেট সিস্টেমে ব্যবহৃত হয়। PUBLISH, SUBSCRIBE, এবং UNSUBSCRIBE কমান্ডগুলো ব্যবহার করে আপনি Pub/Sub মডেলটি রেডিসে প্রয়োগ করতে পারেন।
Read more