ฉันพยายามใช้ตารางแฮชแบบกระจายของ Pastry แต่มีบางสิ่งที่หลีกเลี่ยงความเข้าใจของฉัน ฉันหวังว่าบางคนสามารถชี้แจงได้
คำเตือน : ฉันไม่ใช่นักเรียนวิทยาศาสตร์คอมพิวเตอร์ ฉันเรียนวิชาวิทยาการคอมพิวเตอร์สองหลักสูตรในชีวิตของฉันและไม่ได้จัดการกับสิ่งที่ซับซ้อนจากระยะไกล ฉันทำงานกับซอฟต์แวร์มาหลายปีแล้วดังนั้นฉันจึงรู้สึกว่าขึ้นอยู่กับภารกิจการนำไปปฏิบัติถ้าฉันสามารถสรุปแนวคิดได้ ดังนั้นฉันอาจจะพลาดอะไรบางอย่างที่ชัดเจน
ฉันได้อ่านกระดาษที่ผู้แต่งตีพิมพ์ [1] และฉันมีความก้าวหน้าที่ดี แต่ฉันก็ยังคงติดใจอยู่กับประเด็นนี้ในตารางการจัดเส้นทาง:
กระดาษอ้างว่า
ตารางการจัดเส้นทางของโหนดคือถูกจัดเป็น แถวที่มีรายการแต่ละรายการ รายการที่แถวของตารางเส้นทางแต่ละอ้างถึงโหนดที่ nodeId แบ่งปัน nodeId ของโหนดปัจจุบันในตัวเลข fi rst n หลัก แต่มีหลักหนึ่งมีค่าที่เป็นไปได้หนึ่งในนอกเหนือจากหลักใน id ของโหนดปัจจุบัน
ย่อมาจากตัวแปรโปรแกรมเฉพาะมัก4 ลองใช้b = 4เพื่อประโยชน์ของความเรียบง่าย ดังนั้นข้างต้นคือ
ตารางการจัดเส้นทางของโหนดคือถูกจัดเป็น แถวแต่ละรายการ รายการที่แถวของตารางเส้นทางแต่ละอ้างถึงโหนดที่มีหุ้นโหนดปัจจุบันของ nodeId ในสายแรก n ตัวเลข แต่มี nodeId หลัก TH มีหนึ่งในค่าที่เป็นไปได้อื่น ๆ กว่า th หลักใน id ของโหนดปัจจุบัน
ฉันเข้าใจมาก เพิ่มเติมคือจำนวนเซิร์ฟเวอร์ในคลัสเตอร์ ฉันก็เข้าใจเช่นกัน
คำถามของฉันคือถ้าแถวที่มีการป้อนข้อมูลนั้นขึ้นอยู่กับความยาวของคีย์ที่ใช้ร่วมกันเหตุใดจึงมีการ จำกัด จำนวนแถวแบบสุ่ม? แต่ละ nodeId มี 32 หลักเมื่อ (128 บิต nodeIds แบ่งออกเป็นตัวเลขของบิต b) แล้วจะเกิดอะไรขึ้นเมื่อสูงพอ ? ฉันรู้ว่ามันต้องใช้เซิร์ฟเวอร์ 340,282,366,920,938,463,463,463,374,607,431,768,211,211,457 (ถ้าคณิตศาสตร์ของฉันถูกต้อง) เพื่อตีฉากนี้ แต่ดูเหมือนว่าจะเป็นการรวมคี่และความสัมพันธ์นั้นไม่เคยอธิบายN ⌈ log 16 N ⌉ > 32
นอกจากนี้จะเกิดอะไรขึ้นถ้าคุณมีเซิร์ฟเวอร์จำนวนน้อย ถ้าฉันมีเซิร์ฟเวอร์น้อยกว่า 16 ตัวฉันมีเพียงหนึ่งแถวในตาราง นอกจากนี้ทุก ๆ รายการในแถวจะไม่มีเซิร์ฟเวอร์ที่สอดคล้องกัน รายการควรจะว่างเปล่า? ฉันรู้ว่าฉันสามารถหาเซิร์ฟเวอร์ในชุดใบไม้ไม่ว่าจะเกิดอะไรขึ้นกับเซิร์ฟเวอร์เพียงไม่กี่ตัว แต่ความไม่แน่ใจแบบเดียวกันก็เพิ่มขึ้นสำหรับแถวที่สอง - ถ้าฉันไม่มีเซิร์ฟเวอร์ที่มี nodeId เช่นนั้นฉันสามารถกรอกทุกการเปลี่ยนแปลงที่เป็นไปได้ของตัวเลขที่ n? ในที่สุดถ้าฉันพูดสี่เซิร์ฟเวอร์และฉันมีสองโหนดที่ใช้ร่วมกันพูดว่า 20 จาก 32 หลักของพวกเขาโดยบังเอิญบางบังเอิญ ... ฉันควรเติม 20 แถวของตารางสำหรับโหนดนั้นแม้ว่าจะเป็น มีแถวมากเกินกว่าที่ฉันจะเข้ามาใกล้เพื่อเติมได้หรือไม่
นี่คือสิ่งที่ฉันคิดขึ้นมาพยายามหาเหตุผลของฉันผ่านสิ่งนี้:
- รายการจะถูกตั้งค่าเป็นค่าว่างหากไม่มีโหนดที่ตรงกับคำนำหน้านั้นอย่างแม่นยำ
- แถวว่างจะถูกเพิ่มจนกว่าจะมีแถวเพียงพอเพื่อให้ตรงกับความยาวที่แบ่งใช้ของ nodeIds
- หากและถ้าไม่มีรายการที่ตรงกันสำหรับ ID ข้อความที่ต้องการถอยกลับในการค้นหาของตารางเส้นทางสำหรับ nodeId ที่มีความยาวร่วมกันมากกว่าหรือเท่ากับ nodeId ปัจจุบันและรายการที่อยู่ใกล้ทางคณิตศาสตร์กว่าปัจจุบัน nodeId เป็น ID ที่ต้องการ
- หากไม่พบโหนดที่เหมาะสมใน # 3 ให้ถือว่านี่เป็นปลายทางและส่งข้อความ
สมมติฐานทั้งสี่นี้มีขึ้นหรือไม่? มีที่ไหนอีกบ้างที่ฉันควรจะหาข้อมูลเกี่ยวกับเรื่องนี้?
- Pastry: ตำแหน่งของวัตถุที่ปรับขนาดได้และการกระจายสำหรับระบบ peer-to-peer ขนาดใหญ่โดย A. Rowstrong และ P. Druschel (2001) - ดาวน์โหลดที่นี่