کافکا چیست؟
Apache Kafka چیست؟
آپاچی کافکا یک پلتفرم پخش توزیع شده است که برای مدیریت حجم زیادی از داده های بلادرنگ طراحی شده است. این یک سیستم منبع باز است که برای پردازش جریان، خطوط لوله داده در زمان واقعی و یکپارچه سازی داده ها استفاده می شود. لینکدین در ابتدا کافکا را در سال 2011 برای مدیریت فیدهای داده در زمان واقعی توسعه داد. این بر اساس مفهوم مدل انتشار/اشتراک – publish/subscribe ایجاد شده است و توان عملیاتی، قابلیت اطمینان و تحمل خطا را ارائه میکند. می تواند بیش از یک میلیون پیام در ثانیه یا تریلیون ها پیام در روز را مدیریت کند.
کافکا یک ابزار حیاتی برای فیدهای داده مدرن است. از آنجایی که داده ها هر روز به رشد خود ادامه می دهند، ما به ابزارهایی برای مدیریت حجم عظیمی از داده ها نیاز داریم. این دو چالش را معرفی می کند: اول، نحوه جمع آوری حجم زیادی از داده ها، و دوم، نحوه تجزیه و تحلیل داده های جمع آوری شده. برای غلبه بر این چالش ها به یک سیستم پیام رسانی نیاز داریم.
یک سیستم پیام رسانی به انتقال داده ها بین برنامه ها کمک می کند. سیستم منبع می تواند هر سیستمی مانند یک برنامه، ایمیل، داده های مالی، داده های جریانی و غیره باشد. سیستم هدف نیز می تواند هر سیستمی مانند پایگاه داده، ایمیل یا تجزیه و تحلیل و غیره باشد. اگر چندین منبع و سیستم هدف داشته باشیم، هر کدام سیستم منبع باید با سیستم هدف ارتباط برقرار کند که منجر به ادغام چندگانه در بین سیستم های منبع و هدف می شود.
در این مرحله کافکا ظاهر می شود. آپاچی کافکا به ما کمک می کند تا سیستم منبع و هدف را جدا کنیم. سیستم های منبع تولید کننده– producers نامیده می شوند که می توانند جریان های متعددی از داده ها را برای کارگزاران-brokers کافکا ارسال کنند. سیستم های هدف- Target مصرف کنندگان – consumers نامیده می شوند، جایی که مشتریان می توانند داده های کارگزاران brokers را بخوانند و آنها را پردازش کنند. چندین مصرف کننده- consumers می توانند داده های مشابه را بخوانند. به یک مقصد محدود نمی شود. سیستم های منبع و هدف کاملاً از هم جدا شده اند و از ادغام های پیچیده اجتناب می کنند.
دو نوع سیستم پیام رسانی وجود دارد که شرکت ها می توانند استفاده کنند: سیستم های پیام رسانی نقطه به نقطه point-to–point و انتشار-اشتراک- publish-subscribe
در یک سیستم نقطه به نقطه point-to-point ، تولیدکنندگان- producers داده ها را در یک صف نگه می دارند و تنها یک برنامه می تواند داده ها را از صف بخواند. هنگامی که این سیستم داده ها را می خواند، پیام از صف حذف می شود.
در سیستم پیامرسانی انتشار-اشتراکpublish-subscribe ، مصرفکنندگان consumers میتوانند در چندین موضوع در صف پیام مشترک شوند و پیامهای خاص مرتبط با برنامه خود را دریافت کنند. آپاچی کافکا بر اساس یک سیستم پیام رسانی انتشار-اشتراک است.
مزایای آپاچی کافکا – Apache Kafka
- تأخیر کم- Low Latency: آپاچی کافکا مقدار تأخیر پایینی را ارائه می دهد، یعنی تا 10 میلی ثانیه. به این دلیل است که پیام را جدا می کند و به مصرف کننده اجازه می دهد آن پیام را در هر زمان مصرف کند.
- گذردهی بالا- High Throughput: به دلیل تأخیر کم، کافکا قادر است تعداد بیشتری پیام با حجم بالا و سرعت بالا را مدیریت کند. کافکا می تواند هزاران پیام را در یک ثانیه پشتیبانی کند. بسیاری از شرکت ها مانند اوبرUber از کافکا برای بارگذاری حجم بالایی از داده ها استفاده می کنند.
- تحمل خطا – Fault tolerance: کافکا دارای یک ویژگی اساسی برای مقاومت در برابر خرابی گره/ماشین درون کلاستر است.
- دوام – Durability : کافکا ویژگی تکرار را ارائه میدهد که باعث میشود دادهها یا پیامها بیشتر روی کلاستر روی دیسک باقی بمانند. این باعث دوام آن می شود.
نیاز به ادغام چندگانه را کاهش می دهد: تمام داده هایی که یک تولیدکنندهproducer می نویسد از طریق کافکا می گذرد. بنابراین، ما فقط باید یک ادغام با کافکا ایجاد کنیم که به طور خودکار ما را با هر سیستم تولید کننده producing و مصرف کننده consuming یکپارچه کند.
- دسترسی آسان: از آنجایی که تمام دادههای ما در کافکا ذخیره میشوند، به راحتی برای هر کسی قابل دسترسی است.
- سیستم توزیع شده: آپاچی کافکا دارای یک معماری توزیع شده است که آن را مقیاس پذیر می کند. پارتیشن بندی Partitioning و تکثیر replication دو قابلیت تحت سیستم توزیع شده هستند.
- مدیریت بلادرنگ: آپاچی کافکا قادر است خط لوله داده را در زمان واقعی مدیریت کند. ساخت یک خط لوله داده بلادرنگ شامل پردازنده ها، تجزیه و تحلیل، ذخیره سازی و غیره است.
- رویکرد دستهای – Batch approach: کافکا از موارد استفاده دستهای استفاده میکند. همچنین می تواند مانند یک ابزار ETL به دلیل قابلیت پایداری داده کار کند.
- مقیاس پذیری Scalability : کیفیت کافکا برای رسیدگی به حجم زیادی از پیام ها به طور همزمان آن را به یک محصول نرم افزاری مقیاس پذیر تبدیل می کند.
معایب آپاچی کافکا
- مجموعه کاملی از ابزارهای نظارتی ندارید: آپاچی کافکا شامل مجموعه کاملی از ابزارهای نظارت و همچنین مدیریت نیست. بنابراین، استارت آپ ها یا شرکت های جدید از همکاری با کافکا می ترسند.
- مشکلات تغییر پیام: کارگزارbroker کافکا از تماس های سیستمی برای رساندن پیام ها به مصرف کننده استفاده می کند. در صورتی که پیام نیاز به اصلاح داشته باشد، عملکرد کافکا به میزان قابل توجهی کاهش می یابد. بنابراین، اگر پیام نیاز به تغییر نداشته باشد، به خوبی کار می کند.
- wildcard topic selection پشتیبانی نمی شود: آپاچی کافکا از wildcard topic پشتیبانی نمی کند. در عوض، فقط با نام دقیق topic مطابقت دارد. به این دلیل است که انتخاب wildcard topic، آن را قادر به پرداختن به موارد استفاده خاص نمی کند.
- کارایی را کاهش می دهد: کارگزاران Brokers و مصرف کنندگان consumers با فشرده سازی و از حالت فشرده سازی جریان داده، عملکرد کافکا را کاهش می دهند. این نه تنها بر عملکرد آن تأثیر می گذارد بلکه بر توان عملیاتی آن نیز تأثیر می گذارد.
- رفتار ناشیانه Clumsy Behaviour : آپاچی کافکا اغلب زمانی که تعداد صفها در کلاستر کافکا افزایش مییابد کمی ناشیانه رفتار میکند.
- فقدان برخی از پارادایم های پیام: برخی از پارادایم های پیام– message paradigms مانند صف های نقطه به نقطه، درخواست/پاسخ و غیره در کافکا برای برخی موارد کاربردی وجود ندارند.
موارد استفاده
تعداد موارد استفاده مختلف برای کافکا تقریباً بی پایان است. پیاده سازی های زیادی در دنیای واقعی وجود دارد. برخی از موارد استفاده در زیر ذکر شده است. اما به یاد داشته باشید، کافکا فقط یک صف پیام نیست.
Real-time Data Pipelines
یکی از رایج ترین موارد استفاده برای کافکا ساخت خطوط لوله داده بلادرنگ است. به عنوان مثال، کافکا میتواند برای جمعآوری دادهها از حسگرها، فایلهای گزارش، پلتفرمهای رسانههای اجتماعی و سایر منابع استفاده شود و آنها را به انبارهای داده، پلتفرمهای یادگیری ماشین و سایر مقاصد پخش کند.
Messaging Systems
کافکا همچنین می تواند به عنوان یک سیستم پیام رسانی مورد استفاده قرار گیرد و امکان ارسال سریع و کارآمد پیام بین برنامه ها و خدمات را فراهم می کند. به عنوان مثال، کافکا را می توان برای تقویت برنامه های چت، سیستم های ایمیل و دیگر سیستم های ارتباطی بلادرنگ استفاده کرد.
Stream Processing
پشتیبانی کافکا از چارچوبهای پردازش جریانی مانند Apache Flink و Apache Spark Streaming، امکان پردازش و تحلیل دادهها را در زمان واقعی فراهم میکند. به عنوان مثال، کافکا را می توان برای ساخت سیستم های تشخیص تقلب در زمان واقعی، موتورهای توصیه در زمان واقعی و سیستم های تجزیه و تحلیل احساسات در زمان واقعی استفاده کرد.
Event-driven Architecture
پشتیبانی کافکا از معماری رویداد محور، آن را به گزینه ای ایده آل برای ساخت برنامه های پیچیده و رویداد محور تبدیل می کند. با کافکا، رویدادها می توانند در زمان واقعی تولید، مصرف و پردازش شوند. به عنوان مثال، کافکا را می توان برای ساخت معماری میکروسرویس های رویداد محور، پلتفرم های اینترنت اشیا و سایر سیستم های رویداد محور استفاده کرد.
Log Aggregation
کافکا همچنین میتواند برای جمعآوری گزارشها استفاده شود و امکان جمعآوری، ذخیرهسازی و تجزیه و تحلیل گزارشها از منابع متعدد را فراهم کند. به عنوان مثال، کافکا می تواند برای جمع آوری و تجزیه و تحلیل گزارش ها از سرورهای وب، پایگاه های داده و سایر سیستم ها استفاده شود.
در مقاله بعدی در مورد چگونگی کارکرد کافکا و اجزای آن صحبت خواهم کرد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.