معماریهای رویداد محور در AWS – انجمن DEV

در این پست، اجزای اصلی یک معماری رویداد محور را مرور خواهیم کرد و سرویسهای AWS را که در معماریهای رویداد محور مناسب هستند، بررسی میکنیم.
چیست؟
معماری رویداد محور (EDA) سیستمی از اجزای جفت شده آزاد را نشان می دهد که اطلاعات را بین یکدیگر به طور ناهمزمان از طریق رویدادها مبادله می کنند. یک رویداد نشان دهنده تغییر وضعیت است (به عنوان مثال فرم ثبت نام ارسال شده است، رزرو انجام شده است).
در معماری های سنتی درخواست-پاسخ، فرستنده درخواستی را ارسال می کند و قبل از حرکت به کار بعدی منتظر پاسخ می ماند. علاوه بر این، فرستنده و گیرنده مستقیماً تحت تأثیر هر گونه خرابی از هر طرف قرار می گیرند، به عنوان مثال اگر در گیرنده نقصی وجود داشته باشد، فرستنده هیچ گزینه ای برای نحوه برقراری ارتباط و ارسال درخواست ندارد.
در معماری رویداد محور، مؤلفه ای که یک رویداد را ایجاد می کند، می تواند بلافاصله به کار بعدی خود ادامه دهد. سپس اجزای مختلف سیستم می توانند به رویداد منتشر شده واکنش نشان دهند.
چگونه کار می کند؟
معماری رویداد محور مبتنی بر ارتباط ناهمزمان بین اجزای سیستم از طریق رویدادها است. رویداد تغییر ناپذیر است، به این معنی که رویداد پس از ایجاد آن قابل تغییر نیست. هر بار که تغییری در وضعیت موجودیت ایجاد می شود، یک رویداد جدید ایجاد می شود. با رویدادهای تغییرناپذیر در یک سیستم توزیع شده، هیچ تغییری در بین اجزا وجود ندارد تا هماهنگ باشند. رویدادها مشاهده می شوند، نه هدایت. مؤلفهای که رویدادی را منتشر میکند، مقصد خاصی یا آگاهی از مؤلفههای پاییندستی که ممکن است رویداد را مصرف کنند، ندارد.
معماری رویداد محور از تولیدکنندگان رویداد، روترهای رویداد و مصرف کنندگان رویداد تشکیل شده است:
-
تولیدکنندگان رویداد رویدادها را در روتر منتشر می کنند.
-
کارگزاران رویداد بین تولیدکنندگان و مصرف کنندگان میانجیگری می کنند.
-
مصرف کنندگان رویداد اجزای پایین دستی هستند که به رویدادها واکنش نشان می دهند.
کارگزار رویداد رویدادها را دریافت می کند، آنها را در یک صف یا جریان رویداد ذخیره می کند و آنها را برای مصرف در سایر اجزای سیستم فراهم می کند.
تولیدکنندگان و مصرفکنندگان از هم جدا شدهاند که به آنها اجازه میدهد بهطور مستقل مقیاسبندی، بهروزرسانی و مستقر شوند. تولید کننده نمی داند کدام مصرف کنندگان، در صورت وجود، به رویدادها گوش می دهند. مصرف کنندگان می توانند رویداد را طبق برنامه زمانی خود پردازش کنند. مصرف کنندگان نیز از یکدیگر جدا شده اند و هر مصرف کننده ای همه وقایع را می بیند. این برخلاف معماری پیام محور است که در آن یک پیام برای یک مصرف کننده در نظر گرفته شده و پس از مصرف حذف می شود.
معماری های رویداد محور در AWS
در هسته هر معماری رویداد محور، واسطه رویداد است که می تواند یک روتر رویداد یا یک جریان رویداد باشد. برای روترهای رویداد دو نوع اصلی وجود دارد: اتوبوس های رویداد و موضوعات رویداد. در AWS، این مؤلفه ها توسط پل رویداد آمازون به عنوان اتوبوس رویداد و سرویس اطلاع رسانی ساده آمازون (SNS) به عنوان موضوع رویداد نشان داده می شوند.
EventBridge یک سرویس اتوبوس رویداد است. قوانینی را برای مسیریابی رویدادها از منابع رویداد به اهداف مختلف اعمال می کند. اهداف میتوانند شامل سرویسهای AWS مانند AWS Lambda، Step Functions و Amazon Kinesis یا هر نقطه پایانی HTTP از طریق مقاصد EventBridge API باشند.
SNS سرویسی است که امکان انتشار پیامها از یک برنامه را فراهم میکند و بلافاصله آنها را به مشترکین یا سایر برنامهها تحویل میدهد. ناشران با ارسال پیام به موضوعی که یک نقطه دسترسی منطقی و کانال ارتباطی است، به صورت ناهمزمان با مشترکین ارتباط برقرار می کنند. مشتریان می توانند در موضوع SNS مشترک شوند و پیام های منتشر شده را دریافت کنند.
برای پخش رویداد، Amazon Kinesis Data Streams را می توان به عنوان یک سرویس پخش رویداد استفاده کرد. این یک سرویس بسیار مقیاس پذیر است که به چندین مصرف کننده امکان خواندن از جریان را می دهد و پردازش دسته ای را به جای یک رویداد فردی در یک زمان ارائه می دهد.
در اینجا میتوانید جزئیات بیشتری در مورد معماریهای رویداد محور، معماریهای رویداد محور در برنامههای بدون سرور، ساخت میکروسرویسهای رویداد محور و مزایای مهاجرت به معماری رویداد محور بیابید.