Làm thế nào để bàn định tuyến của Popating Pastry hoạt động?


23

Tôi đang cố gắng thực hiện Bảng phân phối bánh ngọt Pastry, nhưng một số thứ đang thoát khỏi sự hiểu biết của tôi. Tôi đã hy vọng ai đó có thể làm rõ.

Tuyên bố miễn trừ trách nhiệm : Tôi không phải là sinh viên khoa học máy tính. Tôi đã tham gia chính xác hai khóa học về khoa học máy tính trong đời và không phải đối phó với bất cứ điều gì phức tạp từ xa. Tôi đã làm việc với phần mềm trong nhiều năm, vì vậy tôi cảm thấy mình hoàn thành nhiệm vụ thực hiện, nếu tôi có thể chỉ biết xoay quanh các ý tưởng. Vì vậy, tôi có thể chỉ thiếu một cái gì đó rõ ràng.

Tôi đã đọc bài báo mà các tác giả đã xuất bản [1] và tôi đã đạt được một số tiến bộ tốt, nhưng tôi tiếp tục bị treo lên về một điểm đặc biệt này trong cách hoạt động của bảng định tuyến:

Tờ báo tuyên bố rằng

Bảng định tuyến của một nút, R , được tổ chức thành đăng nhập2bN hàng với 2b-1 mục mỗi. Mỗi mục 2b-1 ở hàng n của bảng định tuyến, mỗi tham chiếu đến một nút có nútId chia sẻ nút của nút hiện tại trong các chữ số đầu tiên, nhưng chữ số n+1 có một trong các giá trị 2b-1 khác các n+1 chữ số thứ trong id nút hiện tại của.

Các b là viết tắt của một biến ứng dụng cụ thể, thường là 4 . Hãy sử dụng b= =4 , vì đơn giản. Vì vậy, ở trên là

Bảng định tuyến của một nút, , được tổ chức thành log 16 N hàng với 15 mục mỗi. Các 15 mục tại hàng n của bảng định tuyến từng đề cập đến một nút có nodeID cổ phiếu nodeID nút hiện tại của trong rst fi n chữ số, nhưng có n + 1 thứ chữ số có một trong những 2 b - 1 giá trị có thể khác so với n + Chữ số thứ 1 trong id của nút hiện tại.Rđăng nhập16N1515nn+12b-1n+1

Tôi hiểu điều đó rất nhiều. Hơn nữa, là số lượng máy chủ trong cụm. Tôi cũng hiểu điều đóN

Câu hỏi của tôi là, nếu hàng được đặt vào phụ thuộc vào độ dài được chia sẻ của khóa, tại sao giới hạn dường như ngẫu nhiên về số lượng hàng? Mỗi nodeId có 32 chữ số, khi (nút bit 128 bit được chia thành chữ số của b bit). Vậy điều gì sẽ xảy ra khi N được đủ cao mà log 16 N > 32 ? Tôi nhận ra rằng sẽ cần 340.282.366.920.938.463.463.374.607.431.768.211.457 (nếu toán của tôi đúng) để đạt được kịch bản này, nhưng nó chỉ giống như một sự bao gồm kỳ lạ, và mối tương quan không bao giờ được giải thích.b= =4Nđăng nhập16N>32

Hơn nữa, điều gì xảy ra nếu bạn có một số lượng nhỏ máy chủ? Nếu tôi có ít hơn 16 máy chủ, tôi chỉ có một hàng trong bảng. Hơn nữa, trong mọi trường hợp, mọi mục trong hàng sẽ có một máy chủ tương ứng. Các mục có nên để trống? Tôi nhận ra rằng tôi có thể tìm thấy máy chủ trong bộ lá dù thế nào đi nữa, với một vài máy chủ, nhưng cùng một tình huống khó khăn được đưa ra cho hàng thứ hai - điều gì xảy ra nếu tôi không có máy chủ có nútId sao cho tôi có thể điền mọi hoán vị có thể có của chữ số thứ n? Cuối cùng, nếu tôi có, giả sử, bốn máy chủ và tôi có hai nút chia sẻ, giả sử, 20 trong số 32 chữ số của chúng, bằng một số sáo ngẫu nhiên ... tôi có nên đặt 20 hàng của bảng cho nút đó hay không, mặc dù đó là nhiều hàng hơn tôi thậm chí có thể đến gần để điền?

Đây là những gì tôi nghĩ ra, cố gắng giải thích theo cách này:

  1. Các mục nhập phải được đặt thành giá trị null nếu không có nút nào khớp chính xác với tiền tố đó.
  2. Các hàng trống sẽ được thêm vào cho đến khi đủ hàng tồn tại để phù hợp với độ dài được chia sẻ của nodeIds.
  3. Nếu, và chỉ khi, không có mục phù hợp cho ID thông báo mong muốn, hãy quay lại tìm kiếm bảng định tuyến cho một nútId có chiều dài được chia sẻ lớn hơn hoặc bằng nút hiện tại và có mục nhập gần hơn về mặt toán học so với hiện tại nodeId là ID mong muốn.
  4. Nếu không có nút phù hợp có thể được tìm thấy trong # 3, giả sử đây là đích và gửi thông báo.

Có phải tất cả bốn giả định này giữ vững? Có nơi nào khác tôi nên tìm kiếm thông tin về điều này?


  1. Pastry: Định vị và định tuyến đối tượng phi tập trung cho các hệ thống ngang hàng quy mô lớn của A. Rowstrong và P. Druschel (2001) - tải về tại đây

Bạn nói rằng bạn đã có ít lập trình. Bài viết không thực sự liên quan đến lập trình (trực tiếp) mà là mạng đường dẫn ngắn nhất giữa hai nút. Vì vậy, câu hỏi tiếp theo là: bạn đã nhận được bao nhiêu nền tảng mạng? Đây là tất cả về định tuyến qua mạng.

Tôi thực sự nói rằng tôi tin rằng tôi có đủ kinh nghiệm lập trình. Đó là kinh nghiệm khoa học máy tính tôi cảm thấy tôi đang thiếu. Bất kể, tôi không có kinh nghiệm kết nối mạng. Tôi không chắc chắn tôi đồng ý với khẳng định của bạn rằng đây chủ yếu là về kết nối mạng, nhưng tôi rất thích nghe suy nghĩ của bạn.

Câu trả lời:


5

Ý tưởng về một bảng định tuyến trong Pastry (và tất cả các mạng P2P có cấu trúc) là để giảm thiểu kích thước của nó, trong khi vẫn đảm bảo định tuyến nhanh hơn.

Thuật toán định tuyến của Pastry diễn ra như sau:

Bước A. Một nút u tìm kiếm một đối tượng A bằng cách trước tiên tìm kiếm nó trong tập lá của nó. Bước B. Nếu không có sẵn, thì truy vấn được chuyển tiếp đến một nút đã biết có chung "một số tiền tố với ít nhất lớn hơn nút u chia sẻ với A". Bước C. Nếu một bản ghi như vậy là không tìm thấy, sau đó truy vấn được chuyển tiếp đến một nút trong tập lá đó là số lượng gần Một .MộtMột

bạn

tôibạntôibạn

(tôi+1)thtôi{0,Giáo dục,2b-1}

Một

bạnMộtbạnMộtbạnbạn1bạn1

bạn1Một

tôiog2bb2bb

Kịch bản thực tế thường không điển hình như vậy. Có thể có các tình huống trong đó không có nhiều nút trong mạng. đây là lý do tại sao chúng tôi làm theo bước C ở trên. - Tuy nhiên, điều bạn cần đảm bảo để làm cho thuật toán này chính xác là mỗi nút được kết nối với hai nút gần nhất với nó (theo thuật ngữ định danh). Điều này sẽ tạo thành một vòng các nút theo thứ tự [ví dụ 1-> 3-> 4-> 9-> 10-> 11-> 1]


Không hoàn toàn những gì tôi đã hỏi, nhưng một tổng quan rất tốt về thuật toán cung cấp cho bạn một upvote và dù sao câu trả lời được chấp nhận. :)
Lúa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.