Ví dụ về danh sách ánh xạ của từng nút

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Sử dụng thông tin gần kề vị trí trong khảo duyệt Web theo phương thức mạng ngang hàng (Trang 61 - 63)

Nhƣ vậy, mỗi nút trong mạng phủ sẽ chứa các thông tin đƣợc mô tả trong bảng 4. Các phần in đậm là các phần thêm vào so với vòng Chord điển hình.

Ký hiệu Chú giải

finger[k].start n + 2^(k - 1) mod 2^m, 1 <= k <= m, n là khóa định danh trên vòng L-Chord

finger[k].interval (finger[k].start, finger[k + 1].start)

finger[k].node Nút đầu tiên trên vòng L-Chord có giá trị định danh >= finger[k].start

successor Node tiếp theo trên vòng L-Chord, tƣơng đƣơng với

finger[k].node

predecessor Node ngay phía trƣớc trên vòng L-Chord

mapping_list[i].id Danh sách khóa định danh trên vòng V-Chord của các nút trong danh sách nút ánh xạ

mapping_list[i].node Danh sách nút trong danh sách nút ánh xạ

Bảng 4. Bảng chứa thông tin định tuyến trong D-Chord 4.1.2 Tìm kiếm trong vòng L-Chord 4.1.2 Tìm kiếm trong vòng L-Chord

Do L-Chord là vòng Chord điển hình nên quá trình tìm kiếm trong vòng L- Chord tƣơng tự nhƣ quá trình tìm kiếm trên vòng Chord. Khi một nút n cần tìm kiếm một khóa có định danh id, nút n sẽ tìm nút chịu trách nhiệm lƣu giữ id đó.

Nếu nút n ở xa so với vị trí của nút lƣu giữ id, n có thể nhờ vào thông tin trong bảng Finger Table để định tuyến đến các nút xa hơn, từ đó dần dần tìm ra nút chịu trách nhiệm lƣu giữ id.

Thuật toán tìm kiếm trong vòng L-Chord đƣợc mô tả sau đây

// Tìm nút n để tìm kiếm nút chịu trách nhiệm khóa định danh id

n.L_find_successor(id)

n’ = L_find_predecessor(id); return n’.successor;

// Tìm nút n để tìm kiếm nút ngay phía sau khóa định danh id

n.L_find_predecessor(id)

n’ = n;

while (id not in (n’, n’.successsor))

n’ = n’.L_closest_preceding_finger(id); return n’; // Tìm nút gần nhất n. L_closest_preceding_finger(id) for i = m downto 1 if (finger[i].node in (n, id)) return finger[i].node; return n;

Các thuật toán trên là các thuật toán của vòng Chord điển hình. Chúng tôi chỉ đổi tên để thể hiện các thuật toán này đƣợc sử dụng trên vòng L-Chord.

Sau đây, chúng tôi xin đƣa ra một ví dụ mô tả quá trình tìm kiếm trên vòng L-Chord. Chúng tôi sử dụng ví dụ đã đề cập từ trƣớc. Do quá trìnhnày chỉ diễn ra trên vòng L-Chord nên chúng tôi bỏ qua vòng V-Chord trên hình vẽ 15.

Giả sử nút A tìm kiếm quá trị id = 15, các bƣớc tìm kiếm sẽ nhƣ sau

Quá trình tìm kiếm xuất phát từ nút A. Đầu tiên, nút A gọi phƣơng thức L_find_successor(15), trong phƣơng thức này, nút A sẽ gọi tiếp L_find_predecessor(15).

Trong hàm L_find_predecessor, nút A gọi hàm L_closest_preceding_finger(15), giá trị trả về sẽ là nút tại ví trí cuối cùng trên bảng finger là nút D.

Tiếp tục theo thuật toán, nút D tìm kiếm giá trị 15. Sau khi kiểm tra bảng finger, khi kiểm tra đến vị trí thứ 2 trên bảng finger, nút D sẽ tìm thấy nút thỏa mãn điều kiện, đó là nút E. Nút E này sẽ đƣợc trả về từ lời gọi hàm

L_find_predecessor(15). Cuối cùng, quá trình tìm kiếm A.L_find_successor(15) sẽ trả về nút tiếp theo của E là nút A.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Sử dụng thông tin gần kề vị trí trong khảo duyệt Web theo phương thức mạng ngang hàng (Trang 61 - 63)

Tải bản đầy đủ (PDF)

(90 trang)