Rashing Halkası (Consistent Hashing), özellikle **büyük ve dinamik dağıtık sistemlerde** (önbellekler, veritabanları, CDN'ler) kullanılan kritik bir tekniktir. Amacı, sistemdeki **sunucu sayısı değiştiğinde (ekleme/çıkarma) yeniden dağıtılması gereken veri miktarını minimuma indirmektir.** Geleneksel hashing yöntemlerinin yarattığı büyük veri taşınma sorununu çözerek sistemin kesintisiz ve verimli çalışmasını sağlar.
Rashing Halkası Nasıl Çalışır?
Rashing Halkası'in temel çalışma prensibi, hem sunucuları (Node'ları) hem de veri anahtarlarını (Key'leri) mantıksal bir **halka (ring)** üzerine eşlemeye dayanır:
- **Halka (Hash Ring) Kavramı:** Tüm olası hash değerleri (örneğin 0 ile $2^{32}-1$ arası) dairesel bir yapı, yani bir halka, üzerine yayılmış kabul edilir.
- **Sunucuların Eşlenmesi (Virtual Nodes):** Sisteme dahil olan her bir **fiziksel sunucu (Node)**, bir hash fonksiyonu (MD5 veya SHA-1 gibi algoritmalar) kullanılarak bu halka üzerinde birden fazla noktaya eşlenir. Bu sanal noktalara **Sanal Kopyalar (Virtual Nodes/Replicas)** denir. Sanal kopyaların sayısı ne kadar fazlaysa, halka üzerindeki dağılımı o kadar dengeli olur.
- **Anahtarların Atanması (Key Mapping):** Bir veri anahtarı (key) da aynı hash fonksiyonu kullanılarak halka üzerinde bir noktaya eşlenir. Anahtar, halka üzerinde saat yönünde ilerlendiğinde karşılaşılan **ilk sanal kopyaya** atanır.
Neden 'Tutarlı' Adını Alır?
Bu yöntemin en büyük gücü, sunucu havuzunda bir değişiklik olduğunda ortaya çıkar. Bu sayede, sistemin ölçeklenmesi veya bir sunucunun arızalanması, tüm sistemi çökertmek yerine sadece küçük bir veri kümesini etkiler.
Senaryo | Rashing Halkası (Modül İşlemi) | Rashing Halkası (Halka) |
---|---|---|
Sunucu Ekleme | Formül değiştiği için **neredeyse tüm anahtarlar** yeniden eşlenir (yüzde 100'e yakın veri taşınır). | Sadece yeni eklenen sunucunun solundaki halka dilimindeki anahtarlar **yeniden eşlenir**. Veri taşınma miktarı minimumdur. |
Sunucu Çıkarma/Hata | Tüm anahtarların yeniden hesaplanması gerekir. **Büyük çaplı bir veri taşınması** (remapping) zorunludur. | Sadece hata veren sunucuya atanmış olan anahtarlar, halka üzerinde saat yönündeki **bir sonraki sunucuya** geçer. |
Kullanım Alanları ve Avantajları
Temel Avantajları
- **Ölçeklenebilirlik (Scalability):** Yeni sunucular eklerken veya çıkarırken kesinti minimum düzeydedir, bu da sistemin yatay olarak kolayca büyümesini sağlar.
- **Hata Toleransı (Fault Tolerance):** Bir sunucu çökerse, yükü sadece hemen yanındaki (halkadaki bir sonraki) sunuculara paylaştırılır. Bu, diğer sunucuların aşırı yüklenmesini önler.
- **Minimum Veri Hareketi (Reduced Data Churn):** Veri kopyalama ve ağ trafiği büyük ölçüde azalır.
Kullanım Alanları
- **Dağıtık Önbellekleme:** **Memcached** ve **Redis** gibi sistemler, önbellek verilerini birden çok sunucuya tutarlı bir şekilde dağıtmak için kullanır.
- **NoSQL Veritabanları:** **Apache Cassandra** ve **Amazon DynamoDB** gibi sistemlerde, veri parçalama (sharding) ve çoğaltma (replication) için temel algoritmadır.
- **İçerik Dağıtım Ağları (CDN):** İçeriği dünya genelindeki kenar sunucularına (edge servers) eşlemek için kullanılır.