البته درسته consistency رو بصورت یکپارچه نمیتونیم داشته باشیم ولی Eventual Consistency یه جور رویکرد توی سیستمهای توزیعشدهست که سعی میکنه بین ویژگیهای تئوری CAP یه تعادل برقرار کنه، مخصوصاً وقتی بخوایم Availability و Partition Tolerance رو حفظ کنیم.
داستان چیه؟
فرض کن یه سیستم داریم که بهجای اینکه بلافاصله دادهها رو در همه سرورها هماهنگ کنه، یعنی وقتی تغییراتی توی یه سرور ایجاد میشه، این تغییرات به مرور زمان توی بقیه سرورها پخش میشن.
تا وقتی که این همگامسازی کامل بشه، ممکنه بعضی از سرورها اطلاعات قدیمی رو نشون بدن، ولی در نهایت همه به یه دادهی یکسان میرسن.
کجاها استفاده میشه؟
اپلیکیشنهایی مثل شبکههای اجتماعی، پیامرسانها یا سیستمهای فروشگاهی آنلاین، مهمتره که سیستم همیشه در دسترس باشه و سریع جواب بده، حتی اگه گاهی دادهها با تأخیر هماهنگ بشن.
فرض کن توی یه پیامرسان، یه پیام میفرستی:
تو سرور اول (نزدیکترین سرور به فرستنده)، پیام ذخیره میشه.
همون موقع دوستت پیام رو میبینه اما سرورهای دیگه هنوز پیام رو دریافت نکردن. بعد از چند ثانیه یا دقیقه، سرورهای دیگه هم پیام رو میگیرن و هماهنگ میشن.
این میشه یکپارچگی نهایی. شاید دوستت پیام رو زودتر ببینه، ولی در نهایت همه سرورها یه وضعیت یکسان پیدا میکنن.
خوب یا بد؟
🟢 خوبی: سرعت و دسترسپذیری سیستم بالاست.
🔴 بدی: اگه بخوای مطمئن بشی دادهها بلافاصله هماهنگن (مثل بانکها)، این روش خیلی مناسب نیست.
خلاصه، Eventual Consistency یعنی "بالاخره درست میشه، ولی یه کم صبر کن😅"
داستان چیه؟
فرض کن یه سیستم داریم که بهجای اینکه بلافاصله دادهها رو در همه سرورها هماهنگ کنه، یعنی وقتی تغییراتی توی یه سرور ایجاد میشه، این تغییرات به مرور زمان توی بقیه سرورها پخش میشن.
تا وقتی که این همگامسازی کامل بشه، ممکنه بعضی از سرورها اطلاعات قدیمی رو نشون بدن، ولی در نهایت همه به یه دادهی یکسان میرسن.
کجاها استفاده میشه؟
اپلیکیشنهایی مثل شبکههای اجتماعی، پیامرسانها یا سیستمهای فروشگاهی آنلاین، مهمتره که سیستم همیشه در دسترس باشه و سریع جواب بده، حتی اگه گاهی دادهها با تأخیر هماهنگ بشن.
فرض کن توی یه پیامرسان، یه پیام میفرستی:
تو سرور اول (نزدیکترین سرور به فرستنده)، پیام ذخیره میشه.
همون موقع دوستت پیام رو میبینه اما سرورهای دیگه هنوز پیام رو دریافت نکردن. بعد از چند ثانیه یا دقیقه، سرورهای دیگه هم پیام رو میگیرن و هماهنگ میشن.
این میشه یکپارچگی نهایی. شاید دوستت پیام رو زودتر ببینه، ولی در نهایت همه سرورها یه وضعیت یکسان پیدا میکنن.
خوب یا بد؟
🟢 خوبی: سرعت و دسترسپذیری سیستم بالاست.
🔴 بدی: اگه بخوای مطمئن بشی دادهها بلافاصله هماهنگن (مثل بانکها)، این روش خیلی مناسب نیست.
خلاصه، Eventual Consistency یعنی "بالاخره درست میشه، ولی یه کم صبر کن😅"