Message Queue (such as Kafka and RabbitMQ)


چه در حال ادغام چندین میکروسرویس باشید، چه به دنبال بهبود قابلیت اطمینان برنامه باشید یا یک برنامه پخش جریانی جدید بسازید، ممکن است به یک Message Queue (MQ) یا پلت فرم واسطه پیام نیاز داشته باشید. این نوع نرم‌افزارها پیام‌ها را از برنامه‌ها یا خدمات تولیدی به برنامه‌ها یا خدمات مصرف‌کننده منتقل می‌کنند. دو تا از محبوب ترین پلتفرم ها برای مدیریت پیام ها آپاچی کافکا و RabbitMQ هستند. در سطح بالا، آنها عملکردهای مشابهی دارند، اگرچه تفاوت های مهمی بین آنها وجود دارد. درک این تفاوت‌ها می‌تواند به شما کمک کند تا یکی یا دیگری را برای مورد استفاده خاص خود انتخاب کنید.

Message Queue

با الگوی Message Queue، یک برنامه تولید کننده پیام‌ها را به یک صف تحویل می‌دهد. هنگامی که برنامه مصرف کننده آماده دریافت پیام است، به صف متصل می شود و پیام ها را بازیابی می کند و آنها را از صف حذف می کند. ممکن است چندین برنامه مصرف کننده داشته باشید، اما هر پیام تنها توسط یک مصرف کننده مصرف می شود.


RabbitMQ چیست؟

ج:RabbitMQ یک کارگزار پیام توزیع شده منبع باز است. این پلتفرم اغلب به عنوان یک پلتفرم «بالغ» نامگذاری می‌شود و با پلتفرم‌های میان‌افزار پیام‌رسان «سنتی»، مانند IBM MQ و مایکروسافت Message Queue گروه‌بندی می‌شود.


توسعه دهندگان اغلب RabbitMQ را به دلیل انعطاف پذیری آن انتخاب می کنند. این می تواند سناریوهای مسیریابی پیچیده را مدیریت کند و از پروتکل های پیام رسانی متعدد P پشتیبانی می کند. می توان آن را در پیکربندی های توزیع شده برای مقیاس بندی و ارائه در دسترس بودن بالا مستقر کرد.

م..RabbitMQ جامعه بزرگی دارد. توسعه دهندگان می توانند به راحتی مشتریان، پلاگین ها و راهنماها را پیدا کنند و می توانند از طریق Pivotal پشتیبانی تجاری را انتخاب کنند. RabbitMQ همچنین دارای تعداد زیادی کاربر سرشناس سازمانی از جمله Reddit، Robinhood، T-Mobile، trivago، Accenture، Alibaba Travel و غیره است.

معماری RabbitMQ شامل تولیدکنندگان، صرافی ها، صف ها و مصرف کنندگان است. یک تولیدکننده پیام‌ها را به یک صرافی می‌فرستد، که سپس پیام‌ها را به صف‌ها هدایت می‌کند. سپس یک مصرف کننده به خواندن پیام ها از صف ادامه می دهد، اغلب تا سقف از پیش تعیین شده پیام ها.

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

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


توسعه دهندگان کافکا را به چند دلیل انتخاب می کنند:


مقیاس پذیری: معماری توزیع شده کافکا مقیاس پذیری افقی قابل توجهی را امکان پذیر می کند.

اجرا: کافکا سریع است! می تواند میلیون ها پیام را در ثانیه با منابع نسبتاً کم پردازش کند.

انعطاف پذیری: کافکا برای ارتباط با انواع سیستم ها طراحی شده است و دارای API های مفید و بصری است.

در دسترس بودن: کافکا از طریق متعادل کردن بار و تکرار داده ها در دسترس بودن بالایی را ارائه می دهد.

جامعه: به عنوان بخشی از بنیاد نرم افزار آپاچی، کافکا دارای یک اکوسیستم و جامعه غنی است.

شهرت قوی: کافکا توسط سازمان‌های پیشرو و پرمخاطب، از جمله نه تنها لینکدین، بلکه نتفلیکس، توییتر، اسپاتیفای، پینترست، Airbnb، اوبر و بسیاری دیگر استفاده می‌شود.

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

الگوهای پیام رسانی Kafka و RabbitMQ

در حالی که RabbitMQ از تبادل برای هدایت پیام ها به صف ها استفاده می کند، کافکا بیشتر از رویکرد pub/sub استفاده می کند. یک تهیه کننده پیام های خود را به موضوع خاصی ارسال می کند. یک مصرف کننده منفرد یا چند مصرف کننده - یک "گروه مصرف کننده" - می توانند آن پیام ها را مصرف کنند. سپس مصرف کنندگان و گروه های مصرف کننده می توانند در یک یا چند موضوع مشترک شوند تا در صورت وجود پیام ها یا رویدادهای جدید به آنها هشدار داده شود.

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


منابع:

https://www.simplilearn.com/kafka-vs-rabbitmq-article

https://www.interviewbit.com/blog/rabbitmq-vs-kafka/