การเติมตารางการกำหนดเส้นทางของ Pastry ทำงานอย่างไร


23

ฉันพยายามใช้ตารางแฮชแบบกระจายของ Pastry แต่มีบางสิ่งที่หลีกเลี่ยงความเข้าใจของฉัน ฉันหวังว่าบางคนสามารถชี้แจงได้

คำเตือน : ฉันไม่ใช่นักเรียนวิทยาศาสตร์คอมพิวเตอร์ ฉันเรียนวิชาวิทยาการคอมพิวเตอร์สองหลักสูตรในชีวิตของฉันและไม่ได้จัดการกับสิ่งที่ซับซ้อนจากระยะไกล ฉันทำงานกับซอฟต์แวร์มาหลายปีแล้วดังนั้นฉันจึงรู้สึกว่าขึ้นอยู่กับภารกิจการนำไปปฏิบัติถ้าฉันสามารถสรุปแนวคิดได้ ดังนั้นฉันอาจจะพลาดอะไรบางอย่างที่ชัดเจน

ฉันได้อ่านกระดาษที่ผู้แต่งตีพิมพ์ [1] และฉันมีความก้าวหน้าที่ดี แต่ฉันก็ยังคงติดใจอยู่กับประเด็นนี้ในตารางการจัดเส้นทาง:

กระดาษอ้างว่า

ตารางการจัดเส้นทางของโหนดคือถูกจัดเป็น แถวที่มีรายการแต่ละรายการ รายการที่แถวของตารางเส้นทางแต่ละอ้างถึงโหนดที่ nodeId แบ่งปัน nodeId ของโหนดปัจจุบันในตัวเลข fi rst n หลัก แต่มีหลักหนึ่งมีค่าที่เป็นไปได้หนึ่งในนอกเหนือจากหลักใน id ของโหนดปัจจุบันRเข้าสู่ระบบ2ยังไม่มีข้อความ2-12-1nn+12-1n+1

ย่อมาจากตัวแปรโปรแกรมเฉพาะมัก4 ลองใช้b = 4เพื่อประโยชน์ของความเรียบง่าย ดังนั้นข้างต้นคือ4b=4

ตารางการจัดเส้นทางของโหนดคือRถูกจัดเป็น log16Nแถวแต่ละ15รายการ 15รายการที่แถวnของตารางเส้นทางแต่ละอ้างถึงโหนดที่มีหุ้นโหนดปัจจุบันของ nodeId ในสายแรก n ตัวเลข แต่มี nodeId n+1หลัก TH มีหนึ่งใน2b1ค่าที่เป็นไปได้อื่น ๆ กว่าn+1 th หลักใน id ของโหนดปัจจุบัน

ฉันเข้าใจมาก เพิ่มเติมคือจำนวนเซิร์ฟเวอร์ในคลัสเตอร์ ฉันก็เข้าใจเช่นกันN

คำถามของฉันคือถ้าแถวที่มีการป้อนข้อมูลนั้นขึ้นอยู่กับความยาวของคีย์ที่ใช้ร่วมกันเหตุใดจึงมีการ จำกัด จำนวนแถวแบบสุ่ม? แต่ละ nodeId มี 32 หลักเมื่อ (128 บิต nodeIds แบ่งออกเป็นตัวเลขของบิต b) แล้วจะเกิดอะไรขึ้นเมื่อสูงพอ ? ฉันรู้ว่ามันต้องใช้เซิร์ฟเวอร์ 340,282,366,920,938,463,463,463,374,607,431,768,211,211,457 (ถ้าคณิตศาสตร์ของฉันถูกต้อง) เพื่อตีฉากนี้ แต่ดูเหมือนว่าจะเป็นการรวมคี่และความสัมพันธ์นั้นไม่เคยอธิบายN log 16 N > 32b=4Nlog16N>32

นอกจากนี้จะเกิดอะไรขึ้นถ้าคุณมีเซิร์ฟเวอร์จำนวนน้อย ถ้าฉันมีเซิร์ฟเวอร์น้อยกว่า 16 ตัวฉันมีเพียงหนึ่งแถวในตาราง นอกจากนี้ทุก ๆ รายการในแถวจะไม่มีเซิร์ฟเวอร์ที่สอดคล้องกัน รายการควรจะว่างเปล่า? ฉันรู้ว่าฉันสามารถหาเซิร์ฟเวอร์ในชุดใบไม้ไม่ว่าจะเกิดอะไรขึ้นกับเซิร์ฟเวอร์เพียงไม่กี่ตัว แต่ความไม่แน่ใจแบบเดียวกันก็เพิ่มขึ้นสำหรับแถวที่สอง - ถ้าฉันไม่มีเซิร์ฟเวอร์ที่มี nodeId เช่นนั้นฉันสามารถกรอกทุกการเปลี่ยนแปลงที่เป็นไปได้ของตัวเลขที่ n? ในที่สุดถ้าฉันพูดสี่เซิร์ฟเวอร์และฉันมีสองโหนดที่ใช้ร่วมกันพูดว่า 20 จาก 32 หลักของพวกเขาโดยบังเอิญบางบังเอิญ ... ฉันควรเติม 20 แถวของตารางสำหรับโหนดนั้นแม้ว่าจะเป็น มีแถวมากเกินกว่าที่ฉันจะเข้ามาใกล้เพื่อเติมได้หรือไม่

นี่คือสิ่งที่ฉันคิดขึ้นมาพยายามหาเหตุผลของฉันผ่านสิ่งนี้:

  1. รายการจะถูกตั้งค่าเป็นค่าว่างหากไม่มีโหนดที่ตรงกับคำนำหน้านั้นอย่างแม่นยำ
  2. แถวว่างจะถูกเพิ่มจนกว่าจะมีแถวเพียงพอเพื่อให้ตรงกับความยาวที่แบ่งใช้ของ nodeIds
  3. หากและถ้าไม่มีรายการที่ตรงกันสำหรับ ID ข้อความที่ต้องการถอยกลับในการค้นหาของตารางเส้นทางสำหรับ nodeId ที่มีความยาวร่วมกันมากกว่าหรือเท่ากับ nodeId ปัจจุบันและรายการที่อยู่ใกล้ทางคณิตศาสตร์กว่าปัจจุบัน nodeId เป็น ID ที่ต้องการ
  4. หากไม่พบโหนดที่เหมาะสมใน # 3 ให้ถือว่านี่เป็นปลายทางและส่งข้อความ

สมมติฐานทั้งสี่นี้มีขึ้นหรือไม่? มีที่ไหนอีกบ้างที่ฉันควรจะหาข้อมูลเกี่ยวกับเรื่องนี้?


  1. Pastry: ตำแหน่งของวัตถุที่ปรับขนาดได้และการกระจายสำหรับระบบ peer-to-peer ขนาดใหญ่โดย A. Rowstrong และ P. Druschel (2001) - ดาวน์โหลดที่นี่

คุณบอกว่าคุณมีโปรแกรมเล็กน้อย บทความไม่ได้เกี่ยวข้องกับการเขียนโปรแกรม (โดยตรง) แต่เป็นการเชื่อมโยงเส้นทางที่สั้นที่สุดระหว่างสองโหนด ดังนั้นคำถามต่อไปคือคุณได้พื้นหลังของเครือข่ายจำนวนเท่าใด นี่คือทั้งหมดที่เกี่ยวกับการกำหนดเส้นทางผ่านเครือข่าย

ฉันบอกว่าฉันเชื่อว่าฉันมีประสบการณ์การเขียนโปรแกรมเพียงพอ มันเป็นประสบการณ์ด้านวิทยาการคอมพิวเตอร์ที่ฉันรู้สึกว่าขาด ไม่ว่าฉันจะอยู่ถัดจากไม่มีประสบการณ์เครือข่าย ฉันไม่แน่ใจว่าฉันเห็นด้วยกับการยืนยันของคุณว่านี่เป็นเรื่องเกี่ยวกับเครือข่ายเป็นหลัก แต่ฉันชอบที่จะได้ยินความคิดของคุณ

คำตอบ:


5

แนวคิดของตารางเส้นทางใน Pastry (และเครือข่าย P2P ที่มีโครงสร้างทั้งหมด) คือการลดขนาดให้เล็กลงในขณะที่รับประกันการกำหนดเส้นทางที่รวดเร็วยิ่งขึ้น

อัลกอริทึมการกำหนดเส้นทางของ Pastry ดำเนินการดังนี้:

ขั้นตอน A. โหนดคุณค้นหาวัตถุ A โดยเริ่มจากการค้นหามันในชุดใบไม้ของมัน ขั้นตอน B. ถ้าไม่พร้อมใช้งานเคียวรีจะถูกส่งต่อไปยังโหนดที่รู้จักซึ่งแบ่งใช้ "จำนวนคำนำหน้ากับที่อย่างน้อยใหญ่กว่าที่โหนด U แบ่งปันกับ A" ขั้นตอน C. หากไม่พบเร็กคอร์ดดังกล่าวดังนั้นเคียวรีจะถูกส่งต่อไปยังโหนดในชุดลีฟที่ใกล้เคียงกับตัวเลขAมากที่สุดAA

ยู

ผมยูผมยู

(ผม+1)เสื้อชั่วโมงผม{0,...,2-1}

A

ยูAยูAยูยู1ยู1

ยู1A

ล.โอก.22

สถานการณ์ที่ใช้งานได้จริงมักไม่เป็นเช่นนั้น อาจมีสถานการณ์ที่มีหลายโหนดในเครือข่าย นี่คือเหตุผลที่เราทำตามขั้นตอน C ข้างต้น - อย่างไรก็ตามสิ่งที่คุณต้องรับประกันเพื่อให้อัลกอริทึมนี้ถูกต้องคือแต่ละโหนดเชื่อมต่อกับสองโหนดที่ใกล้เคียงที่สุด (ในรูปของตัวระบุ) สิ่งนี้จะกลายเป็นวงแหวนของโหนดที่ได้รับคำสั่ง [เช่น 1-> 3-> 4-> 9-> 10-> 11-> 1]


ไม่ใช่สิ่งที่ฉันขอทั้งหมด แต่ภาพรวมที่ดีมากของอัลกอริทึมช่วยให้คุณได้คำตอบ upvote และเป็นที่ยอมรับ :)
Paddy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.