Hàng thứ nhất trong bảng định tuyến của một node chứa các node có ID khác với ID của node đó ở chữ số thứ nhất. Tương tự như vậy, hàng thứ hai trong bảng định tuyến chứa các node có ID giống với ID của node đó ở chữ số thứ nhất nhưng khác ở chữ số thứ hai. Các hàng còn lại của bảng định tuyến được tổ chức tương tự như vậy. Hình 2.6
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
36
minh họa cách chia không gian ID của Tapestry.
Để tăng tính dự phịng, ở mỗi mức, mỗi contact lại được dự phòng bởi c contact cùng nhóm.Một node Tapestry có bảng định tuyến với logβN mức, mỗi mức có c × β contact. Như vậy bảng định tuyến của Tapestry có kích thước c × β × logβN.
Mapping items onto nodes
Tapestry ánh xạ ID của item tới một node duy nhất gọi là root của ID. Nếu tồn tại node N có ID bằng với ID của item thì node được gọi là root của item đó. Nếu khơng tồn tại node có ID bằng với ID của item thì item được ánh xạ vào node có ID gần ID của nó nhất. Tapestry không chuyển item đến node nào đó trên mạng mà chỉ thiết lập con trỏ trên các node nằm trên đường đi từ node chứa item tới node root của item trỏ tới item.
Lookup process
Quá trình định tuyến của Tapestry diễn ra như sau. Để tìm một node gần với một ID x nhất, node sẽ dùng bảng định tuyến kiểm tra từ trên xuống dưới xem x rơi vào khoảng ID nào. Nếu x rơi vào khoảng ID khác với khoảng ID của node, node sẽ chuyển tiếp truy vấn tới contact của nó nằm trong khoảng ID đó. Quá trình cứ diễn ra như vậy cho đến khi đến node root của x. Nếu trong bảng định tuyến của node không tồn tại contact như vậy, node sẽ chuyển tiếp truy vấn tới node có ID gần với x nhất.
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
37
Hình 2.3. Đường đi của thơng điệp từ node 5230 tới node 42AD
Để thông báo về sự tồn tại của một item I, node n lưu item định kỳ gửi thơng điệp đến root của item đó. Mỗi node dọc đường đi của thông điệp sẽ lưu một con trỏ ánh xạ (I,n) thay vì lưu lại bản thân item. Khi có vài bản sao của một item trên một số node, mỗi node sẽ thơng báo về bản sao nó lưu. Một node nhận được nhiều thơng báo về một item, nó sẽ lưu ánh xạ theo thứ tự latency.
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
38
Hình 2.4. Ví dụ về Tapestry node publish item
Một node muốn truy vấn một item nào đó, nó sẽ gửi truy vấn đến root của item. Mỗi node trên đường đi sẽ kiểm tra xem nó có ánh xạ vị trí của item đó khơng, nếu có nó sẽ chuyển truy vấn theo hướng đến node lưu item, nếu khơng có nó sẽ chuyển tiếp truy vấn theo hướng đến root của item.
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
39
Hình 2.5. Ví dụ về Tapestry node tìm kiếm item
Join/leave and maintenance
Chèn một node N vào mạng bắt đầu bằng việc tìm kiếm node gốc S (có chung prefix độ dài p) của N. Node S sau đó gửi thơng điệp tới các node cùng chung prefix, các node này sau khi nhận được thông điệp sẽ chèn N vào trong bảng định tuyến của chúng và chuyển các ánh xạ tham chiếu vị trí nếu cần thiết.
Q trình khởi tạo bảng định tuyến của N diễn ra như sau. N tìm kiếm các neighbour gần nhất bắt đầu với mức định tuyến p, điền các neighbour này vào bảng định tuyến ở mức p dùng k node gần nhất. Sau đó N giảm p và tiếp tục quá trình như vậy cho đến khi các mức trong bảng định tuyến được điền đầy.
2.3. Kelips
Overlay graph
Kelisp băm khơng gian ID vào k nhóm sử dụng consistent hashing, đánh số từ 0 đến k-1. Do sử dụng thuật toán consistent hashing nên Kelips đảm bảo rằng số node trong mỗi nhóm là n/k với xác xuất cao.
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
40
- Affinity group view: thông tin về một tập các node nằm trong cùng nhóm.
- Contact: đối với mỗi nhóm, Kelips lưu thông tin về một tập nhỏ các node trong
nhóm đó.
- Filetuples: một tập các bộ, mỗi bộ lưu thơng tin về một file và node chứa file đó.
Một node chỉ lưu thông tin về các file chứa trong các node nằm cùng nhóm với node đó.
Hình 2.10 minh họa bảng định tuyến của một node trong hệ thống có 10 nhóm:
Hình 2.6. Mạng Kelips trong đó các node phân tán trong 10 nhóm affinity và trạng thái tại một node cụ th
Mapping items onto nodes
Một item được băm vào một trong các nhóm của hệ thống sử dụng cùng thuật toán consistent hashing được dùng để băm các node và được lưu trên một node bất kỳ trong nhóm này.
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
41
Lookup process
Khi một node muốn truy vấn một item, nó sẽ dùng consistent hashing xem item được
ánh xạ vào nhóm nào và gửi truy vấn đến contact gần nhất trong nhóm đó. Nếu trong các bộ của node contact có item cần tìm, node sẽ trả kết quả về cho node truy vấn, nếu node contact khơng có thơng tin về item cần tìm, node truy vấn có thể gửi yêu cầu truy vấn đến nhiều contact, hoặc node contact sẽ gửi yêu cầu truy vấn tới các node khác cùng nhóm với nó, hoặc node truy vấn có thể yêu cầu một node khác cùng nhóm với nó thực hiện truy vấn item.
Một node muốn chèn một item mới sẽ sử dụng consistent hashing xem item đó được ánh xạ vào nhóm nào. Sau đó node sẽ gửi yêu cầu chèn dữ liệu tới một contact thuộc nhóm đó, node contact sẽ chọn ngẫu nhiên một node bất kỳ trong nhóm và gửi yêu cầu chèn dữ liệu. Node này sẽ trở thành node lưu item. Nếu yêu cầu chèn dữ liệu không thực hiện được, quá trình gửi lại yêu cầu chèn dữ liệu diễn ra như quá trình gửi lại yêu cầu truy vấn.
2.4. Chord
Overlay graph
Chord sử dụng một khơng gian ID vịng trịn kích thước N. Một node Chord với ID là u có một con trỏ tới node đầu tiên đứng sau nó trong khơng gian ID theo chiều kim đồng hồ, ký hiệu là Succ(u) và một con trỏ tới node đứng trước nó trong khơng gian ID, ký hiệu là Pred(u). Các node tạo thành một danh sách liên kết hai chiều.
Bên cạnh đó, một node Chord lưu M = log2(N) con trỏ gọi là các finger. Tập các finger của node Chord u được xác định như sau: Fu={(u, Succ(u + 2i−1))}, 1≤ i≤ M. Với cách lựa chọn finger thế này, trong mạng Chord, các node quan sát không gian ID vịng như là khơng gian này bắt đầu từ ID của chúng. Đồng thời với cách lựa chọn finger của Chord, không gian ID sẽ được chia đôi, nửa thứ nhất cũng được chia đôi, rồi phần tư thứ
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
42
nhất lại được chia đơi, …
Hình 2.2 cho thấy một mạng với không gian ID N=16, mỗi node có M=log2(N)=4 finger. Mạng có các node với ID lần lượt là 0, 3, 5, 9, 11, 12. Cách xây dựng bảng finger table được thể hiện trong hình 2.2(b). Node n chọn các finger của nó bằng cách xem nó như là điểm khởi đầu của không gian ID, rồi chọn finger là successor của các ID n +
20, n + 21, n + 22, và n + 23. ID cuối cùng n + 23 chia không gian ID thành hai phần bằng nhau, ID trước đó n + 22 chia nửa thứ nhất thành hai phần bằng nhau, ID n + 21 chia phần tư đầu tiên thành hai phần bằng nhau, tương tự ID n + 20 chia phần tám thứ nhất thành hai phần bằng nhau. Tuy nhiên, có thể khơng có node có ID giống với ID tại điểm chia, khi đó successor của ID tại điểm chia được chọn làm finger. Hình 2.2(c) cho thấy bảng
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
43
Hình 2.7 (a) Một mạng Chord với 6 node, 5 item và N=16. (b) Nguyên tắc chung của bảng routing table 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ó