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