রেডিস কথন ৩
ডেভলপার জীবনে রেডিসের ভুমিকা
Previous Blog: #রেডিস_কথন ২
আজকে আমরা রেডিসের আরো ইউজকেস নিয়ে আলোচনা করবো। সিরিজের আগের ব্লগ মিস হয়ে গেলে, কমেন্ট থেকে খুজে নিন…
1. Queue

ফেইসবুক, ইউটিউবে প্রতিনিয়ত ফাইল আপলোড করা খুবই কমন কাজ । ধরেন অনেক ইউজার কে ই-মেইল পাঠানোর api, বড় ফাইল আপলোড, বিভিন্ন ডাটা সোর্স থেকে ডাটা মাইগ্রেশন ইত্যাদি বিভিন্ন ভারী কাজের api ইমিডিয়েট রেস্পন্স পাঠানোর দরকার নেই, কয়েক সেকেন্ড, মিনিট দেরি হলেও সমস্যা নেই বরং কাজ হয়ে গেলেই হলো ৷ এসব কাজ Queue তে রেখে দিলে ভালো পারফর্ম্যান্স পাওয়া যায় ।
ধরেন একটা ব্লগ পোস্টের কত ভিউ হইছে, সেটা কি এখনই রেস্পন্স দেয়া খুবই জরুরি?
৫ মিনিটে ২০ হাজার ভিউ হইছে এই স্কেলের কথা চিন্তা করেন।
একই ব্লগ পোস্টের জন্য ৫ মিনিটে ডাটাবেজে ২০ হাজার সেপারেট আপডেট অপারেশন কি ভালো হবে নাকি কিউ থেকে মার্জ হয়ে একটা বাল্ক রাইট অপারেশন ডাটাবেজের performance এর জন্য ভালো হবে???
৫ মিনিট পর পর বাল্ক অপারেশন করলেই তো হলো? তাই-না.
কয়েক হাজার ইমেইল পাঠানোর জন্য কত সেকেন্ড সময় লাগতে পারে?? এত সময় কি ফ্রন্টেন্ডের রেস্পন্স পাঠানোর জন্য ব্যয় করা খুবই জরুরি??
একটা ১ জিবির ফাইল আপলোড ব্যাকগ্রাউন্ডে প্রসেস করা ভালো নাহ??
Job Queue. Scheduler Queue, Message Queue কিওয়ার্ড সার্চ দিলেও অনেক তথ্য পেয়ে যাবেন।
Bull নামে একটা নোড ( npm/yarn) প্যাকেজ আছে। একটু ঘেটে দেখতে পারেন।
2. PubSub pattern:

ইভেন্ট ড্রিভেন আর্কিটেকচার নিয়ে আইডিয়া থাকলে ইজিলি বুঝতে পারবেন এর কাজ কি।
Node এ EventEmitter নামে একটা প্যাকেজ আছে। সিঙ্গেল নোড প্রসেস ইউজ করে কাজ করে। একটা worker এ এমিট হওয়া ইভেন্ট অন্য কোনো ওয়ার্কার access করতে পারে না ।
সেক্ষেত্রে, রেডিস কে Inter process communication এর জন্য ইউজ করা যেতে পারে ৷
রেডিস পাব সাব মেসেজিং করতে Redis Process ইউজ করে। রেডিসের ডিবির সাথে এর কোনো সম্পর্ক নেই ।
গ্রাফকিউএল সাবস্ক্রিপশন এর সাথেও রেডিস পাব সাব কানেক্টে করা যায় |
3. Microservices Data Transport :
রেডিস পাব সাব ইউজ করে Redis কে ইজিলি মেসেজ ব্রোকার হিসেবে ইউজ করা যায় । রেডিস ফায়ার এন্ড ফরগেট মেথডে কাজ করে ।
Nest.JS নামে একটা টাইপস্ক্রিপ্ট বেজড নোড জেস ফ্রেমওয়ার্ক আছে যার ডকুমেন্টেশনের মাইক্রোসার্ভিস সেকশনে খুব সুন্দর করে রেডিস কে বিভিন্ন সার্ভিসের সাথে কীভাবে কমিউনিকেট করা যায় কিউট এক্সাম্পল সহকারে দেয়া আছে |
যাই হউক, পাবলিশার ডাটা পাবলিশ করে বাট কোনো সাবস্ক্রাইবার লিসেন করলে ডাটা পাবে । কেউ লিসেন না করলেও রেডিস এমন রিয়েক্ট করে যেন কিছুই হয় নি ।
গার্লফ্রেন্ড রাগ করে ঝাড়ি দিয়েই যাচ্ছে | কিন্তু আপনি যেন কিছুই শুনেন নি অবস্থা আর কি |
কোনো সাবস্ক্রাইবার না থাকলে মেসেজ অটো রিমুভ হয়ে যাবে, আর রিকভার করা যাবে না ।
মেসেজ/ইভেন্ট পাস হলো কিনা, অন্তত একটা মাইক্রো সার্ভিস লিসেন করলো কিনা তার কোনো গ্যারান্টি রেডিস দিতে পারে না ।
তাই Message Durability and acknowledgement এর জন্য ডেডিকেটেড মেসেজ ব্রোকার যেমন: RabbitMQ টাইপের কিছু ইউজ করা ভালো ।
স্টিল যেহেতু গরীবের মেসেজ ব্রোকার সেহেতু গরীবানা সুরতে দুয়েকটা কেস পেয়েও যেতে পারেন যেখানে রেডিস ইউজ করলেই চলে
ভুল ত্রুটি ধরে দিলেই মার্জনীয় ।
ধন্যবাদ
( চলবে…)