Introduction
আজকের দুনিয়ায় আমরা যখন উবার ইটস (Uber Eats) বা জোম্যাটো (Zomato) থেকে খাবার অর্ডার করি, তখন পর্দার আড়ালে হাজার হাজার কাজ একসাথে চলতে থাকে। আপনি একটা ক্লিক করলেন আর সাথে সাথে রেস্টুরেন্ট জানতে পারল, ডেলিভারি বয় রেডি হলো এবং আপনার ফোনে মেসেজ চলে এলো। এই বিশাল এবং জটিল কাজগুলো খুব সহজে এবং দ্রুত করার জন্যই Kafka (কাফকা) ব্যবহার করা হয়। সহজ কথায়, এটি ডাটা বা মেসেজ আদান-প্রদান করার একটি সুপার-ফাস্ট মাধ্যম।
কেন আমাদের Kafka দরকার? (প্রথাগত সিস্টেমের সমস্যা)
আগেকার দিনে সফটওয়্যারগুলো "Tightly Coupled" বা একে অপরের ওপর খুব বেশি নির্ভরশীল ছিল।
-
রেফারেন্স: [01:21] - ভিডিওতে জোম্যাটোর উদাহরণ দিয়ে এটি বোঝানো হয়েছে।
-
বিস্তারিত: ধরুন, আপনি খাবার অর্ডার করলেন। অর্ডার প্রসেসিং সার্ভিস এখন রেস্টুরেন্টকে জানাবে, তারপর ডেলিভারি সার্ভিসকে বলবে, তারপর নোটিফিকেশন পাঠাবে। যদি কোনো কারণে নোটিফিকেশন সার্ভিস কাজ না করে বা স্লো হয়ে যায়, তাহলে পুরো অর্ডার প্রসেসটাই আটকে যাবে। এটাকে বলা হয় Blocking Call। ট্রাফিক জ্যামের মতো, একটা গাড়ি আটকে গেলে পেছনের সব গাড়ি আটকে যায়।
-
সহজ অর্থ:
-
Tightly Coupled: যখন একটি অংশ কাজ না করলে পুরো সিস্টেম অচল হয়ে যায়।
-
Synchronous (সিংক্রোনাস): যখন একটার পর একটা কাজ লাইনে দাঁড়িয়ে করতে হয়, আগের কাজ শেষ না হলে পরেরটা শুরু করা যায় না।
-
Kafka কী এবং এটি কীভাবে কাজ করে?
কাফকা হলো একটি Distributed Event Streaming Platform। এটি অনেকটা আপনার বাড়ির পোস্ট বক্স বা ইমেইল ইনবক্সের মতো।
-
রেফারেন্স: [04:45] - ভিডিওতে মেসেজ বাফারের ধারণাটি দেখুন।
-
বিস্তারিত: এখানে সার্ভিসগুলো সরাসরি একে অপরকে কল করে না। অর্ডার সার্ভিস শুধু একটা মেসেজ লিখে কাফকার "বক্সে" রেখে দেয় (একে বলা হয় Producer)। এরপর রেস্টুরেন্ট সার্ভিস বা ডেলিভারি সার্ভিস তাদের সময়মতো সেই বক্স থেকে মেসেজ পড়ে নেয় (একে বলা হয় Consumer)। কেউ যদি স্লো থাকে, তাতে অন্য কারো কাজ আটকে থাকে না।
-
সহজ অর্থ:
-
Producer (প্রডিউসার): যে ডাটা বা খবর তৈরি করে পাঠায়।
-
Consumer (কনজিউমার): যে সেই খবরটা পড়ে কাজ করে।
-
Event (ইভেন্ট): যেকোনো একটি ছোট তথ্য বা ঘটনা (যেমন: "অর্ডার কনফার্ম হয়েছে")।
-
Kafka-তে কোডিং এর ধারণা
কাফকা ব্যবহার করে কোড করা অনেক সহজ। নিচে একটি সহজ পাইথন কোডের উদাহরণ দেওয়া হলো:
Producer Code (মেসেজ পাঠানো):
Python
# এটি একটি কাল্পনিক উদাহরণ যা বোঝায় কীভাবে মেসেজ পাঠানো হয়
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
# 'orders' নামের টপিক বা বক্সে মেসেজ পাঠানো হচ্ছে
producer.send('orders', b'New Order: Paneer Masala, User ID: 101')
- ব্যাখ্যা: এই কোডটি ব্যবহার করে আমরা ডাটাবেসে অর্ডার সেভ করার পর কাফকাতে একটি মেসেজ পাঠিয়ে দিচ্ছি। এরপর আমাদের অর্ডার সার্ভিস ফ্রি, সে পরের অর্ডারের জন্য তৈরি।
Consumer Code (মেসেজ পড়া):
Python
from kafka import KafkaConsumer
consumer = KafkaConsumer('orders')
for message in consumer:
# এখানে মেসেজ অনুযায়ী পরবর্তী কাজ (যেমন রান্না শুরু করা) হবে
print(f"Received: {message.value}")
- ব্যাখ্যা: এটি একটি লুপের মতো যা সবসময় চেক করতে থাকে নতুন কোনো মেসেজ এসেছে কি না। মেসেজ পেলেই সেটি নিয়ে কাজ শুরু করে।
Kafka বনাম সাধারণ Message Queue (যেমন RabbitMQ)
অনেকে মনে করেন কাফকা আর সাধারণ মেসেজ কিউ একই জিনিস, কিন্তু এদের মধ্যে বড় পার্থক্য আছে।
-
রেফারেন্স: [14:52] - ভিডিওতে সামোসা এবং ইউটিউব ভিডিওর উদাহরণ।
-
বিস্তারিত:
-
RabbitMQ (মেসেজ কিউ): এটি অনেকটা সামোসা খাওয়ার মতো। একবার খেয়ে ফেললে ওটা শেষ, অন্য কেউ আর খেতে পারবে না। অর্থাৎ মেসেজ একবার পড়া হয়ে গেলে সিস্টেম থেকে মুছে যায়।
-
Kafka: এটি অনেকটা ইউটিউব ভিডিওর মতো। আপনি একবার ভিডিও দেখলেন মানে এই নয় যে ভিডিও ডিলিট হয়ে গেল। অন্যরাও দেখতে পারবে এবং আপনি চাইলে আবার টেনে (Replay) দেখতে পারবেন। একে বলা হয় Message Retention।
-
Kafka এর আসল ব্যবহার (Real-world Use Cases)
কাফকা বড় বড় কোম্পানিগুলোতে কীভাবে ব্যবহার হয়:
-
Netflix: আপনি যখন কোনো মুভিতে লাইক দেন বা ক্লিক করেন, সেই তথ্য কাফকার মাধ্যমে রিকমেন্ডেশন ইঞ্জিনে যায়, যাতে আপনাকে পরবর্তী ভালো মুভি সাজেস্ট করা যায়। [12:04]
-
Tesla: টেসলা গাড়ির সেন্সর থেকে প্রতি সেকেন্ডে প্রচুর ডাটা আসে। কাফকা সেই ডাটাগুলো প্রসেস করে গাড়ির স্বাস্থ্য বা রাস্তার অবস্থা বুঝতে সাহায্য করে। [12:47]
-
Uber & LinkedIn: উবার প্রতি সেকেন্ডে ট্রিলিয়ন ট্রিলিয়ন মেসেজ কাফকার মাধ্যমে হ্যান্ডেল করে। [14:23]
আমার বিশ্লেষণ এবং পরামর্শ
আমার চিন্তা (Thinking): কাফকা কেবল একটি টুল নয়, এটি সিস্টেম ডিজাইনের একটি আধুনিক চিন্তা। এটি সিস্টেমকে অনেক বেশি শক্তিশালী (Scalable) করে তোলে।
কখন ব্যবহার করবেন:
-
যখন আপনার কাছে ডাটার পরিমাণ অনেক বেশি (মিলিয়ন বা ট্রিলিয়ন)।
-
যখন আপনার সিস্টেমের কোনো সার্ভিস বন্ধ থাকলেও অন্য সার্ভিসগুলো সচল রাখা জরুরি।
-
পুরানো ডাটা যদি পরে আবার প্রসেস করার দরকার হয়।
বিকল্প বা পরামর্শ (Alternatives):
-
আপনার যদি খুব ছোট ডাটা হয় (দিনে কয়েক হাজার মেসেজ), তবে কাফকা ব্যবহার না করে RabbitMQ ব্যবহার করা ভালো, কারণ কাফকা সেটআপ করা কিছুটা জটিল হতে পারে।
-
সরাসরি REST API কল করাও খারাপ নয় যদি আপনার সিস্টেম খুব সিম্পল হয়।
উপসংহার: আধুনিক সফটওয়্যার ইঞ্জিনিয়ারিং শিখতে চাইলে কাফকা সম্পর্কে জানা এখন বাধ্যতামূলক। এটি সিস্টেমকে জ্যামমুক্ত রেখে দ্রুতগতিতে কাজ করতে সাহায্য করে।
[
Kafka Simply Explained
codebasics · 57K views
](http://www.youtube.com/watch?v=d-NJTcTvyhw)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d