برنامه نویسی

MQ: چگونه می توان به تراشیدن اوج و پر کردن دره دست یافت؟

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

دو روش ارتباطی مشترک وجود دارد:

شرح تصویر

  • تماس مستقیم: از طریق یک چارچوب RPC ، سیستم بالادست مستقیماً سیستم پایین دست را فراخوانی می کند.

شرح تصویر

  • MQ Push: سیستم بالادست پیام هایی را به MQ ارسال می کند و MQ پیام ها را به سیستم پایین دست سوق می دهد.

آیا این روش ها می توانند ترافیک ذخیره یا به اوج تراشیدن و پر کردن دره را بدست آورند؟

شماره چه با استفاده از “تماس های مستقیم” یا “فشار MQ” ، هر دو دارای یک اشکال هستند: گیرنده پیام پایین دست نمی تواند ترافیک وارد شده به سیستم خود را کنترل کند. اگر سیستم بالادست سرعت را محدود نکند ، می تواند سیستم پایین دست را تحت الشعاع قرار دهد.

مثال: سناریوی جشنواره دو 11 خرید

  • سیستم بالادست: عملکرد قرار دادن سفارش را آغاز می کند.
  • سیستم پایین دست: منطق کسب و کار زیر را تکمیل می کند (بررسی موجودی ، یخبندان موجودی ، بررسی تعادل ، فریزر تعادل ، تولید سفارش ، کسر تعادل ، کسر موجودی ، تولید معامله ، ذوب تراز ، ذوب موجودی).

عملیات قرار دادن سفارش بالادست ساده است و 10،000 درخواست در هر ثانیه ارسال می کند. منطق پایین دست پیچیده است و فقط 2،000 درخواست در ثانیه را پردازش می کند. اگر سیستم بالادست درخواست هایی را بدون لرزش ارسال کند ، می تواند سیستم پایین دست را تحت الشعاع قرار دهد و باعث خرابی سیستم شود.

چگونه می توان از بیش از حد سیستم پایین دست جلوگیری کرد؟

برای جلوگیری از سقوط سیستم ، دو استراتژی بهینه سازی مشترک وجود دارد:

  • بافر در صف بالادست ، نرخ درخواست های ارسال شده را محدود می کند.
  • بافر در صف پایین دست ، محدود کردن میزان اعدام.

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

آیا MQ می تواند به بافر ترافیکی دست یابد؟

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

شرح تصویر

چه اتفاقی می افتد اگر سیستم بالادست ترافیک زیادی را ارسال کند؟

اگر سیستم بالادست ترافیک بیش از حد را ارسال کند ، حالت کشش ارائه شده توسط MQ می تواند با فعال کردن پیام ها با سرعت کنترل شده ، از سیستم پایین دست محافظت کند. اما این سؤال را ایجاد می کند: آیا پیام ها در صف MQ جمع می شوند؟

در حالت کشش ، MQ-Client پایین دست می تواند پیام ها را در دسته ها بدست آورد. با این حال ، برای به حداکثر رساندن توان ، سیستم پایین دست باید بهینه سازی شود. به عنوان مثال ، نوشتن دسته ای می تواند برای بهبود راندمان پردازش استفاده شود.

پایان

  1. حالت کشیدن MQ-Client ، امکان کشیدن پیام دوره ای یا دسته ای را فراهم می کند ، که به صاف کردن ترافیک کمک می کند و محافظت از خود برای سیستم پایین دست را ارائه می دهد (این کار MQ است).
  2. برای افزایش توان کلی ، سیستم پایین دست باید بهینه سازی هایی مانند پردازش دسته ای را اجرا کند (این کار گیرنده پیام است).

چرا نمی توان بازپرداخت ها را بر روی دو برابر 11 پردازش کرد؟ زیرا برای کل فرآیند معامله ، فقط نیمه اول به پایان رسیده است. نیمه دوم ، با MQ ، هنوز در پایگاه داده ذخیره می شود و منتظر پردازش سیستم های پایین دست است.

نوشته های مشابه

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

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

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