مفاهیم و اصطلاحات پولسار
اپلیکیشنی که داده را به پولسار تزریق میکند، تأمینکننده و اپلیکیشنی که داده را از پولسار دریافت و مصرف میکند مصرفکننده نام دارد. کاربردهای مصرفکننده بعضی اوقات تحت عنوان مشترکین نیز شناخته میشوند. در الگوی انتشار و اشتراک اصطلاح تاپیک منبع اصلی در پولسار محسوب میشود. شاید بتوان گفت تاپیک بیانکننده کانالی است که تأمینکنندههای داده را به آن وارد و مصرفکنندههای داده را از آن استخراج میکنند. در تصویر صفحه بعد این ساختار به نمایش گذاشته شده است. (شکل 1)
شکل 1
پولسار از ابتدا با این هدف ساخته شد که بتواند از موارد کاربردی چندمستأجری پشتیبانی کند. پولسار از دو منبع چندمستأجری خاص تحت عنوان خصوصیت و فضای نام برای فعال کردن این شیوه از طراحی نرمافزاری پشتیبانی میکند. یک خصوصیت نشاندهنده مستأجر در سیستم است. برای مثال، فرض کنید یک کلاستر پولسار بهگونهای مستقر شده است تا از طیف گستردهای از کاربردها (مثل مواردی که در یاهو به کار گرفته شده بود) پشتیبانی کند. درون یک کلاستر پولسار هر خصوصیت میتواند نشاندهنده یک گروه سازمانی، یک ویژگی اصلی یا محصول باشد. از طرفی هر خصوصیت میتواند شامل چندین فضای نام باشد. برای مثال، یک فضای نام برای هر کاربرد یا مورد استفاده در نظر گرفته میشود. سپس یک فضای نام میتواند شامل هر تعداد تاپیک باشد. این سلسله مراتب در شکل 2 نشان داده شده است.
شکل 2
فضای نام واحد مدیریت پایه در پولسار است. در سطح فضای نام شما میتوانید مجوزها، تنظیمات مربوط به پاسخگویی، کلاسترهای داده پیام، کنترل انقضای پیام و عملیات ضروری را مدیریت کنید. تمام عناوین موجود در یک فضای نام از تنظیمات یکسانی تبعیت خواهند کرد که یک سطح مدیریتی قدرتمند برای پیکربندی خیلی از عناوین را بهصورت یکجا فراهم میکند. دو نوع مختلف از فضای نام بر اساس سطح فضای نامی قابل مشاهده وجود دارد:
Local- یک فضای نام محلی تنها توسط کلاستری که آن را تعریف کرده است قابل مشاهده است.
Global- در این مورد، فضای نام در بین چندین کلاستر قابل مشاهده خواهد بود و تفاوتی نمیکند آنها درون یک مرکز داده باشند یا از لحاظ جغرافيایی از هم جدا باشند. این بستگی به آن دارد که Replication در تنظیمات فضای نام در بین کلاسترها فعال شده باشد.
هرچند فضای نام محلی و سراسری از لحاظ محدوده متفاوت هستند، اما میتوان با تنظیمات مناسب هر دو را بین گروههای متفاوت یا سازمانهای مختلف به اشتراک گذاشت. بهمحض اينكه مجوز نوشتن روی یک فضای نام صادر میشود یک اپلیکیشن میتواند روی هرکدام از تاپیکهای درون فضای نام عمل نوشتن را انجام دهد. اگر یک تاپیک موجود نباشد، در حین انجام کار ساخته میشود.
همان گونه که قبلاً اشاره شد، هر فضای نام میتواند یک یا چند تاپیک داشته باشد. هر تاپیک هم میتواند چندین اشتراک داشته باشد و هر اشتراک بهگونهای تنظیم شده تا تمام پیامهای منتشر شده در تاپیک را دریافت و نگهداری کند. برای فراهم کردن انعطافپذیری بیشتر پولسار سه نوع اشتراک متفاوت را فراهم میکند که میتوانند همزمان در یک تاپیک به کار گرفته شوند:
Exclusive subscription- برای این نوع اشتراک ویژه هربار تنها میتوان برای یک مصرفکننده از آن استفاده کرد.
Shared subscription- در این مورد، چند مصرفکننده را میتوان به یک اشتراک ضمیمه و هر مصرفکننده قسمتی از پیام را دریافت خواهد کرد.
Failover subscription- در این نوع از اشتراک چند مصرفکننده اجازه دارد تا به یک تاپیک متصل شود، اما هربار تنها یک مصرفکننده پیامها را دریافت خواهد کرد. باقی مصرفکنندگان تنها زمانی که دریافتکننده فعلی با خطا مواجه شود، شروع به دریافت پیام میکنند.
این سه نوع اشتراک متفاوت در شکل 3 به نمایش گذاشته شده است. این اشتراکها این امکان را فراهم میکنند تا روش تولید و مصرف پیامها را از هم تفکیک کرد. با پشتیبانی از چند نوع اشتراک، پولسار بدون افزایش پیچیدگی در توسعه انعطافپذیری در کاربردهای مختلف را فراهم میکند. (شکل 3)
شکل 3
پارتيشنبندی داده
دادههای وارد شده به یک تاپیک میتواند در محدوده بین چند مگابایت (Small Data) تا چند ترابایت (Big Data) باشد. این بهمعنای آن است که تاپیکها باید قادر باشند با توجه به تعداد مصرفکنندگان در برخی شرایط با توان عملیات پایین و در برخی شرایط دیگر با توان عملیات خیلی بالا پایدار باقی بمانند. بنابراین چه اتفاقی خواهد افتاد وقتی روی یک تاپیک به توان عملیاتی بالا و روی دیگری به توان عملیاتی پایین نیاز باشد؟ برای مدیریت این مسئله پولسار این امکان را در اختیار شما قرار میدهد تا داده موجود در یک تاپیک را به چند قسمت تقسیم و آن را روی چند ماشین ذخیره كنيد. این دادههای تقسیم شده با نام پارتيشن شناخته میشوند. استفاده از پارتيشنها در بین مجموعهای از ماشینها یک رویکرد رایج جهت پردازش حجم زیادی از داده در بین چندین نود مختلف برای دستیابی به توان عملیاتی بالا است. به طور پیشفرض تاپیکهای پولسار به شکل تاپیکهای غیرپارتيشن ساخته میشوند، اما میتوانید بهصورت بسیار ساده با استفاده از یک فرمان CLI یا فراخوانی API تاپیکهای پارتیشن شده ایجاد کنید و به هرکدام یک نام اختصاص دهید. وقتی یک پارتيشن ایجاد میکنید، پولسار بهطور خودکار داده را تقسیمبندی و اطمینان حاصل میکند که مصرفکنندگان و تولیدکنندگان بتوانند از این تقسیمبندی استفاده کنند. با این روش اپلیکیشنی که در یک تاپیک واحد نوشته شده است نیز همچنان بعد از پارتيشن شدن تاپیک کار خواهد کرد و نیازی به تغییر کدنویسی ندارد.
در پولسار پارتيشنبندی تاپیکها توسط یک فرآیند بهنام broker اداره میشود و هر نود در یک کلاستر پولسار روی broker مخصوص به خود اجرا میشود. شکل 4 نشان میدهد پارتيشنها چگونه توسط نودهای broker اداره میشوند.
با وجود اینکه اپلیکیشنها میتوانند بدون نیاز به تغییر کد از مزایای پارتيشنبندی استفاده کنند، اما چند راهکار دیگر نیز وجود دارد که میتواند به توزیع بهتر داده در بین پارتیشنها و در میان مصرفکنندگان موجود کمک کند. پولسار این امکان را در اختیار شما قرار میدهد تا با انتخاب یک سیاستگذاری مسیریابی امکان کنترل تعیین مسیر پیامها به یک پارتيشن خاص را فراهم کنید. چهار سیاستگذاری مسیریابی اصلی وجود دارد:
Single partitioning- تولیدکننده یک پارتيشن را بهصورت تصادفی انتخاب و داده را تنها به این پارتيشن هدایت میکند. این مدل همان تضمينهای ارائه شده توسط تاپیکهای بدون پارتيشن را حفظ میکند، اما میتواند برای مواقعی که چند تولیدکننده از یک تاپیک استفاده میکنند مفید باشد.
Round robin partitioning- با انتخاب این گزینه تولیدکننده دادهها را بهطور یکنواخت در تمام پارتيشنها بهشیوه گردش نوبتی توزیع میکند. اولین پیام به اولین پارتيشن منتقل میشود، دومین پیام به پارتيشن دوم و همین طور تا انتها ادامه پیدا میکند.
Hash partitioning- در این مورد، هر پیام یک کلیدواژه را با خود حمل میکند. انتخاب پارتيشن بر اساس مقدار تعیین شده توسط تابع Hash موجود در کلیدواژه پیام انجام میشود. در این گزینه ترتیب ارسال و دریافت بر اساس این کلیدواژه ضمانت میشود.
Custom partitioning- در اینجا تولیدکننده از یک تابع سفارشی استفاده میکند که پیام را دریافت و یک شماره پارتيشن تولید میکند. سپس این پیام به آن پارتيشن ارسال میشود. این گزینه این امکان را در اختیار اپلیکیشن قرار میدهد تا کنترل کامل روی پارتيشنبندی داشته باشد.
دوام و پایداری
بعد از اینکه Pulsar broker دادههای دریافت شده توسط تولیدکننده را تأیید کرد، باید اطمینان حاصل کند این دادهها هرگز تحت هیچ شرایطی از دست نخواهد رفت. برعکس خیلی دیگر از سیستمهای پیامرسان، پولسار با استفاده از Apache BookKeeper که امکان ذخیرهسازی پایدار با تأخیر کم را میسر میسازد، به دوام و پایداری مورد نظر دست پيدا میکند. وقتی یک Pulsar broker پیامها را دریافت میکند، دادههای این پیام را به چند نود BookKeeper (بر اساس عامل تکرار) ارسال میکند. این نودها داده را درون یک فایل لاگ مینویسند و یک نسخه از آن را روی حافظه کپی میکنند. قبل از اینکه یک نود ارسال را تصدیق کند، این فایل لاگ نوشته میشود تا ذخیرهسازی پایدار انجام شود. با قابلیت اجبار ساخت فایل لاگ حتی در زمان قطع برق نیز دادهها حفظ میشوند. از آنجا که Pulsar broker روی چند نود BookKeeper نوشته میشود، تنها زمانی تأییدیه را به تولیدکننده ارسال میکند که داده با موفقیت ذخیره شده باشد. پولسار این اطمینان را فراهم میکند که حتی در زمان خراب شدن سختافزار، قطع ارتباط با شبکه و سایر شرایط بروز نقص دادهها سالم باقی بمانند.
اثبات کارایی در عمل
در حال حاضر، پولسار توان مورد نیاز برای اپلیکیشنهای بزرگ یاهو مثل Mail, Finance, Sports, Gemini Ads و Sherpa را فراهم میکند. در خیلی از موارد استفاده، تضمين کامل دوام و پایداری (برای مثال به صفر رسیدن دادههای از دست رفته) ضروری است و ملزومات اجرا باید کامل رعایت شود. راهاندازی پولسار از سال 2015 آغاز شد و اکنون در مقیاس وسیع توسط یاهو استفاده میشود. پولسار در سطح جهانی در بیش از 10 مرکز داده با قابلیت تکرار زنجيرهای مستقر شده است. روزانه بیشتر از 100 میلیارد پیام منتشر شده را اداره میکند. بیشتر از 1.4 میلیون تاپیک را ارائه میکند. میانگین زمان تأخیر انتشار توسط پولسار کمتر از 5 میلیثانیه است.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟