Pasta Dağıtılmış Hash Tablosunu uygulamaya çalışıyorum, ancak bazı şeyler anlayışımdan kaçıyor. Birinin netleşebileceğini umuyordum.
Yasal Uyarı : Ben bir bilgisayar bilimi öğrencisi değilim. Hayatımda tam olarak iki bilgisayar bilimi dersi aldım ve hiçbiri uzaktan karmaşık bir şeyle ilgilenmedim. Yıllarca yazılımla çalıştım, bu yüzden kafamı fikirlerin etrafına sarabilirsem, uygulama görevinde olduğumu hissediyorum. Bu yüzden bariz bir şeyi kaçırmış olabilirim.
Yazarların yayınladığı makaleyi okudum [1] ve iyi bir ilerleme kaydettim, ancak yönlendirme tablosunun nasıl çalıştığıyla ilgili belirli bir noktaya takılmaya devam ediyorum:
Kağıt, iddia ediyor
Bir düğümün yönlendirme tablosu, , halinde düzenlenmiştir , satırlar girişleri her. satırdaki girişleri yönlendirme tablosunda her birinin, nodeID payları, mevcut düğümün nodeID fi ilk N rakam, ama diğer yandan da bir düğümün bakınız inci basamak birine sahip den olası değerler diğer , mevcut düğümün id inci basamaklı.
uygulamaya özel bir değişkeni, genellikle açılımı 4 . Sadelik uğruna b = 4'ü kullanalım . Yani yukarıdaki
Bir düğümün yönlendirme tablosu, , halinde düzenlenmiştir ⌈ log 16 N ⌉ satırları 15 girişlerinin her biri. 15 satırdaki girişleri n yönlendirme tablosunda her birinin, nodeID ilk fi paylar, mevcut düğümün nodeID rakam, ama diğer yandan da, n, bir düğüm bakınız , n + 1 inci basamak birine sahip 2 b - 1 olası değerler dışında n + Mevcut düğümün kimliğinde 1. basamak.
Bunu çok anlıyorum. Ayrıca, kümedeki sunucu sayısıdır. Onu da anlıyorum.
Sorum şu ki, bir girişin yerleştirildiği satır, anahtarın paylaşılan uzunluğuna bağlıysa, neden satır sayısı üzerindeki görünüşte rastgele bir sınır? Her düğümNd'nin 32 basamağı vardır, (128 bit düğüm kimliği, bitlerin basamağına bölünmüştür). Ne olur yüksek yeterince alır ⌈ log 16 N ⌉ > 32 ? Bu senaryoyu vurmanın 340,282,366,920,938,463,463,374,607,431,768,211,457 (matematiğim doğruysa) sunucularını alacağını fark ettim, ancak garip bir katılım gibi görünüyor ve korelasyon asla açıklanmıyor.
Ayrıca, az sayıda sunucunuz varsa ne olur? 16'dan az sunucum varsa, tabloda yalnızca bir satırım var. Ayrıca, hiçbir koşulda, satırdaki her giriş karşılık gelen bir sunucuya sahip olmaz. Girişler boş bırakılmalı mı? Ne olursa olsun yaprak setindeki sunucuyu bulabileceğimin farkındayım, az sayıda sunucuya rağmen, ikinci satır için aynı quandary yükseltilir - ya nodeId'si olan bir sunucum yoksa n. basamaktaki her olası tahliyeyi doldurabilir miyim? Son olarak, eğer dört sunucum varsa ve 32 basamağın 20'sini paylaşan iki düğümüm var, rastgele bir şansa göre ... Bu düğüm için tablonun 20 satırını doldurmalı mıyım? doldurmaya yaklaşabileceğimden çok daha fazla satır var mı?
İşte karşınıza çıkan, şu şekilde atılmaya çalışıyorum:
- Bu önekle tam olarak eşleşen bir düğüm yoksa, girişler boş bir değere ayarlanır.
- NodeIds öğesinin paylaşılan uzunluğu ile eşleşecek kadar satır bulunana kadar boş satırlar eklenmelidir.
- İstenilen bir mesaj kimliği için eşleşen bir giriş yoksa ve yalnızca, eğer paylaşılan uzunluğu geçerli düğüm kimliğine eşit veya ondan daha büyük olan ve girişi matematiksel olarak akımdan daha yakın olan bir nodeId için yönlendirme tablosu aramasına geri döner. nodeId, istenen ID'ye.
- # 3'te uygun bir düğüm bulunamazsa, bunun hedef olduğunu varsayalım ve iletiyi iletin.
Bu varsayımların dördü de dayanıyor mu? Bu konuda bilgi aramam gereken başka bir yer var mı?
- Pasta: Büyük ölçekli eşler arası sistemler için ölçeklenebilir, merkezi olmayan nesne konumu ve yönlendirmesi A. Rowstrong ve P. Druschel (2001) - buradan indirin