تحمل خطا و تکثیر
تحمل خطا و تکثیر، تکنیکهایی هستند که به وسیله آنها سیستمهای توزیعشده، علیرغم خرابی برخی از اجزایشان، به ارائه خدمات صحیح ادامه میدهند.
Definition
تحمل خطا، توانایی یک سیستم برای ادامه برآورده کردن مشخصات خود، علیرغم وجود خطا در برخی از اجزا است؛ تکثیر—نگهداری چندین نسخه از محاسبات یا دادهها—مکانیسم اصلی برای دستیابی به آن است که نیازمند پروتکلهایی برای حفظ سازگاری مناسب نسخهها میباشد.
Scope
این حوزه شامل افزونگی به عنوان اساس تحمل خطا، رویکرد تکثیر ماشین حالت برای ساخت سرویسهای قابل اعتماد، تکثیر دادهها و مدلهای سازگاری که دادههای تکثیر شده را مدیریت میکنند، قضیه CAP و مبادله سازگاری-دسترسی در شرایط پارتیشنبندی، و تکنیکهای بازیابی با بازگشت به عقب مبتنی بر نقطهگذاری و ثبت وقایع است. این حوزه، نظریه اجماع و ترتیبدهی را به ساخت سیستمهای قابل اعتماد مرتبط میکند.
Sub-topics
Core questions
- چگونه افزونگی، اجزای غیرقابل اعتماد را به یک سرویس قابل اعتماد تبدیل میکند؟
- تکثیرها باید چه سازگاری را حفظ کنند و هر سطح چه هزینهای از نظر تأخیر و دسترسی دارد؟
- چه چیزی اساساً در صورت پارتیشنبندی شبکه قابل تضمین نیست؟
- چگونه یک سیستم میتواند پس از خرابیها به یک حالت سازگار بازیابی شود؟
Key theories
- تکثیر ماشین حالت
- یک سرویس قطعی با اجرای نسخههای یکسان که دنباله یکسانی از دستورات را به همان ترتیب پردازش میکنند، تحمل خطا پیدا میکند، به طوری که نسخههای باقیمانده میتوانند خرابی سایرین را پوشش دهند.
- قضیه CAP
- هنگامی که شبکه میتواند پارتیشنبندی شود، یک سرویس تکثیر شده نمیتواند به طور همزمان سازگاری قوی و دسترسی را تضمین کند؛ طراحان باید انتخاب کنند که کدام یک را در طول یک پارتیشن فدا کنند، مبادلهای که توسط گیلبرت و لینچ رسمی شد.
- بازیابی با بازگشت به عقب
- با نقطهگذاری دورهای حالت و ثبت اختیاری پیامها، یک سیستم میتواند فرآیندهای خراب شده را به یک خط بازیابی سازگار بازگرداند و به جلو بازپخش کند، و بدون راهاندازی مجدد کل محاسبات، بازیابی شود.
Clinical relevance
تکثیر و تحمل خطا همان چیزی است که ذخیرهسازی ابری را پایدار و خدمات را با دسترسی بالا میکند؛ مدلهای سازگاری و مبادلات CAP که در اینجا مورد مطالعه قرار میگیرند، مستقیماً تضمینهای ارائه شده توسط پایگاههای داده، انبارهای اشیاء و سرویسهای هماهنگسازی را که در همه جا در تولید استفاده میشوند، تعیین میکنند.
History
آموزش اشنایدر در سال 1990، رویکرد ماشین حالت به تکثیر را مدون کرد؛ حدس CAP بروئر (2000)، که توسط گیلبرت و لینچ در سال 2002 اثبات شد، بحث سازگاری-دسترسی را که دوران NoSQL را شکل داد، چارچوببندی کرد؛ و بررسیهایی مانند بررسیهای النوزاهی و همکاران، دههها تحقیق در زمینه بازیابی با بازگشت به عقب را یکپارچه ساخت.
Debates
- سازگاری قوی در مقابل سازگاری نهایی
- سازگاری قوی استدلال برنامه را ساده میکند اما دسترسی را محدود کرده و تأخیر را در شرایط پارتیشنبندی افزایش میدهد؛ سازگاری نهایی دسترسی را به حداکثر میرساند به قیمت آشکار کردن عدم توافق موقت، و انتخاب صحیح به معناشناسی برنامه بستگی دارد.
Key figures
- Fred Schneider
- Leslie Lamport
- Eric Brewer
- Seth Gilbert
- Nancy Lynch
Related topics
Seminal works
- schneider1990
- gilbert2002
- elnozahy2002
Frequently asked questions
- آیا تکثیر همیشه قابلیت اطمینان را بهبود میبخشد؟
- فقط در صورتی که نسخهها سازگار نگه داشته شوند و به طور مستقل خراب شوند. نسخههای با هماهنگی ضعیف میتوانند واگرا شده و دادههای متناقض ارائه دهند، و خرابیهای همبسته (برق مشترک، اشکالات نرمافزاری) افزونگی را از بین میبرند، بنابراین تکثیر باید با پروتکل سازگاری مناسب همراه باشد.