آپاچی کافکا

**آپاچی کافکا** () یک سکوی پردازش جویباری متن‌باز است که توسط لینکدین توسعه داده شده و به بنیاد نرم‌افزار آپاچی اهدا شده‌ است. هدف این پروژه، فراهم‌سازی سکوی یکپارچه، توان بالا و کم تأخیر برای خوراک‌های آنی داده‌ها است. لایهٔ ذخیره‌سازی آن یک «صف انتشار/اشتراک (pub/sub) پیام با مقیاس‌پذیری بالا مهندسی‌شده به‌عنوان سیاههٔ توزیع‌شده تراکنش» است.
آپاچی کافکا پلت فرم متن باز پردازش جریانی توسعه یافته که توسط بنیاد نرم‌افزار آپاچی نوشته شده با زبان اسکالا و جاوا است.

این پروژه با هدف ارائه یک پلت فرم پر توان، با زمان تأخیر کم واحد و یکپارچه برای دست کاری اطلاعات ورودی به صورت بلا درنگ تولید شده‌است.

لایه ذخیره‌سازی آن اساساً برای یک معماری کارگزار – صف در مقادیر انبوه و مقیاس‌های بزرگ به صورت توزیع شده‌است.

کافکا برای پردازش جریان داده‌ها (Stream Processing) و کارگزار ارسال و دریافت پیام (Message Broker) مورد استفاده قرار می‌گیرد. علاوه بر این، کافکا امکان اتصال به سیستم‌های خارجی (برای داده‌های ورودی / خروجی) از طریق Kafka Connect و provides Kafka Streams را فراهم می‌کند.

کافکا برای مواجهه با انبوهی از داده‌ها که بی وقفه در حال ارسال هستند و شما فرصت کافی برای پردازش و ذخیره‌سازی آنها نداشته باشید تولید شده و بسیار مناسب است.

کافکا مقاوم در برابر خطا و بسیار سریع است.

## استفاده از کافکا
اولین قدم برای استفاده از کافکا ایجاد یک Topic می‌باشد.
از این به بعد می‌توان از طریق ارتباط TCP پیام‌های جدید را جهت ذخیره‌سازی در Topic جدید ارسال نمود.

این کار به سادگی از طریق Clientهایی که به زبان‌ها و برای پلتفرم‌های مختلف طراحی شده‌اند قابل انجام است. سپس این پیام‌ها باید در جایی ذخیره گردد. کافکا این پیام‌ها را در فایل‌هایی با نام Log ذخیره‌سازی می‌نماید. داده‌های جدید به انتهای فایل‌های Log افزوده می‌گردند. کافکا این توانایی را دارد که پیام‌های ارسالی را بر روی مجموعه ای از سرورهای کافکا که با یکدیگر کلاستر (Cluster) شده‌اند، ذخیره‌سازی نماید. اگر به‌طور مثال تعداد n سرور کافکا در یک کلاستر وجود داشته باشند، داده‌های مرتبط با هر پیام ارسالی پس از ذخیره‌سازی بر روی سرور لیدر، بر روی تمامی سرورهای پشتیبانی نیز کپی خواهد گردید. با این وصف، حتی اگر n-1 عدد از سرورها از سرویس خارج شوند، داده‌های Topic مورد نظر کماکان در دسترس و قابل استفاده خواهند بود. از این رو تحمل پذیری در برابر خطا به خوبی در کافکا دیده شده می‌شود.

خواندن اطلاعات ذخیره شده بر روی کافکا (Kafka) نیز از طریق Clientها قابل انجام است. کلاینت مصرف‌کننده پیام که به اصطلاح Consumer نامیده می‌شود، جهت خواندن پیام‌ها باید خود را Subscribe یک Topic مشخص نماید. از این پس با اجرای متد Poll، داده‌ها به سمت مصرف‌کننده سرازیر می‌شوند. در هنگام تعریف Topic جدید این امکان وجود دارد که داده‌های مرتبط با آن در چند پارتیشن ذخیره شوند. در واقع کافکا تمامی پیام‌های ارسالی به یک Topic را در تمامی پارتیشن‌ها به همان ترتیبی که ارسال شده‌اند به صورت توزیع شده ذخیره می‌کند.

در این مدل ذخیره‌سازی، هر پارتیشن بر روی یک سرور ذخیره شده و سایر سرورهای حاضر در Cluster نسخه پشتیبان آن پارتیشن را کپی خواهند کرد. این ویژگی کافکا به مصرف‌کننده این امکان را می‌دهد که به صورت موازی اطلاعات را دریافت نماید.

## جستارهای وابسته
* آپاچی اسپارک
* میان‌افزار پیام محور
* معماری سرویس‌گرا
* آپاچی زوکیپر

## منابع
https://kafka.apache.org/intro
* 

رده:پلت‌فرم جاوا
رده:میان‌افزار پیام محور
رده:نرم‌افزار آزاد
رده:نرم‌افزارهای ۲۰۱۱ (میلادی)
رده:نرم‌افزارهای آزاد برنامه‌نویسی‌شده با اسکالا
رده:نرم‌افزارهای آزاد نوشته‌شده با جاوا
رده:نرم‌افزارهایی که از پروانه آپاچی استفاده می‌کنند