آپاچی کافکا در یک جمله، یک پلتفرم سریع و مقیاس پذیر تبادل پیام میان اپلیکیشنها است، که اغلب اپلیکیشنهای توزیع شده استفاده میشود. یکی از ویژگیهای آن، قابلیت دسترسی پذیری بالای (High availability) آن است. همچنین از قابلیت بازیابی خودکار نیز پشتیبانی میکند. این موضوع سبب میشود تا Kafka به عنوان راه حل مناسبی برای سیستمهای دادهای مقیاس بزرگ شناخته شود.
عملکرد کلی Kafka شامل مفاهیمی از قبیل Kafka Broker، Kafka Producer و Kafka Consumer است
Kafka Broker یک node در کلاستر Kafka است که برای ذخیره سازی و همچنین replicate کردن دیتا از آن استفاده میشود. Producer پیامها را درون ظرفی به نام topic قرار میدهد. Consumer نیز پیامها را از topic میخواند.
سیستم تبادل پیام در Kafka :
هنگامی که ما دادههایی را از یک اپلیکیشن به اپلیکیشن دیگری منتقل میکنیم در این جا از Messaging System استفاده میکنیم. در نتیجه استفاده از چنین سیستمی، بدون نگرانی از نحوه اشتراک دادهها، اپلیکیشن مان تنها بر روی خود دادهها تمرکز میکند. در کل دو نوع الگوی پیام رسانی وجود دارد. Point-to-Point و Publish-Subscribe. در ادامه با هر یک بیشتر آشنا خواهیم شد.
سیستم تبادل پیام نقطه به نقطه (Point-to-Point) :
در این سیستم، پیامها همگی در یک صف نگهداری میشوند. همچنین یک پیام خاص صرفا توسط یک consumer میتواند consume شود. این سیستم پیام رسانی این اطمینان را میدهد که هر زمان که یک consumer یک پیام را از صف میخواند، آن پیام دیگر از آن صف محو خواهد شد.
سیستم تبادل پیام Publish-Subscribe :
در این سیستم، پیامها داخل ظرفی به نام topic قرار میگیرند (publish میشوند). در واقع در این سیستم، consumerها میتوانند در یک یا چند topic عضو شوند (subscribe کنند) و تمامی پیامهای آن تاپیکها را consume کنند.
چرا باید از کلاستر Apache Kafka
اولین چالش در کلان داده، جمع آوری حجم زیادی از دادهها بوده و چالش دوم تحلیل دادههای جمع آوری شده میباشد. لازمهی غلبه بر این دو چالش استفاده از یک messaging system است.
چند ویژگی مهم Kafka عبارتند از:
ردیابی فعالیتهای وب برای پردازش Real Time
هشدار و گزارش متریکهای عملیاتی
تبدیل داده به فرمت استاندارد
پردازش مداوم دادههای استریم
آپاچی کافکا با ویژگیهای گفته شده و به دلیل گستردگی استفاده به رویارویی با تکنولوژیهای مشابه مانند ActiveMQ و RabbitMQ آمده است.