Saeid Noormohammadi
Saeid Noormohammadi
خواندن ۲ دقیقه·۲ ماه پیش

بهینه سازی Event-Driven Processing - پترن های کلیدی در پردازش رویدادها

در سیستم های Event-Driven نحوه پردازش و مسیریابی رویدادها بسیار مهم است. برای مدیریت جریان رویدادها و پردازش کارآمد آن ها مجموعه ای از پترن ها وجود دارد که با توزیع کردن بار پردازشی از تکرار و هدر رفتن منابع جلوگیری کرده و کارایی سیستم را در برابر حجم بالای رویدادها و پیچدگی ها افزایش می دهند. این پترن ها به ما کمک می کنند که رویدادها را به شیوه های خاص خود دستکاری و مدیریت کنیم.

پترن ها
کپی کننده (Copier):
زمانی استفاده می شود که نیاز داریم یک رویداد را به چندین نسخه کپی کنیم و به صورت موازی به چندین سرویس ارسال کنیم. برای مثال زمانی که نیاز به انجام عملیات مستقل رو یک رویداد توسط چندین سرویس داریم کاربرد دارد. یک سفارش در دیجی کالا ثبت شده و دیجی کالا این پیام را به سرویس های موجودی و پرداخت ارسال می کند.
فیلتر (Filter): زمانی استفاده می شود که بخواهیم فقط رویدادهایی را که شرایط خاصی دارند به سرویس ها بعدی ارسال کنیم و یکسری از آن ها را نادیده بگیریم. برای مثال فرض کنید تو نوبیتکس فقط می خواهیم تراکنش هایی که بیش از ۱۰ دلار هستند را برای سرویس ریپورت ارسال کنیم. در اینجا از فیلتر برای ارسال و حذف تراکنش ها استفاده می کنیم.
تقسیم کننده (Splitter): زمانی استفاده می شود که یک رویداد شامل چند بخش داده است و نیاز است که این بخش ها را از هم جدا کرده و هر بخش را به صورت مستقل پردازش کنیم. معمولا در سیستم هایی که پیام های پیچیده و چند بخشی ارسال می کنند کاربرد دارد(برای مثال یک پیام سفارش شامل چندین محصول مختلف است که هر کدام از آن ها نیاز به پردازش متفاوت دارد).
شاردینگ (Sharder): برای توزیع کردن یک جریان از رویدادها بین چندین سیستم مختلف استفاده می شود. برای مثال سیستمی داریم که تعداد زیادی پیام دریافت می کند, می توانیم با استفاده از sharder بر اساس یک فیلد مشخص(مثل نام, شماره) پیام ها را به شکل یکسان بین سیستم ها توزیع کنیم.
ادغام کننده (Merger): زمانی کاربرد دارد که چندین رویداد از منابع مختلف ارسال شده اند, آن ها باهم ترکیب شده تا به صورت یک پیام واحد پردازش شوند. زمانی که اطلاعات از منابع مختلف ترکیب می شوند استفاده می شود. برای مثال فرض کنید اطلاعات یک مشتری از سرویس های مختلف مثل کاربرها, سفارشات و... جمع آوری می شود و ما نیاز داریم که این اطلاعات در قالب یک پیام واحد پردازش کنیم.

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

event driven
شاید از این پست‌ها خوشتان بیاید