معماری رویدادمحور چیست؟#

به جای اینکه یک سرویس مستقیماً سرویس دیگر را فراخوانی کرده و منتظر پاسخ بماند، به محض رخ دادن یک اتفاق (مثل OrderPlaced)، آن را به عنوان یک رویداد در سیستم فریاد می‌زند. بقیه سرویس‌ها (انبار، فاکتور، پیامک) که به این موضوع علاقه‌مند هستند، پیام را دریافت کرده و کار خود را انجام می‌دهند.

یک تشبیه روزمره#

خبرگزاری رادیویی؛ ایستگاه رادیویی خبر وقوع بارندگی را در شهر اعلام می‌کند. رانندگان تاکسی زنجیر چرخ می‌بندند و عابران چتر باز می‌کنند، بدون اینکه رادیو تک‌تک با آنها تماس تلفنی بگیرد!

مزایای عمده#

  • جداسازی کامل سرویس‌ها (Decoupling) و استقلال تیمی
  • تاب‌آوری بالا؛ قطعی سرویس پیامک مانع ثبت سفارش نمی‌شود
  • امکان مقیاس‌پذیری افقی فوق‌العاده با صف‌های کافکا و RabbitMQ