Asynchronous processing (Kafka, RabbitMQ)
সিস্টেমের পারফরম্যান্স বাড়ানোর জন্য অনেক সময় আমরা রিকোয়েস্ট আসার সাথে সাথে প্রসেস না করে তা ব্যাকগ্রাউন্ডে করার জন্য রেখে দিই। একেই বলা হয় Asynchronous Processing। এটি করার জন্য Message Queue ব্যবহার করা হয়।
1. কেন মেসেজ কিউ প্রয়োজন?
- Decoupling: একটি সার্ভিস অন্যটির ওপর সরাসরি নির্ভরশীল থাকে না।
- Scalability: যদি অনেক বেশি রিকোয়েস্ট আসে, তবে তা কিউ-তে জমা থাকে এবং সার্ভার নিজের গতিতে তা প্রসেস করতে পারে।
- Reliability: যদি কোনো সার্ভার ডাউন থাকে, মেসেজ কিউ-তে ডেটা সযত্নে জমা থাকে (Persistent) এবং সার্ভার ঠিক হলে আবার প্রসেস শুরু হয়।
- Better User Experience: ইউজারকে লম্বা সময় ধরে অপেক্ষা করতে হয় না। যেমন: অর্ডার দেওয়ার পর ইমেইল ব্যাকগ্রাউন্ডে পাঠানো হয়।
2. RabbitMQ
RabbitMQ হলো একটি ট্র্যাডিশনাল এবং অত্যন্ত জনপ্রিয় মেসেজ ব্রোকার।
- বিমূর্ততা (Abstraction): এটি "Smart Broker, Dumb Consumer" মডেলে চলে। মানে ব্রোকার জানে কোন মেসেজ কার কাছে পাঠাতে হবে।
- Reliability: মেসেজ ডেলিভারি হওয়ার পর কিউ থেকে মুছে ফেলা হয় (Acknowledge)।
- ব্যবহার: যেখানে কমপ্লেক্স রাউটিং প্রয়োজন এবং মেসেজ দ্রুত ডেলিভারি হওয়া জরুরি।
3. Apache Kafka
কাফকা শুধুমাত্র একটি মেসেজ কিউ নয়, এটি একটি Distributed Event Streaming Platform।
- বিমূর্ততা (Abstraction): এটি "Dumb Broker, Smart Consumer" মডেলে চলে। কাফকা শুধু মেসেজগুলো সেভ করে রাখে, কনজিউমার নিজে ঠিক করে সে কতটুকু পড়েছে।
- High Throughput: এটি সেকেন্ডে লাখ লাখ মেসেজ হ্যান্ডেল করতে পারে।
- Persistence: এখানে মেসেজ ডেলিভারি হওয়ার পরও ডিলিট হয় না, বরং নির্দিষ্ট সময় পর্যন্ত সেভ থাকে (Log)। এটি ডেটা রিপ্লে (Replay) করার সুবিধা দেয়।
- ব্যবহার: লগ অ্যানালাইসিস, রিয়েল-টাইম ডেটা স্ট্রিমিং এবং ইভেন্ট সোর্সিং (Event Sourcing) এর জন্য।
তুলনা একনজরে
| বৈশিষ্ট্য | RabbitMQ | Apache Kafka |
|---|---|---|
| মডেল | Message Queue | Streaming Log |
| স্পিড/লোড | ভালো | অত্যন্ত হাই (Massive Scale) |
| মেসেজ রিটেনশন | ডেলিভারি হলে মুছে যায় | নির্দিষ্ট সময় পর্যন্ত থাকে |
| জটিলতা | মাঝারি | হাই (ম্যানেজ করা কঠিন) |
TIP
যদি আপনার সাধারণ ব্যাকগ্রাউন্ড টাস্ক বা সার্ভিসগুলোর মধ্যে যোগাযোগের প্রয়োজন হয়, তবে RabbitMQ সহজ এবং কার্যকর। কিন্তু যদি বিশাল পরিমাণ ডেটা স্ট্রিমিং বা অ্যানালিটিক্স প্রয়োজন হয়, তবে Kafka সেরা।