Apache Kafka یا کافکا یک پلتفرم Event Streaming توزیع‌شده است. Producer رویدادها را در Topic می‌نویسد، Topic به Partition تقسیم می‌شود و Consumer Groupها با Offset پیشرفت پردازش را دنبال می‌کنند.

مفاهیم اصلی

مفهوموظیفه
Topicجریان منطقی پیام‌ها
Partitionتقسیم داده برای مقیاس و ترتیب درون پارتیشن
Offsetشماره موقعیت خواندن در پارتیشن
Consumer Groupتوزیع Partitionها بین اعضا
Retentionمدت یا اندازه نگهداری رویداد
Keyاثر روی انتخاب Partition و ترتیب مربوط به کلید

نمونه تست محلی با ابزار CLI

# Commands require the Kafka CLI installed and a broker running.
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic shop.orders --partitions 3 --replication-factor 1
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic shop.orders
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic shop.orders --from-beginning

سناریو: رویداد ثبت سفارش برای تحلیل رفتار خریدار، گزارش‌های مالی و تغذیه سرویس موجودی منتشر می‌شود. ترتیب برای پیام‌های دارای یک Key و در یک پارتیشن تعریف می‌شود، نه ترتیب کامل همه Topic.

Kafka یا RabbitMQ؟

معیارکافکاRabbitMQ
مدل اصلیEvent Log با RetentionBroker با Queue و Exchange
بازخوانیبا نگهداری داده و Offsetوابسته به معماری و سیاست صف
مقیاسPartition و Consumer GroupQueue، Consumer و کلاستر
انتخابرویداد جریانی و Replayمسیریابی پیام و کارهای صفی

دقت در تضمین پردازش

تحویل دقیقاً یک بار به مرز تراکنش و مقصد بستگی دارد. نوشتن رویداد و برداشت پول خارجی لزوماً یک تراکنش یکپارچه نیست.

اصطلاحات مرتبط: ربیت‌ام‌کیو، مسیج بروکر، صف پیام، پردازش دقیقا یک‌بار، معماری رویدادمحور.