امروز میریم ادامه قوانین مهندسی نرم افزار رو بررسی کنیم و یک کانسپت بسیار جذاب در سیستم های توزیع شده رو بررسی میکنیم
قضیهی CAP (Consistency – Availability – Partition Tolerance)
میگه تو سیستمهای توزیع شده نمیتونی هر سه تا ویژگی رو همزمان بهطور کامل داشته باشی: اینکه همه نودها همیشه کانسیستنت باشه دیتای روشون ، سیستم همیشه در دسترس باشه و هر درخواست جواب بگیره، و حتی وقتی ارتباط بین سرورها قطع میشه (partition) سیستم همچنان کار کنه.
چون قطعی شبکه توی سیستمهای واقعی اجتنابناپذیره، عملاً باید موقع مشکل بین Consistency و Availability یکی رو انتخاب کنی. مثلاً MongoDB بیشتر سمت Consistency + Partition Tolerance میره؛ یعنی اگر بین سرورها مشکل پیش بیاد، ترجیح میده بعضی درخواستها رو جواب نده تا مطمئن بشه دادهها دقیق و یکسان میمونن. در مقابل، Cassandra بیشتر سمت Availability + Partition Tolerance میره؛ یعنی همیشه به درخواستها جواب میده حتی اگر موقتاً بعضی نودها دادههای متفاوت یا قدیمی داشته باشن، و بعداً اونها رو هماهنگ میکنه.
#lawsofsoftwareengineering
@codehalics | کدهالیک
Post #542
769

- 👍 5