Kafka چیست؟
پلتفرم پردازش جریان داده (Event Streaming) با کارایی و مقیاسپذیری بسیار بالا؛ برخلاف Message Broker سنتی، پیامها را برای مدت مشخص نگه میدارد و امکان بازخوانی میدهد.
چرا مهم است؟
برای حجم بسیار بالای رویداد (میلیونها پیام در ثانیه، مثل لاگ کلیک کاربران یا داده IoT) یا نیاز به چند Consumer مستقل که هرکدام باید همه پیامها را ببینند، Kafka از RabbitMQ سنتی مقیاسپذیرتر عمل میکند.
تعریف
Kafka پیامها را در Topicهای تقسیمشده به Partition ذخیره میکند و برخلاف صف سنتی که پیام بعد از مصرف حذف میشود، پیامها را برای یک بازه زمانی مشخص (Retention، مثلاً ۷ روز) نگه میدارد؛ چند Consumer Group مستقل میتوانند همان داده را جدا از هم بخوانند.
مثال مفهومی
Producer → Topic "order-events" (3 Partition)
→ Consumer Group "email-service" (میخواند از ابتدای offset خودش)
→ Consumer Group "analytics-service" (مستقل، همان پیامها را دوباره میخواند)
تفاوت کلیدی با RabbitMQ
- RabbitMQ: صف سنتی، پیام بعد از Ack مصرف و حذف میشود؛ مناسب Task Queue (هر پیام دقیقاً یکبار توسط یک Consumer پردازش شود).
- Kafka: لاگ پایدار و قابل بازخوانی؛ مناسب Event Streaming، جایی که چند سیستم مستقل باید همان رویداد را ببینند یا داده تاریخی قابل بازپخش (Replay) باشد.
اشتباه رایج
❌ استفاده از Kafka برای یک Task Queue ساده (مثل «این ایمیل را بفرست») در پروژهای با ترافیک کم — پیچیدگی عملیاتی Kafka (Zookeeper/KRaft، Partition، Consumer Group) برای این سناریو غیرضروری است؛ RabbitMQ یا حتی یک Background Job ساده کافی است.
منبع و مطالعه بیشتر
خلاصه
Kafka پیامها را در Topic/Partition برای مدت مشخص نگه میدارد و امکان میدهد چند Consumer Group مستقل همان رویدادها را بخوانند — مناسب Event Streaming حجم بالا. برای Task Queue ساده با ترافیک کم، سراغ Kafka نروید. مرجع کامل: مستندات رسمی Apache Kafka.
