.7 (a) Một mạng Chord với 6 node ,5 item và N=16

Một phần của tài liệu nghiên cứu một số cơ chế bảng băm phân tán trong mạng ngang hàng (Trang 48)

routing table

(c) Bảng routing table của node 3 và node 11

Mapping Items Onto Nodes

Như chúng ta thấy trên hình 2.2, một item được lưu trên node đầu tiên mà theo sau nó theo chiều kim đồng hồ trong không gian ID. Các item với ID tương ứng 2, 3, 6, 10,13 được lưu trong các node trên mạng như sau: {2,3} được lưu tại node 3; {6} được lưu tại

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

44

node 9; {10} được lưu tại node 11; và {13} được lưu tại node 0.

Lookup Process

Quá trình tìm kiếm là kết quả tự nhiên của cách chia không gian ID. Cả việc chèn và tìm kiếm dữ liệu đều dựa trên việc tìm ID successor của một ID. Ví dụ, khi node 11 muốn chèn một item mới với ID là 8, lookup được chuyển tiếp tới node 3 là node đứng trước gần node 8 nhất trong bảng finger của node 11. Node lại thực hiện quá trình tương tự, nó chuyển tiếp yêu cầu tới node 5 là node đứng trước gần 8 nhất trong bảng finger của nó. Node 5 thấy rằng 8 nằm giữa nó và successor của nó (node 9), do đó nó trả về kết quả 9 theo đường đi ngược lại. Sau khi nhận được câu trả lời, tầng ứng dụng trên node 11 sẽ liên lạc với tầng ứng dụng trên node 9 và yêu cầu lưu một số giá trị với key là 8. Bất kỳ node nào muốn tìm kiếm key 8 đều thực hiện quá trình tương tự và trong khơng quá M chặng, một node sẽ tìm ra node lưu các dữ liệu ứng với key 8. Nói chung, trong điều kiện thơng thường, một tìm kiếm sẽ hồn thành trong O(log2(N)) chặng.

Joins, Leaves and Maintenance

Khi node n muốn join vào mạng, nó phải tìm ID của mình thơng qua một số contact trong mạng và chèn bản thân nó vào vịng giữa successor s của nó và predecessor của s sử dụng một thuật toán stabilization chạy định kỳ. Bảng định tuyến của n được khởi tạo bằng cách copy bảng định tuyến của s hoặc yêu cầu s tìm các finger của n. tập các node cần điều chỉnh bảng định tuyến sau khi n join vào mạng nhờ các node này đều chạy thuật toán stabilization định kỳ. Nhiệm vụ cuối cùng là chuyển một phần các item đang lưu trên node s có ID nhỏ hơn hoặc bằng n sao node n. Việc di chuyển dữ liệu này được thực hiện bởi tầng ứng dụng của n và s.

Giả mã của các quá trình tìm kiếm successor của node n, khởi tạo bảng định tuyến của n, cập nhật bảng finger của các node liên quan, quá trình stabilization như sau:

//yêu cầu node n tìm successor của id n.find_successor(id);

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

45

return n’.successor;

// yêu cầu node n tìm predecessor của id n.find_predecessor(id);

n’=n;

while (id ∉ (n’, n’.successor])

n’=n’.closest_preceding_finger(id); return n’; // trả về finger gần nhất đứng trước id n.closest_preceding_finger(id); for i = m downto 1 if (finger[i].node ∈ (n; id)) return finger[i].node; return n;

Thuật tốn 2.1. Giả mã tìm node successor của ID n

#define successor finger[1].node // node n join vào mạng;

// n’ là một node tùy ý trong mạng n.join(n’)

if (n’)

init_finger_table(n’); update_others();

// chuyển key trong khoảng (predecessor,n] từ successor

else // n là node duy nhất trên mạng for i = 1 to m

finger[i].node = n; predecessor = n ;

// khởi tạo bảng finger table của node

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

46 n.init_finger_table(n’) finger[1].node = n’.fin_successor(finger[1].start); predecessor = successor.predecessor; successor.predecessor = n; for i = 1 to m-1 if (finger[i+1].start ∈ [n, finger[i].node)) finger[i+1].node = finger[i].node; else finger[i+1].node=n’.find_successor(finger[i+1].start); // cập nhật n vào các node có finger table that đổi

n.update_others()

for i = 1 to m

//tìm node p cuối cùng có finger thứ i là n

p = find_predecessor(n-2i-1);

p.update_finger_table(n.,i);

//nếu s là finger thứ i của n, cập nhật s vào bảng finger của n n.update_finger_table(s,i)

if (s ∈ [n, finger[i].node)) finger[i].node = s;

p = predecessor; // lấy node đầu tiên đứng trước n p.update_finger_table(s,i);

Thuật toán 2.2. Giả mã cho hoạt động join vào mạng của một node

n.join(n’)

predecessor = nil;

successor = n’.find_successor(n);

// định kỳ kiểm tra successor đứng ngay n và báo cho successor //biết về n

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

47 x = successor.predecessor; if ( x ∈ (n, successor)) successor = x; successor.notify(n); // n’ nghĩ n’ là predecessor của n n.notify(n’)

if (predecessor is nil or n’ ∈ (predecessor,n))

predecessor = n’ ;

//định kỳ cập nhật các finger trong bảng finger table

n.fix_finger()

i = random index > 1 into finger []

finger[i].node = find_successor(finger[i].start);

Thuật tốn 2.3. Giả mã cho q trình stabilization

Hình 2.3 cho chúng ta thấy một ví dụ về quá trình join vào mạng của một node. Giả sử node 21 có successor là node 32, trên node 32 đang lưu các key 24 và 30. Node 26 join vào mạng, sau quá trình tìm kiếm, node 26 biết node 32 là successor của mình, nó trỏ con trỏ successor của mình vào node 32 và báo cho node 32 biết. Node 32 sau khi được báo thì trỏ con trỏ predecessor vào node 26. Node 26 copy các key tương ứng với nó (key 24) từ node 32. Đến định kỳ, N21 chạy quá trình stabilize, lúc này con trỏ successor vẫn trỏ vào node 32. Node 21 hỏi node 32 về predecessor của node 32, lúc này predecessor của 32 là 26. Sau khi nhận được câu trả lời, N21 trỏ con trỏ successor vào node 26 và báo cho node 26 biết nó là predecessor của node 26. Node 26 trỏ con trỏ predecessor vào node 21

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

48

Hình 2.8. Quá trình một node join vào mạng

Quá trình rời khỏi mạng có báo trược được thực hiện như sau: node sắp rời khỏi mạng chuyển các key nó đang lưu sang successor của nó rồi báo cho các node predecessor và successor. Bảng định tuyến của các node liên quan sẽ được cập nhật khi các node này chạy thuật tốn stabilization.

Hình 2.4 dưới đây cho chúng ta một ví dụ về bảng định tuyến của các node khi có sự join/leave. Ban đầu mạng có 3 node với ID là 0, 1, 3, bảng định tuyến của chúng được cho thấy trên hình vẽ.

Sau đó node 6 join vào mạng rồi node 3 rời khỏi mạng, bảng định tuyến của các node và sự thây đổi bảng định tuyến được thể hiện trong hình vẽ với những phần thay đổi có

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

49

màu đen, những phần không đổi có màu xám.

Hình 2.9. (a) Bảng finger và vị trí của key sau khi node 6 join. (b)Bảng finger và vị trí của key sau khi node 3 leave. của key sau khi node 3 leave.

Replication and Fault Tolerance

Các node rời khỏi mạng đột ngột có hai tác động tiêu cực. Thứ nhất là dẫn đến mất dữ liệu lưu trên các node này, thứ hai một phần của vòng bị mấtl liên kết dẫn đến một số ID sẽ khơng được tìm thấy. Có thể xảy ra tình huống một dãy các node liền nhau cùng rời khỏi mạng đột ngột. Chord giải quyết vấn đề này bằng cách cho mỗi node lưu một danh sách log2(N) node theo sau nó trong khơng gian ID. Danh sách này có hai mục đích, thứ nhất là nếu một node phát hiện successor của nó khơng hoạt động, nó sẽ thay thế bằng node ngay cạnh trong successor list, thứ hai, mọi dữ liệu được lưu trên một node nào đó cũng được lưu trên các node trong successor list. Dữ liệu chỉ bị mất hay vịng chỉ bị đứt khi có log2(N) + 1 node liên tiếp fail đồng thời.

Upper Services and Applications

Một số ứng dụng như cooperative file-system [14], một ứng dụng đọc/ghi hệ thống file và một DNS đã được xây dựng dựa trên Chord. Đồng thời, một thuật toán broadcast cũng được phát triển cho Chord

Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

50

Cài đặt chính của Chord được thực hiện bằng nghôn ngữ C++. Thêm nữa, một C++ discrete-event simulator cũng đã được xây dựng. Naanou là một cài đặt C# của Chord với một ứng dụng chia sẻ file được xây dựng dựa trên nó.

Luận văn thạc sỹ KHMT Chương trình thử nghiệm

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

51

Chƣơng 3. Chƣơng trình thử nghiệm

3.1. Bài tốn thực tế

Hầu hết các DHTs được thiết kế để hoạt động với các peer là máy tính. Đây là mơi trường có độ ổn định khá cao, tức là khoảng thời gian từ lúc một node gia nhập cho đến khi rời khỏi mạng tương đối dài. Trong môi trường này, các DHTs hoạt động với hiệu năng tương đối cao.

Hiệu năng của một DHTs được đánh giá thông qua hai tham số chính là tỷ lệ tìm kiếm dữ liệu thành cơng khi dữ liệu có trên mạng và độ trễ tìm kiếm.

Vài năm trở lại đây các sản phẩm cho người sử dụng có thể nối mạng phát triển hết sức mạnh mẽ và đa dạng, các sản phầm khơng chỉ có máy tính mà cịn có các thiết bị như điện thoại, PDA, tivi, …. Cũng giống như người sử dụng máy tính, người sử dụng các thiết bị này cũng có nhu cầu chia sẻ, khai thác nguồn tài nguyên hết sức phong phú trên mạng P2P, đặc biệt là các tài nguyên như video, audio. Tuy nhiên thời gian kết nối mạng của các thiết bị này thường rất ngắn, thậm chí có thể tính bằng giây, dẫn đến sự bất ổn định của mạng. Các DHTs vốn được thiết kế để hoạt động với các peer là máy tính lúc này khơng đáp ứng được u cầu về hiệu năng do khoảng thời gian các peer ở trên mạng quá ngắn. Một mạng như vậy người ta gọi là mạng có churn rate cao.

Một bài toán mới đặt ra cho cộng đồng nghiên cứu P2P là xây dựng các mạng P2P thích nghi được với môi trường churn rate cao. Một trong những giải pháp được nhiều người quan tâm là cải tiến các DHTs hiện có để chúng hoạt động hiệu quả ngay cả trong mơi trường có churn rate cao. Việc đưa ra được giải pháp cải tiến hiệu năng cần căn cứ vào một số cơ sở, một trong những cơ sở quan trọng là việc đánh giá hiệu năng của các DHTs trong môi trường mới.

Việc đánh giá hiệu năng của các DHTs nhằm tạo cơ sở cho việc đưa ra các giải pháp cải tiến hiệu năng của chúng đồng thời giúp các ứng dụng lựa chọn, sử dụng các DHTs hiệu quả hơn.

Luận văn thạc sỹ KHMT Chương trình thử nghiệm

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

52

Đánh giá hiệu năng của các DHT bao gồm nhiều khía cạnh:

- Xác định ngưỡng churn rate mà các DHT hoạt động tốt.

- Phân tích ảnh hưởng của tham số thiết kế đến hiệu năng của DHT. - So sánh hiệu năng của các DHT khác nhau.

- Đánh giá tính khả mở của các DHT.

Các đánh giá được thực hiện trong dải churn rate rộng từ cao đến thấp, đặc biệt chú trọng đến trường hợp churn rate cao. Khi churn rate càng cao, độ ổn định của mạng càng thấp thì hiệu năng của các DHTs càng giảm. Do đó một trong những nhiệm vụ đầu tiên của phần đánh giá hiệu năng là xác định ngưỡng churn rate mà các DHT hoạt động với hiệu năng cao.

Đánh giá ảnh hưởng của các tham số thiết kế đến hiệu năng một DHTs cho phép xác định các tham số quan trọng đối với hiệu năng của DHT và xác định khoảng giá trị của các tham số trong đó DHTs làm việc tốt.

3.2. Khảo sát các simulator mô phỏng mạng overlay

Cộng đồng nghiên cứu sử dụng khá nhiều simulator khác nhau, có simulator đang được phát triển, có simulator khơng được phát triển tiếp.

Simulator Ngôn ngữ Trạng thái License

P2Psim C++ Active GPL

PeerSim Java Active LGPL

Query-Cycle

Simulator Java Inactive Apache

Narses Java Inactive GPL-like

Neurogrid Java Inactive GPL

GPS Java Inactive Open-Source, No

License

Overlay Weaver Java Active Apache

Luận văn thạc sỹ KHMT Chương trình thử nghiệm

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

53

PlanetSim Java Active LGPL

Bảng 3.1. Trạng thái phát triển của các simulator

Đặc điểm của các simulator như sau:

Simulator Kiến trúc Tính dễ dùng

Tính khả mở (max nodes)

P2Psim Discrete-event cho mạng P2P có cấu trúc Rất ít tài liệu 3000 node

PeerSim

Query-Cycle hoặc

Discrete – event cho mạng khơng cấu trúc. Có thể mơ phỏng node j oining, departing và failing.

Chỉ có mơ phỏng Query -

Cycle là có tài liệu 106 node

Narses Discrete-event, flow - based

topology có thể điều chỉnh

600 node, tùy thuộc vào

topology bên dưới 600 node

Overlay Weaver

Giả lập phân tán và một số giải thuật cho

structured overlay

Tài liệu về API và mã nguồn

tốt 4000 node

PlanetSim Mô phỏng discrete - event, sử dụng API chung Có tài liệu về thiết kế và API

100.000 node Neurogrid Discrete-event cho mạng khơng có cấu trúc, có thể chỉnh sửa để sử dụng cho mạng có cấu trúc

Có tài liệu mở rộng trên web 300.000 node

Luận văn thạc sỹ KHMT Chương trình thử nghiệm

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

54

Simulator Thống kê Underlying network

P2Psim Cung cấp một lượng hữu hạn

thống kê.

end-to-end time graph, G2 graph, GT-ITM, random, và Euclidean

PeerSim Có thể cài đặt các component

để thống kê dữ liệu Khơng được mơ hình hóa

Narses Có hỗ trợ nhưng phải cài đặt Một số topology

Overlay Weaver Không thể thu thập thống kê Không được mô hình hóa

PlanetSim Khơng có cơ chế thu thập thống

kê nhưng có thể xem trực quan Một số ít topology

Neurogrid Cần sửa mã nguồn Khơng được mơ hình hóa

Bảng 3.2. Đặc điểm của các simulator

3.3. Phần mềm mô phỏng P2PSim

P2PSim là phần mềm mã nguồn mở, đa tiến trình, discrete event để mô phỏng mạng overlay có cấu trúc với nhiều topology khác nhau như end-to-end time graph, G2 graph, GT-ITM, random, và Euclidean. P2PSim do một nhóm nghiên cứu mạng P 2P tại Đ ạ i h ọ c MIT phát triển. P2PSim được nhiều nhóm nghiên cứu sử dụng để nghiên cứu DHTs.

Luận văn thạc sỹ KHMT Chương trình thử nghiệm

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

55

Nó có thể mơ phỏng sáu loại giao thức DHTs khác nhau: Chord, Accordion, Koorde, Kelips, Tapestry, Kademlia. P2PSim hoạt động trên hệ điều hành Unix. P2Psim giúp hiểu mã nguồn của các giao thức mạng ngang hàng và so sánh sự khác nhau giữa các giao thức về độ tiện lợi, khả năng thực hiện.

Số node mà P2PSim có thể mơ phỏng phụ thuộc vào giao thức thiết kế và tối đa có thể lên đến 3000 node (giao thức Chord).

Cài đặt

- P2Psim được cài đặt và dịch trên hệ điều hành Unix. Để cài đặt ta cần lấy file nguồn p2psim-0.3.tar.gz tại địa chỉ web:

http://pdos.csail.mit.edu/p2psim/howto.html.

- Để chạy P2PSim cần các gói GCC2.95.3. Để cài đặt GCC ta thực hiện các

bước sau: $ cp gcc-2.95.3.tar.gz /usr/local $ tar –zxvf gcc-2.95.3.tar.gz $ mv gcc-** gcc $ cd gcc $ ./configure --prefix=/usr/local/gcc $ make bootstrap $ make install $ export CC=/usr/local/gcc/bin/gcc $ export CXX=/usr/local/gcc/bin/g++

Một phần của tài liệu nghiên cứu một số cơ chế bảng băm phân tán trong mạng ngang hàng (Trang 48)

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

(78 trang)