ابزار و کتابخانه ها

آپاچی پولسار : رقیب تازه نفس کافکا

کافکا به عنوان یک سامانه توزیع پیام  مقیاس پذیر، امروزه به یک استاندارد در طراحی سامانه های کلان اطلاعاتی و معماریهای بیگ داده تبدیل شده است. برای ساخت یک خط تولید پردازش داده، داده ها را از منابع مختلف مانند شبکه های اجتماعی، حسگرها، فراخوانی های  API، نقاط مهم در توسعه برنامه ها و مانند آن وارد تاپیک های کافکا می کنیم (تولیدکنندگان) و این داده ها، در یک شبکه از مصرف کنندگان، توزیع می شوند و هر مصرف کننده که وظیفه خاصی بر عهده اوست، به محض رسیدن داده مورد نظر، آنرا از صف برداشته و پردازش می کند و معمولاْ برای تکمیل پردازش یا مرحله بعدی کار، آنرا وارد صف بعدی کافکا می کند تا مصرف کننده ای دیگر در بخش دیگری از شبکه، آن داده را دریافت و پردازش بعدی را بر روی آن انجام دهد.در هر مرحله از پردازش، معمولاْ نتیجه کار در دیتابیس های گوناگون ذخیره می گردد.

کافکا به عنوان یک سیستم انتشار/عضویت (Publish/Subscribe)، باعث توزیع پیام ها بین واحدهای مختلف پردازشی که هر یک، کانالی مخصوص به خود را برای دریافت پیام ها دارند، می شود. کافکا مانند یک بستر ارتباطی، وظیفه ارتباط غیر مستقیم بین واحدهای مختلف پردازشی را برعهده دارد و دغدغه مقیاس پذیری را از دوش برنامه نویسان و توسعه دهندگان سامانه های کلان اطلاعاتی به خوبی برداشته است.

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

نیازمندیهایی از قبیل :

  • واسط یکپارچه برای کارکرد توامان با ساختار صف و ساختار انتشار/عضویت
  • امکان حذف خودکار پیام ها بعد از زمان تعیین شده .
  • لحاظ موارد امنیتی در توزیع و تحویل پیام ها
  • مقیاس پذیری کانال ها و امکان مدیریت هزاران کانال در شبکه
  • امکان تفکیک بین تقاضاهای نوشتن در دیسک و خواندن از دیسک برای بالابردن کارآیی
  • از بین نرفتن پیام ها در صورت هرگونه خطا و شکست در شبکه
  • توزیع مبتنی بر مکان پیام ها – اینکه بتوان پیام ها را در نودهایی از شبکه ذخیره و آماده استفاده کرد که به مکان مصرف آنها نزدیک تر باشد.
  • توزیع واحد در یک سازمان به گونه ای که تمام واحدها و بخش های پردازش داده از همان ساختار استفاده کنند و نیاز به نصب جداگانه نداشته باشند.
  • سهولت در استقرار – به صورت درون-ساخت بتوان نسخه کلود و نسخه سازمانی آنرا داشت و نیز با Kubernetes  قابل مدیریت و گسترش باشد.

تمام موارد بالا ، باعث شد پروژه pulsar که برای مدتها در یاهو مورد استفاده قرار میگرفت و با در نظر گرفتن موارد فوق، طراحی شده بود به عنوان یک پروژه پیام رسانی در  مرکز رشد آپاچی  پذیرفته شود و با امکاناتی که ارائه می کند، جایگزینی مناسب برای کافکا در سامانه های کلان داده دنیا باشد.

این سامانه ، ساختاری مشابه با کافکا دارد :

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

همانطور که در شکل فوق مشخص است، هر تاپیک یا کانال به بخشهایی به نام Partition تقسیم شده و مدیریت هر چند پارتیشن به یک Broker یا توزیع کننده  سپرده می شود و وظیفه پاسخگویی به تولیدکننده/مصرف کننده برعهده این توزیع کننده هاست. برای تفکیک بخش ذخیره از بخش مدیریت، پولسار از Apache  BookKeeper استفاده می کند که وظیفه توزیع هر پیام در شبکه و تضمین ماندگاری پیام ها را بر عهده دارد.

بر خلاف کافکا که تنها با پارتیشن یا بخش بندی، مقیاس پذیری را تضمین می کند، پولسار مفهومی به عنوان سگمنت را هم در هر بخش معرفی کرده است (جزییات بیشتر) که تکرار پیام ها بین هر Bookie بر اساس سگمنت صورت میگیرد.

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

در  حالت Exclusive یا انحصاری ، هر پیام تنها به یک مصرف کننده تحویل داده میشود. در حالت Shared یا اشتراکی، پولسار مانند یک صف عمل کرده و پیام ها را به مجموعه ای از مصرف کنندگان تحویل می دهد. در حالت Failover یا تحمل خطا، پیام به یک مصرف کننده و درصورت عدم دریافت تاییدیه پردازش پیام از آن مصرف کننده، به صورت خودکار پیام را به مصرف کننده دیگری در گروه ایجاد شده، تحویل می دهد.

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

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

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا