Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bu yazıda, büyük sistemlerde yükü birden fazla sunucuya nasıl dağıttığımızı ve klasik yöntemlerin neden bazen yetersiz kaldığını öğreneceksin. Özellikle “consistent hashing” denen yaklaşımın neden ortaya çıktığını ve neyi çözdüğünü net şekilde anlayacaksın.
Şimdi şöyle bir düşün: Elinde bir algoritma var ve bunu bir sunucuda çalıştırıyorsun. İnsanlar gelip bu algoritmayı kullanıyor.
Yani sistem basit:
Aslında bu yapı bir sunucu (server) dediğimiz şey.
Yani şöyle düşün:
Garson gibi çalışıyor. Siparişi alıyor, mutfağa iletiyor, sonra sana geri getiriyor.
Ama bir süre sonra insanlar senin sistemi çok seviyor ve binlerce kişi aynı anda kullanmak istiyor. Tek sunucu artık yetmiyor.
Bu noktada yeni sunucular ekliyorsun.
Artık durum şu:
Buna load balancing (yük dengeleme) denir.
Bunu şöyle hayal edebilirsin:
Tek kasalı bir marketten, 5 kasalı markete geçiyorsun. Ama müşterileri doğru kasaya yönlendirmen gerekiyor.
Sistem genelde şöyle çalışır:
Örnek:
hash(ID) % 4Bu yöntem teoride güzel çalışır çünkü:
Asıl problem burada başlıyor.
Diyelim ki sistem büyüdü ve yeni bir sunucu ekledin.
Önceden:
hash(ID) % 4
Şimdi:
hash(ID) % 5
Ve her şey değişiyor.
Aynı kullanıcı:
Yani neredeyse tüm sistem dağılımı bozuluyor.
Sen de fark etmişsindir ki bu sadece yönlendirme sorunu değil.
Asıl problem cache (önbellek).
Çünkü:
Yani şöyle düşün:
Her seferinde başka doktora gitmek zorunda kalıyorsun. Hiçbirinde geçmiş kayıtların yok.
Bu da:
Burada kritik bir ihtiyaç ortaya çıkıyor:
Yeni sunucu eklendiğinde:
Yani:
İşte burada consistent hashing devreye giriyor.
Temel fikir şu:
Bunu şöyle hayal edebilirsin:
Pizza düşün 🍕
Normal yöntemde:
Consistent hashing’de:
Bu yaklaşım sayesinde:
Yani şöyle düşün:
Yeni çalışan geldi diye tüm şirketi yeniden organize etmiyorsun, sadece küçük bir görev dağılımı yapıyorsun.
Tek sunucudan çok sunuculu sisteme geçtiğinde yük dağıtımı kritik hale gelir. Basit hashing yöntemi başlangıçta işe yarasa da, yeni sunucu eklendiğinde tüm sistemin dağılımını bozarak ciddi performans problemleri yaratır. Özellikle cache kullanımının bozulması, sistemin verimsiz çalışmasına neden olur. Consistent hashing ise bu problemi çözer; veri dağılımını minimum değişiklikle güncelleyerek sistemi stabil, hızlı ve ölçeklenebilir hale getirir.
Bu yazı What is LOAD BALANCING? videosundan ilham alınarak yazılmıştır.