منبع یابی رویداد-Event sourcing چیست؟

منبع یابی رویداد-Event sourcing چیست؟

مدت مطالعه : 3 دقیقه

22 اردیبهشت 1402

منبع‌یابی رویداد(Event sourcing) یک الگوی معماری نرم افزار است که در سال های اخیر به ویژه در حوزه سیستم های توزیع شده محبوبیت پیدا کرده است. این الگو شامل ثبت هر تغییر یا رویدادی است که در یک سیستم رخ می‌دهد، بر خلاف سیستم های فعلی که فقط آخرین وضعیت سیستم را نگهداری می‌کنند. منبع‌یابی رویداد با ذخیره‌سازی سلسله مراتب رویدادها، سیستم را قادر می‌سازد تا در هر نقطه از تاریخچه خود بازسازی شود، و یک دنباله حسابرسی کامل از هر تغییری که رخ داده است ارائه می‌کند.

منبع‌یابی رویداد رویکردی برای ثبت همه تغییرات یک سیستم است. این رویدادها نشان دهنده تغییراتی است که در وضعیت یک سیستم رخ می دهد. با هر تغییر وضعیت در سیستم، گزارش مربوط به آن در یک لاگ رویداد(event log) یا پایگاه داده ذخیره می شود. منبع‌یابی رویداد به جای ذخیره وضعیت فعلی سیستم، توالی رویدادهایی را که منجر به وضعیت فعلی شده است را ثبت می کند.

 

مزایای منبع‌یابی رویداد

منبع‌یابی رویداد، یک مسیر حسابرسی کامل از تمام تغییراتی که در سیستم رخ داده است را در دسترس ما قرار می‌دهد. این امر اشکال زدایی و تجزیه و تحلیل سیستم را آسان میکند. 

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

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

باتوجه به اینکه رویداد ها بر اساس موجودیت های سیستم ثبت می‌شوند، منبع‌یابی رویداد یک رویکرد منطبق بر اصول طراحی دامنه محور(DDD) خواهد بود. این رویکرد استدلال در مورد سیستم و رفتار موجودیت ها را آسان‌تر می‌کند و کمک می‌کند تا سیستم با نیازهای کسب‌وکار همسو شود.

 

چالش های منبع‌یابی رویداد

در حالی که منبع‌یابی رویداد مزایای بسیاری را به همراه دارد، چالش هایی نیز دارد که باید در نظر گرفته شوند. یک چالش این است که منبع‌یابی رویداد می تواند منجر به درجه بالاتری از پیچیدگی در سیستم شود. زیرا برای مدیریت رویدادها و پردازش آنها به زیرساخت پردازشی بیشتری نیاز دارد. علاوه بر این، منبع‌یابی رویداد می‌تواند به فضای ذخیره‌سازی بیشتری نیاز داشته باشد، زیرا رویدادها در گذر زمان انباشته می‌شوند.

چالش دیگر این است که منبع‌یابی رویداد نیازمند تغییرات قابل توجهی در نحوه مدل‌سازی و ذخیره‌سازی داده ها خواهد بود. از آنجا که رویدادها جدا از وضعیت سیستم ذخیره می شوند، ممکن است لازم باشد که ساختارهای داده بیشتری برای مدیریت رویدادها و روابط آنها با وضعیت سیستم ایجاد شود.

 

استفاده از منبع‌یابی رویداد در سیستم های توزیع شده

منبع‌یابی رویداد در سیستم های توزیع شده که نیاز به انعطاف پذیری بالایی وجود دارد، مناسب است. در یک سیستم توزیع‌شده، رویدادها را می‌توان در مکان‌های متعددی ثبت و پردازش کرد، که امکان افزونگی و تحمل خطا را فراهم می‌کند. 

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

علاوه بر این، ممکن است لازم باشد از منبع‌یابی رویداد در ترکیب با الگوهای دیگر، مانند تفکیک مسئولیت پرس و جو فرمان (CQRS) و معماری رویداد محور (EDA) استفاده شود تا از مقیاس پذیری و پاسخگویی سیستم اطمینان حاصل شود.

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

روش دیگر استفاده از پایگاه داده توزیع شده، مانند Apache Cassandra یا CockroachDB، برای ذخیره تاریخچه رویداد ها است. در این رویکرد، رویدادها به صورت توزیع شده ذخیره می شوند و در دسترس بودن و مقیاس پذیری بالایی را فراهم می کنند.

 

صرف نظر از روش پیاده سازی، مهم است که تأثیری را که منبع‌یابی رویداد بر معماری کلی سیستم خواهد داشت در نظر گرفت. افزایش پیچیدگی و الزامات ذخیره‌سازی منابع یابی رویداد باید با مزایای احتمالی آن مقایسه شوند تا تصمیم درست در رابطه با بکارگیری این رویکرد اتخاذ شود.

 

  • اشتراک گذاری:
محمدرضا باباخانی
محمدرضا باباخانی

من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که می‌نویسم بدردتون بخوره.

آخرین مطالب

سرویس مش؛ ساده سازی ارتباطات میکروسرویس و افزایش رؤیت پذیری

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

اهمیت محاسبات لبه یا Edge Computing

ا توجه به سرعت تحول فناوری، یکی از مفاهیمی که توجه زیادی را به خود جلب کرده و نحوه تعامل ما با سیستم های دیجیتال را تغییر می دهد، محاسبات لبه (Edge Computing) است.

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

معماری رویداد محور (EDA) یک الگوی طراحی نرم افزار است که در توسعه نرم افزار های مدرن به طور چشمگیری محبوب شده است. در این معماری، جریان داده ها با وقوع رویدادها تعیین می شود. بر خلاف سیستم های متمرکز سنتی که دائماً در حال بررسی وضعیت جدید هستند. معماری رویداد محور به ویژه برای سیستم هایی مفید است که به پردازش حجم زیادی از داده ها بصورت بلادرنگ(real-time) نیاز دارند.

برچسب های مرتبط

ثبت دیدگاه