پیامرسانی انتشار/اشتراک چیست؟
پیامرسانی انتشار-اشتراک، یا پیامرسانی pub/sub، یک مدل ارتباط ناهمزمان است که ساخت برنامههای بسیار کاربردی و پیچیده از نظر معماری را در فضای ابری برای توسعهدهندگان آسان میکند. در معماری ابری مدرن، برنامهها به بلوکهای سازنده کوچکتر و مستقل به نام سرویسها تفکیک میشوند. پیامرسانی pub/sub اعلانهای رویداد فوری را برای این سیستمهای توزیعشده فراهم میکند. این روش از ارتباط مقیاسپذیر و قابل اعتماد بین ماژولهای نرمافزاری مستقل پشتیبانی میکند.
پیامرسانی pub/sub چگونه کار میکند؟
سیستم انتشار-اشتراک (pub/sub) دارای چهار جزء اصلی است.
- پیامها: یک پیام، داده ارتباطی ارسال شده از فرستنده به گیرنده است. انواع داده پیام میتواند هر چیزی از رشتهها گرفته تا اشیاء پیچیده باشد که متن، ویدیو، دادههای حسگر، صدا یا سایر محتوای دیجیتال را نشان میدهند.
- موضوعات: هر پیام یک موضوع مرتبط با خود دارد. موضوع مانند یک کانال واسطه بین فرستندگان و گیرندگان عمل میکند. این کانال لیستی از گیرندگانی را که به پیامهای مربوط به آن موضوع علاقه دارند، نگهداری میکند.
- مشترکین: مشترک، دریافتکننده پیام است. مشترکین باید در موضوعات مورد علاقه خود ثبتنام (یا مشترک) شوند. آنها میتوانند عملکردهای مختلفی را انجام دهند یا به صورت موازی کار متفاوتی با پیام انجام دهند.
- ناشران: ناشر، مؤلفهای است که پیامها را ارسال میکند. پیامهایی را در مورد یک موضوع ایجاد میکند و آنها را فقط یک بار برای همه مشترکین آن موضوع ارسال میکند. این تعامل بین ناشر و مشترکین یک رابطه یک به چند است. ناشر نیازی به دانستن اینکه چه کسی از اطلاعاتی که پخش میکند استفاده میکند، ندارد و مشترکین نیز نیازی به دانستن منبع پیام ندارند.
ویژگیهای یک سیستم پیامرسانی pub/sub چیست؟
برنامههای توسعه یافته با الگوی انتشار-اشتراک (pub/sub) دارای منطق برنامه و ارتباط جداگانه هستند. زیرساخت پیامرسانی، تحویل پیام بین ناشران و مشترکین را جدا میکند و به صورت ناهمزمان به مشترکین مختلف پخش میکند.
سیستم ارتباطی pub/sub دارای ویژگیهای اصلی زیر است.
- تحویل Push: پیامرسانی pub/sub هنگام انتشار پیامها در موضوع پیام، اعلانهای رویداد ناهمزمان را فوراً ارسال میکند. هنگامی که پیامی در دسترس باشد، به مشترکین اطلاع داده میشود.
- پروتکلهای تحویل چندگانه: موضوعات به انواع مختلف نقاط پایانی مانند صفهای پیام، توابع بدون سرور، سرورهای HTTP و آدرسهای ایمیل متصل میشوند.
- Fanout (پخش گسترده): این سناریو زمانی اتفاق میافتد که یک پیام به یک موضوع ارسال شود و سپس تکثیر شده و به چندین نقطه پایانی ارسال شود. Fanout اعلانهای رویداد ناهمزمان را فراهم میکند که به نوبه خود امکان پردازش موازی را فراهم میکند.
- فیلتر کردن: ویژگی فیلتر کردن به مشترک این امکان را میدهد که یک خطمشی فیلتر پیام ایجاد کند. بنابراین، آنها فقط اعلانهایی را که به آنها علاقه دارند دریافت میکنند، نه اینکه هر پیامی که در موضوع ارسال میشود را دریافت کنند.
- مالتیپلکسینگ (چندگانه سازی): در برخی موارد، ناشران نیز میتوانند مشترک باشند. میتوانید جریانهای پیام را مالتیپلکس کنید و سیستمهایی ایجاد کنید که به صورت داخلی منسجم به هم متصل میشوند.
مزایای پیامرسانی pub/sub چیست؟
مدل انتشار-اشتراک (pub/sub) معماری مبتنی بر رویداد را فعال میکند که در چندین برنامه مدرن مورد نیاز است. میتوانید از رویدادها برای راهاندازی و برقراری ارتباط بین سرویسهای جدا شده استفاده کنید. یک رویداد، تغییر در وضعیت یا یک بهروزرسانی است، مانند قرار دادن یک مورد در سبد خرید.
پیامرسانی pub/sub مزایای قابل توجهی را برای توسعهدهندگانی که برنامههایی را میسازند که به رویدادهای بیدرنگ متکی هستند، فراهم میکند. برخی از مزایا را در زیر ذکر میکنیم.
- حذف نظرسنجی (Polling): موضوعات پیام، تحویل فوری و مبتنی بر push را امکانپذیر میکنند و نیاز مصرفکنندگان پیام به بررسی دورهای یا نظرسنجی برای اطلاعات و بهروزرسانیهای جدید را از بین میبرند. این امر زمان پاسخ سریعتر را افزایش میدهد و تأخیر تحویل را که میتواند به ویژه در سیستمهایی که تأخیر در آنها قابل تحمل نیست، مشکلساز باشد، کاهش میدهد.
- هدفگیری پویا: الگوی pub/sub کشف سرویسها را آسانتر، طبیعیتر و کمخطاتر میکند. به جای نگهداری لیستی از همتاها تا یک برنامه بتواند پیام ارسال کند، یک ناشر به سادگی پیامها را در یک موضوع ارسال میکند. سپس، هر طرف ذینفع نقطه پایانی خود را در موضوع مشترک میکند و شروع به دریافت این پیامها میکند. چندین مشترک میتوانند تغییر کنند، ارتقا پیدا کنند یا ناپدید شوند و سیستم به صورت پویا تنظیم میشود.
- جداسازی و مقیاسبندی مستقل: Pub/sub نرمافزار را انعطافپذیرتر میکند. ناشران و مشترکین از یکدیگر جدا شده و به طور مستقل از یکدیگر کار میکنند که به شما امکان میدهد آنها را به طور مستقل توسعه و مقیاسبندی کنید. میتوانید تصمیم بگیرید که این ماه سفارشها را به یک روش و ماه بعد به روش دیگری انجام دهید. افزودن یا تغییر عملکرد، تأثیرات موجی را در سراسر سیستم ارسال نمیکند، زیرا pub/sub به شما امکان میدهد نحوه عملکرد همه چیز با هم را تغییر دهید.
- سادهسازی ارتباطات: کد مربوط به ارتباطات و یکپارچهسازی از سختترین کدهایی است که باید نوشته شود. مدل انتشار-اشتراک با حذف تمام اتصالات نقطه به نقطه با یک اتصال واحد به یک موضوع پیام، پیچیدگی را کاهش میدهد. موضوع، اشتراکها را برای تصمیمگیری در مورد اینکه کدام پیامها باید به کدام نقاط پایانی تحویل داده شوند، مدیریت میکند. کالبکهای کمتر منجر به اتصال ضعیفتر و همچنین کدی میشود که نگهداری و گسترش آن آسانتر است.
- ماندگاری: سرویسهای پیامرسانی pub/sub اغلب ماندگاری بسیار بالایی و حداقل یک بار تحویل را با ذخیره نسخههای یک پیام در چندین سرور فراهم میکنند.
- امنیت: موضوعات پیام، برنامههایی را که سعی در انتشار محتوا دارند، احراز هویت میکنند و به شما امکان میدهند از نقاط پایانی رمزگذاری شده برای ایمن کردن پیامها در حین انتقال از طریق شبکه استفاده کنید.
موارد استفاده از پیامرسانی pub/sub چیست؟
موارد استفاده رایج از سیستم پیامرسانی انتشار-اشتراک (pub/sub) را در زیر ذکر میکنیم.
- انجام پردازش ناهمزمان موازی: رویدادهای منتشر شده در یک موضوع پیام میتوانند چندین کارگر را برای انجام همزمان وظایف ضروری اما نامرتبط راهاندازی کنند.
- ارسال هشدارهای برنامه و سیستم: بهروزرسانیهای حیاتی و اعلانهای رویداد ناهمزمان را فوراً به اجزای برنامه آسیبدیده و کاربران خود تحویل دهید.
- مدیریت گردشهای کاری ناهمزمان: انتقال رویدادها بین برنامهها، انتقال دادهها بین مخازن داده، تازهسازی کشهای توزیعشده یا بهروزرسانی رکوردها در سیستمهای تجاری.
- متعادل کردن حجم کاری: دستهبندی وظایف برای پردازش دستهای یا تقسیم یک وظیفه بزرگتر به وظایف کوچکتر و استفاده از صف پیام برای تقسیم کار بین چندین کارگر.
- ثبت در چندین سیستم: ثبت رویدادها برای تجزیه و تحلیل بعدی، ضبط گزارشها برای عملیات و امنیت یا بایگانی برای برآورده کردن الزامات پشتیبانگیری یا انطباق.
- استفاده از Fanout برای تکثیر: تکثیر دادهها بین محیطهای تولید و توسعه یا توسعه و آزمایش با دادههای زنده.
- هماهنگ کردن برنامههای بدون سرور: ارسال اعلانهای رویداد ناهمزمان به توابع توزیعشده و صفهای پیام برای هماهنگ کردن اجزای برنامه بدون سرور شما.
- جریان دادههای اینترنت اشیا (IoT): الگوی pub/sub روشی بسیار قدرتمند برای تعامل دستگاههای اینترنت اشیا (IoT) است. دستگاهها میتوانند به راحتی دادهها را به سیستمهای پشتیبان یا یکدیگر
میتوانند به راحتی دادهها را به سیستمهای پشتیبان یا یکدیگر ارسال کنند.
تفاوت بین صفهای پیام و پیامرسانی pub/sub چیست؟
یک صف پیام شکل دیگری از ارتباط ناهمزمان است که در معماریهای بدون سرور و میکروسرویس استفاده میشود. پیامها در صف ذخیره میشوند تا زمانی که پردازش و حذف شوند. صفهای پیام مستلزم این هستند که فرستنده بداند با چه کسی پیام رد و بدل میکند. ترتیب پیام نیز ممکن است باعث ایجاد گلوگاه در سیستم شود.در مقابل، الگوی انتشار-اشتراک (pub/sub) انعطافپذیری بیشتری را فراهم میکند. چندین مشترک علاقهمند میتوانند پیامها را به طور همزمان و ناهمزمان دریافت کنند. ناشران نیازی به دانستن اینکه مشترکین چه کسانی هستند، ندارند. مدیریت پیام مقیاسپذیرتر و قابل اعتمادتر است و عملکرد بهتری ارائه میدهد.