Lider Seçimi ve Split-Brain — Ağ Bölününce Kim Karar Verir?
Önce şunu oku: Dağıtık Kilit ve Fencing Token — Kilit Senin Sandığında
30 saniyede özet
Bir kümede yazmaları tek bir lider kabul eder. Ağ bölününce iki taraf da kendini lider sanabilir ve aynı veriye iki farklı geçmiş yazılır. Çözüm iki kural: lider çoğunluk oyuyla seçilir, yazma çoğunluğa ulaşınca onaylanır.
Beş haneli bir köyde bir muhtar var. Bir gün sel köprüyü yıkıyor: iki hane bir kıyıda, üç hane öbür kıyıda kalıyor. İki kıyı da kendi muhtarını seçerse, aynı tarla iki kez satılabilir.
-
Bayt: Hesap defteri beş düğümde tutuluyor. Lider düşerse biri hemen onun yerine geçiyor!
-
Sen: Dün ağ birkaç saniye bölündü. Bir havale onaylanmıştı, ama sonra kayboldu.
-
Bayt: Loglarda aynı anda iki lider görünüyor... ikisi de yazmayı kabul etmiş.
-
Bayt: Yerine geçmek kolay. Zor olan, aynı anda iki kişinin geçmemesi.
Ağ bölününce ne olur?
Bir kümede yazmaları tek bir düğüm kabul eder: lider. Öbürleri ondan düzenli kalp atışıLiderin diğer düğümlere düzenli aralıklarla gönderdiği 'buradayım' mesajı. Gelmezse yeni bir seçim başlar.Sözlükte gör → bekler; gelmezse yeni bir lider seçimiBir kümede yazmaları kabul edecek tek düğümün belirlenmesi. Güvenli olması için düğümlerin çoğunluğunun oyu gerekir.Sözlükte gör → başlar.
Ama kalp atışının kesilmesi liderin öldüğü anlamına gelmez; ağ bölünmüş olabilir. İki taraf da kendi liderini seçerse buna split-brainAğ bölününce iki tarafın da kendi liderini seçip yazması. Birleşince iki farklı geçmiş olur ve biri silinmek zorundadır.Sözlükte gör → denir: iki taraf da yazar ve birleşince bir geçmiş silinmek zorundadır.
Kafam karıştı, daha basit anlat
Ağ bölünürse iki taraf da kendini yetkili sanabilir. İkisi de yazarsa, birleşince birinin yazdıkları silinir.
Split-brain nedir?
Bir düğüm liderden kalp atışı alamıyor. Kesin olarak ne bilir?
Çoğunluk tek kişidir
Yeni lider artık çoğunluk oyuyla seçiliyor: C, D, E oy verdi ve C lider oldu. Ama eski lider A bunu bilmiyor ve yazmaları tek başına onaylamaya devam ediyor. Ağ birleşince A'nın onayladığı havaleye ne olur? Cevabı göster
Silinir. A, C’nin daha yeni bir dönemde seçildiğini görünce liderliği bırakır ve yalnız başına yazdıklarını atar. Müşteri “onaylandı” cevabını almıştı; o cevap yalandı.
Adım adım oku
- Beş hane, bir muhtar.
- Sel köprüyü yıktı: iki kıyı.
- İki muhtar, aynı tarlayı iki kez sattı.
- Kural: muhtar, beş haneden üçüyle seçilir.
RaftBir uzlaşma algoritması: lider çoğunluk oyuyla seçilir, yazma çoğunluk saklayınca onaylanır. etcd ve Kafka KRaft bunu kullanır.Sözlükte gör → iki kuralla bunu önler. Lider çoğunluk oyuyla seçilir ve her seçim bir dönem numarası alır. Bir yazma da ancak düğümlerin çoğunluğu onu sakladıktan sonra onaylanır.
Beş düğümde çoğunluk üçtür ve iki ayrı üçlü aynı anda olamaz. Azınlıkta kalan eski lider, yazmayı üç düğüme ulaştıramadığı için onaylayamaz; müşteri yalan bir “tamam” yerine bir hata alır.
Kafam karıştı, daha basit anlat
Seçim de onay da çoğunlukla. Çoğunluk tek olduğu için iki lider de iki onaylı geçmiş de olamaz.
Beş düğümlü bir kümede lider çoğunluk oyuyla seçiliyorsa neden aynı anda iki seçilmiş lider olamaz?
Raft'ta bir yazma ne zaman onaylanır?
Kendin gör
Beş düğüm, bir ağ bölünmesi
Tohum 987964Oynat ya da adımla: A lider, beş düğüm bağlı.
Şu an ne oldu?
Kalp atışı kesilen kendini lider ilan eder
A lider. Birazdan ağ ikiye bölünecek: A ile B bir tarafta, C, D, E öbür tarafta.
Görevler0/3
Aynı anda iki lider olsunaçık
İpucu
Oy istemeden lider seç.
Tek lider seçilsin, ama onaylanmış bir havale yine de silinsinaçık
İpucu
Seçimi çoğunlukla yap, yazmayı değil.
Onaylanan hiçbir havale kaybolmasınaçık
İpucu
İki kural birden.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. C kalp atışı alamayınca kendini lider ilan etti; iki lider, iki onaylı havale, biri silindi.
- “Çoğunluk oyuyla” seç. Tek seçilmiş lider var, ama eski lider A havale 2’yi yine onayladı ve o havale silindi.
- “Çoğunluk oyu + çoğunluğa yazma” seç. A havale 2’yi onaylayamadı, müşteri hata aldı. Onaylanan hiçbir havale kaybolmadı.
Yeni lider çoğunlukla seçildi, ama eski lider bunu bilmeden yazmaları tek başına onaylamaya devam ediyor. Ne olur?
Raft'ta azınlıkta kalan taraf bölünme boyunca ne yapabilir?
Tuzaklar
Uzlaşmayı kendin yazmak. Raft’ın sınır durumları çoktur. etcd, Consul ya da Kafka’nın KRaft modu gibi bunu zaten yapan sistemleri kullan.
Çift sayıda düğüm. Dört düğümde çoğunluk üçtür; ikiye iki bölünmede hiçbir taraf seçim yapamaz. Beş düğüm, dörtten daha çok arızaya dayanır.
Kafka’da acks=1 ile yetinmek. Lider yazmayı tek başına onaylar ve lider değişince kaybolabilir. Önemli kayıtlar için acks=all ile min.insync.replicas=2 kullan.
Kafam karıştı, daha basit anlat
Uzlaşmayı hazır sistemlere bırak, tek sayıda düğüm kullan, Kafka’da çoğunluk onayı iste.
Neden dört yerine beş düğümlü küme tercih edilir?
Derinleş · Hesap defteri: çoğunluk onayı ve tek liderli zamanlanmış iş 4 dosya · ~83 satır · ilk okumada atlayabilirsin
Kendini sına
Kalp atışı kesilen düğüm, liderin öldüğünden emin olabilir.
Kafka'da acks=1 ile gönderilen bir kayıt neden kaybolabilir?
Aklında kalacak üç şey
- 1 Kalp atışı kesildi diye kendini lider ilan eden düğüm, bölünmede ikinci bir lider demektir. Buna split-brain denir: iki taraf da yazar, birleşince bir geçmiş silinir.
- 2 Raft'ın iki kuralı: lider çoğunluk oyuyla seçilir ve bir yazma ancak çoğunluk onu sakladıktan sonra onaylanır. Çoğunluk tek olduğu için iki lider de iki onaylı geçmiş de olamaz.
- 3 Bedeli, azınlıkta kalan tarafın bölünme boyunca yazamamasıdır. Uzlaşma algoritmasını kendin yazma; Raft kullanan sistemleri (etcd, Kafka KRaft) ve doğru ayarlarını kullan.
4 kart sonraki derste seni bekliyor