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, , được tổ chức thành hàng với mục mỗi. Mỗi mục ở hàng 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ố có một trong các giá trị khác các chữ số thứ trong id nút hiện tại của.
Các là viết tắt của một biến ứng dụng cụ thể, thường là . Hãy sử dụng , 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.
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 đó
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.
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:
- 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ố đó.
- 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.
- 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.
- 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?
- 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