تاریخچه

 

آپاچی کافکا در ابتدا توسط لینکدین  توسعه یافت و در اوایل سال 2011 بصورت نرم افزار متن باز در آمد. در نوامبر ۲۰۱۴ ، چندین مهندس که در لینکدین  بر روی کافکا کار می‌کردند یک شرکت جدید به نام Confluent  ایجاد کرده و به صورت انحصاری بر روی توسعه کافکا کار کردند. بر اساس یک پست در سال 2014 به نظر می رسد که جی کربس نام این برنامه را از نام فرانتس کافکا نویسنده آلمانی برداشت کرده است.

 

آپاچی کافکا چیست؟

 

آپاچی کافکا یک پلتفرم توزیع‌شده برای پردازش داده های جریانی بوده و قادر به رسیدگی و پردازش چندین تریلیون رویداد است به صورت همزمان است. کافکا در ابتدا به عنوان یک ابزار برای ارسال پیامهایی با تعداد بالا بکار برده می شد. کافکا از زمان ایجاد و منبع باز شدن توسط لینکدین در سال ۲۰۱۱ ، به سرعت از ارسال پیام به یک پلتفرم پردازش توزیعی کامل تبدیل شده است.

آپاچی کافکا، به عنوان یک پلتفرم  داده های در جریان، دارای قابلیتهایی ازقبیل زمان پاسخ کوتاه، کارایی بالاو تحمل خطا بوده و قادر به پردازش جریانهایی سریع از رویدادها می باشد. کافکا، برای پشتیبانی از برنامه های کاربردی مشتری و اتصال سیستم های پایین دست با داده های زمان واقعی پاسخ های در حد میلی ثانیه فراهم می کند.

 

کاربرد های کافکا

 

دو مورد از اصلی ترین کاربردهای کافکا شامل موارد ذیل می شود:

1.     ایجاد خطوط انتقال داده های جریانی و به هنگام که داده ها را میان سیستمها و برنامه ها بصورت قابل اطمینانی انتقال داده و رد و بدل می کند

2.     ایجاد برنامه های کاربردی برای داده های جریانی و به هنگام که به موقع نسبت به جریانی از داده ها واکنش نشان داده و آنها را انتقال می دهد

 

ساختار و نحوه کار کافکا

قبل از اینکه به ساختار کافکا بپردازیم ابتدا چند اصطلاح را توضیح می دهیم:

·        کافکا به صورت خوشه ای بر روی یک یا چند سرور کار می کند

·        کافکا جریان داده ها و رکورد ها را در ساختارهایی به نام تاپیک( topics) ذخیره می کند

·        هر رکوردی دارای یک کلید، یک مقدار و یک برچسب زمانی می باشد تا بصورت مجزا از سایر رکورد ها مشخص باشد

 

کافکا دارای 4 رابط کاربری برای برنامه خود می باشد که هر کدام نقشی در مجموعه فعالیتهای کافکا دارند. این رابطها شامل:

·        رابط تولید کننده (Producer) که به یک برنامه اجازه می دهد رشته هایی از رکورد ها را بر روی یک یا چند تاپیک کافکا منتشر کند

·        رابط مصرف کننده(Consumer) که به یک برنامه اجازه می دهد به یک یا چند تاپیک متصل شده و رکورهای موجود را پردازش کند

·        رابط جریانی (Streams) که به یک برنامه اجازه می دهد بصورت پردازشگر داده های جریانی عمل کرده و داده های ورودی موجود بر یک یا چند تاپیک را مصرف کرده و خروجی آن نیز تولید جریانی از داده ها بر روی تاپیکهای خروجی بوده و بصورت موثری جریانهای ورودی را به خروجی تبدیل می کند.

·        رابط اتصال دهنده(Connector) که اجازه ساخت و اجرای تولید کننده ها و مصرف کننده هایی با قابلیت استفاده مجدد را می دهد که تاپیکهای کافکا را به برنامه ها و سیستمهای داده ای موجود متصل می کند. مثلا یک اتصال دهنده به یک پایگاه داده رابطه ای می تواند هر نوع تغییری که بر روی یک جدول اعمال شده را ثبت و ضبط کند.  

 

شکل زیر رابط های کاربری و نحوه کار کافکا را بصورت شماتیک نشان می دهد.

بطور کلی نحوه کار کافکا بصورت ذیل است:

کافکا پیامهایی را که از بسیاری از "تولید کنندگان" دریافت می کند را ذخیره کرده و داده ها بدین صورت بر روی پارتیشن های گوناگونی در "تاپیکهای" مختلف توزیع شده و پارتیشن بندی می شوند. در هر پارتیشن پیامها با هم شاخص گذاری شده و با یک برچسب زمانی ذخیره می شوند. سایر فرایندها مثل "مصرف کنندگان" می توانند پیامها را از پارتیشنها دریافت کرده و اطلاعات مورد نظر خود را درخواست کنند. کافکا بر روی خوشه هایی از یک یا چند سرور اجرا می شود و پارتیشنها می توانند بر روی چندین نود مختلف توزیع شوند.

آپاچی کافکا هنگامی که همراه با آپاچی استورم، اچ بیس و اسپارک استفاده شود به طور موثری می تواند داده‌های بلادرنگ و جریان را پردازش کند. اگر کافکا به عنوان یک خوشه روی چندین سرور پیکر بندی و اجرا شود در اینصورت به کمک 4 رابط کاربری خود براحتی عملیات انتشار و دریافت و پردازش اطلاعات را به سرعت و با کارایی بالا انجام می دهد.

توانایی کافکا برای ارایه جریان‌های عظیم داده و پیام ،همراه با تحمل خطای بالا ، آن را جایگزین برخی از سیستم‌های پیام‌رسانی مرسوم مانند JMS ، AMQPو غیره کرده است.