Hata Toleransı ve Çoğaltma
Hata toleransı ve çoğaltma, dağıtık sistemlerin bazı bileşenlerinin arızalanmasına rağmen doğru hizmet sunmaya devam etmesini sağlayan tekniklerdir.
Tanım
Hata toleransı, bir sistemin bazı bileşenlerindeki arızalara rağmen şartnamesini karşılamaya devam etme yeteneğidir; hesaplamanın veya verinin birden çok kopyasını sürdürme olan çoğaltma (replication), bunu başarmak için kullanılan temel mekanizmadır ve kopyaları uygun şekilde tutarlı tutmak için protokollere ihtiyaç duymaktadır.
Kapsam
Bu alan, hata toleransının temeli olarak yedekliliği, güvenilir hizmetler oluşturmaya yönelik durum makinesi çoğaltma yaklaşımını, veri çoğaltmayı ve çoğaltılmış verileri yöneten tutarlılık modellerini, CAP teoremini ve bölüntüler altındaki tutarlılık-erişilebilirlik ödünleşimini, ayrıca kontrol noktası oluşturma (checkpointing) ve günlükleme (logging) tabanlı geri alma-kurtarma (rollback-recovery) tekniklerini kapsamaktadır. Uzlaşma (consensus) ve sıralama (ordering) teorisini güvenilir sistemlerin inşasıyla ilişkilendirmektedir.
Alt konular
Temel sorular
- Yedeklilik, güvenilmez bileşenleri nasıl güvenilir bir hizmete dönüştürmektedir?
- Kopyalar hangi tutarlılığı sürdürmelidir ve her seviyenin gecikme ve erişilebilirlik açısından maliyeti nedir?
- Ağ bölünebildiğinde temel olarak nelerin garanti edilmesi imkansızdır?
- Bir sistem, arızalardan sonra tutarlı bir duruma nasıl kurtarılabilir?
Temel kuramlar
- Durum makinesi çoğaltması
- Deterministik bir hizmet, aynı komut dizisini aynı sırada işleyen özdeş kopyalar çalıştırılarak hata toleranslı hale getirilir, böylece hayatta kalan kopyalar diğerlerinin arızasını gizleyebilmektedir.
- CAP teoremi
- Ağ bölünebildiğinde, çoğaltılmış bir hizmet aynı anda güçlü tutarlılık ve erişilebilirliği garanti edemez; tasarımcılar, bir bölüntü sırasında hangisini feda edeceklerini seçmek zorundadırlar, bu ödünleşim Gilbert ve Lynch tarafından resmileştirilmiştir.
- Geri alma kurtarma
- Durumu periyodik olarak kontrol noktalarına kaydederek ve isteğe bağlı olarak mesajları günlükleyerek, bir sistem başarısız süreçleri tutarlı bir kurtarma hattına geri alabilir ve ileriye doğru tekrar oynatarak tüm hesaplamayı yeniden başlatmadan kurtarma sağlayabilir.
Klinik önem
Çoğaltma ve hata toleransı, bulut depolamanın dayanıklı ve hizmetlerin yüksek erişilebilir olmasını sağlayan unsurlardır; burada incelenen tutarlılık modelleri ve CAP ödünleşimleri, üretimde her yerde kullanılan veritabanları, nesne depoları ve koordinasyon hizmetleri tarafından sunulan garantileri doğrudan belirlemektedir.
Tarihçe
Schneider'ın 1990 tarihli ders kitabı, çoğaltmaya yönelik durum makinesi yaklaşımını kodlamıştır; Brewer'ın 2000 yılındaki CAP varsayımı, 2002'de Gilbert ve Lynch tarafından kanıtlanarak NoSQL dönemini şekillendiren tutarlılık-erişilebilirlik tartışmasını çerçevelemiştir; Elnozahy ve meslektaşlarının çalışmaları gibi derlemeler ise onlarca yıllık geri alma-kurtarma araştırmalarını bir araya getirmiştir.
Tartışmalar
- Güçlü ve nihai tutarlılık
- Güçlü tutarlılık, uygulama mantığını basitleştirmekte ancak bölüntüler altında erişilebilirliği sınırlamakta ve gecikmeyi artırmaktadır; nihai tutarlılık, geçici anlaşmazlığı ortaya çıkarma pahasına erişilebilirliği en üst düzeye çıkarmaktadır ve doğru seçim uygulama semantiğine bağlıdır.
Öne çıkan isimler
- Fred Schneider
- Leslie Lamport
- Eric Brewer
- Seth Gilbert
- Nancy Lynch
İlgili konular
Temel eserler
- schneider1990
- gilbert2002
- elnozahy2002
Sıkça sorulan sorular
- Çoğaltma her zaman güvenilirliği artırır mı?
- Yalnızca kopyalar tutarlı tutulur ve bağımsız olarak arızalanırsa. Kötü koordine edilmiş kopyalar farklılaşabilir ve çelişkili veriler sunabilir; ilişkili arızalar (paylaşılan güç, yazılım hataları) yedekliliği boşa çıkarır, bu nedenle çoğaltma doğru tutarlılık protokolüyle eşleştirilmelidir.