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 با Retention | Broker با Queue و Exchange |
| بازخوانی | با نگهداری داده و Offset | وابسته به معماری و سیاست صف |
| مقیاس | Partition و Consumer Group | Queue، Consumer و کلاستر |
| انتخاب | رویداد جریانی و Replay | مسیریابی پیام و کارهای صفی |
دقت در تضمین پردازش
تحویل دقیقاً یک بار به مرز تراکنش و مقصد بستگی دارد. نوشتن رویداد و برداشت پول خارجی لزوماً یک تراکنش یکپارچه نیست.
اصطلاحات مرتبط: ربیتامکیو، مسیج بروکر، صف پیام، پردازش دقیقا یکبار، معماری رویدادمحور.