Saya mencoba menerapkan Tabel Hash Terdistribusi Kue, tetapi beberapa hal lolos dari pemahaman saya. Saya berharap seseorang dapat mengklarifikasi.
Penafian : Saya bukan mahasiswa ilmu komputer. Saya telah mengikuti dua kursus sains komputer dalam hidup saya, dan tidak ada yang berurusan dengan sesuatu yang jauh kompleks. Saya telah bekerja dengan perangkat lunak selama bertahun-tahun, jadi saya merasa saya siap dengan tugas implementasi, jika saya bisa membungkus pikiran saya dengan ide-ide. Jadi saya mungkin kehilangan sesuatu yang jelas.
Saya telah membaca makalah yang penulis terbitkan [1], dan saya telah membuat beberapa kemajuan yang baik, tetapi saya terus terpaku pada satu titik khusus ini dalam cara tabel routing bekerja:
Koran itu mengklaim itu
Tabel routing node, , disusun dalam baris dengan masing-masing entri . The entri pada baris dari tabel routing yang masing-masing mengacu pada simpul yang sahamnya nodeId node hadir ini nodeId di fi rst n digit, tapi yang digit th memiliki salah satu dari kemungkinan nilai selain yang digit th di id node hadir ini.
The singkatan variabel aplikasi-spesifik, biasanya 4 . Mari kita gunakan b = 4 , demi kesederhanaan. Jadi yang di atas
Tabel routing node, , diatur ke dalam ⌈ log 16 N ⌉ baris dengan 15 entri masing-masing. Ke 15 entri pada baris n dari tabel routing masing-masing merujuk ke sebuah node yang nodeId berbagi nodeId node saat ini dalam digit n pertama, tetapi yang n + 1 digit memiliki salah satu dari 2 b - 1 nilai yang mungkin selain n + Digit ke- 1 dalam id node saat ini.
Saya sangat mengerti. Selanjutnya, adalah jumlah server dalam gugus. Saya mengerti juga.
Pertanyaan saya adalah, jika baris suatu entri ditempatkan bergantung pada panjang kunci yang dibagikan, mengapa batas acak pada jumlah baris? Setiap nodeId memiliki 32 digit, ketika (128 bit nodeId dibagi menjadi digit b bit). Jadi apa yang terjadi ketika N menjadi cukup tinggi sehingga ⌈ log 16 N ⌉ > 32 ? Saya menyadari bahwa akan dibutuhkan 340.282.366.920.938.463.463.374.607.431.768.211.457 (jika matematika saya benar) server untuk mencapai skenario ini, tetapi sepertinya inklusi aneh, dan korelasinya tidak pernah dijelaskan.
Selanjutnya, apa yang terjadi jika Anda memiliki sejumlah kecil server? Jika saya memiliki kurang dari 16 server, saya hanya memiliki satu baris di tabel. Selanjutnya, dalam keadaan apa pun setiap entri di baris tidak memiliki server yang sesuai. Haruskah entri dibiarkan kosong? Saya menyadari bahwa saya dapat menemukan server di leaf set tidak peduli apa pun, mengingat beberapa server, tetapi kesulitan yang sama muncul untuk baris kedua - bagaimana jika saya tidak memiliki server yang memiliki nodeId sedemikian rupa sehingga saya dapat mengisi setiap permutasi yang mungkin dari digit ke-n? Akhirnya, jika saya memiliki, katakanlah, empat server, dan saya memiliki dua node yang berbagi, katakanlah, 20 dari 32 digit mereka, dengan beberapa kebetulan acak ... haruskah saya mengisi 20 baris tabel untuk node itu, meskipun itu adalah jauh lebih banyak baris daripada yang bisa saya isi?
Inilah yang saya hasilkan, mencoba menjelaskan jalan saya melalui ini:
- Entri harus disetel ke nilai nol jika tidak ada simpul yang cocok dengan awalan itu secara tepat.
- Baris kosong harus ditambahkan sampai cukup baris ada untuk mencocokkan panjang bersama dari nodeIds.
- Jika, dan hanya jika, tidak ada entri yang cocok dengan ID pesan yang diinginkan, kembalilah pada pencarian tabel routing untuk nodeId yang panjangnya dibagi lebih dari atau sama dengan nodeId saat ini dan yang entri secara matematis lebih dekat daripada saat ini nodeId ke ID yang diinginkan.
- Jika tidak ada simpul yang cocok dapat ditemukan di # 3, anggap ini adalah tujuan dan mengirimkan pesan.
Apakah keempat asumsi ini berlaku? Apakah ada tempat lain saya harus mencari informasi tentang ini?
- Pastry: Lokasi objek dan rute yang dapat diskalakan dan didesentralisasi untuk sistem peer-to-peer skala besar oleh A. Rowstrong dan P. Druschel (2001) - unduh di sini