Giả mã của phương pháp tìm kiếm nâng cao

Một phần của tài liệu (LUẬN án TIẾN sĩ) nghiên cứu nâng cao hiệu năng hoạt động của mạng ngang hàng có cấu trúc (Trang 45)

Trong hình 1.9, nút n8 tìm kiếm successor của khóa k54. Nút n42 là nút

gần khóa k54 nhất trong bảng định tuyến của nút n8, cho nên nút n8 thông qua

nút n42 để chuyển tiếp câu truy vấn. Tương tự truy vấn chuyển qua nút n51 và đến đích là nút n56.

1.4.2.3. Tham gia và ổn định mạng

Mạng Chord phải giải quyết các vấn đề với việc một nút mới tham gia vào mạng, rời khỏi mạng và đột ngột rời khỏi mạng. Để tham gia vào mạng, nút n thông qua nút n' đã tồn tại trong mạng. Nút n' thực hiện hàm

find_successor với tham số đầu vào là định danh id của nút n, truy vấn trả lại

kết quả nút n''successor của nút n. Kết thúc truy vấn, nút n biết được nút successor n'' của nó. Nút n thơng báo cho nút successor n'' về sự hiện diện của nó trong mạng để nút n'' cập nhật lại con trỏ predecessor đến nút n. Nút n khởi tạo bảng định tuyến và điền thông tin vào bảng định tuyến bằng cách sử dụng hàm find_successor. Cuối cùng các khóa được quản lý bởi nút n'' có định danh nhỏ hơn hoặc bằng n được chuyển về cho nút n quản lý.

Chord sử dụng giao thức stabilization để kiểm tra tính hợp lệ và cập nhật con trỏ successor khi một nút tham gia và rời khỏi mạng. Giao thức stabilization yêu cầu bổ sung thêm một con trỏ predecessor và được thực hiện

định kỳ trên mỗi nút. Hàm stabilize() trên nút n yêu cầu nút successor của n

trả lại nút predecessor p. Nếu p bằng n, n và successor của n thống nhất với

nhau về con trỏ successor và predecessor tương ứng. Nếu p nằm giữa n và successor của n, điều đó chứng tỏ p là nút vừa tham gia vào hệ thống và là successor của n, vì vậy nút n cập nhật con trỏ successor là nút p và thông báo

cho nút p cập nhật con trỏ predecessor là nút n.

nhất quán giữa con trỏ successor và predecessor thông qua hàm stabilize().

Sau khi nút n xác định được predecessor, nó sao chép tất cả các khóa mà nó quản lý, các khóa giữa predecessor(n) và n.

Ở giai đoạn này, tất cả các con trỏ successor được cập nhật và các truy

vấn có thể được định hướng đến đích. Vì nút mới n khơng có trong bảng tìm đường của các nút khác, cho nên các truy vấn được chuyển tiếp qua

predecessor của n. Sau đó, predecessor của nút n chuyển tiếp truy vấn đến n

thông qua con trỏ successor của nó. Nhiều nút tham gia mạng đồng thời có

thể dẫn đến nhiều chuyển tiếp tuyến tính thơng qua con trỏ successor.

Số lượng các nút trong bảng tìm đường cần được cập nhật là O(logN),

với N là số nút trong hệ thống. Để tối ưu hóa chi phí cập nhật bảng tìm đường khi các nút ra vào mạng nhiều, mỗi nút chạy thủ tục fix_finger() một cách

định kỳ để cập nhật bảng tìm đường. Nó chọn một hàng ngẫu nhiên trong bảng tìm đường tại vị trí i (1 <i ≤ m) và kiểm tra tính đúng đắn của successor hiện tại của n+2i -1.

Khi một nút n chủ động rời mạng, các khóa do n quản lý được chuyển

cho nút successor của n và thông báo cho các nút successor và predecessor n

biết về việc n rời mạng. Điều này đảm bảo dữ liệu không bị mất và thông tin định tuyến trong bảng tìm đường khơng bị thay đổi.

Chống lỗi và tạo bản sao: Khi một nút n đột ngột rời mạng sẽ gây ra

việc mất mát các khóa, do đó một số nút sẽ khơng truy vấn được các khóa bị mất. Chord giải quyết vấn đề này bằng cách mỗi nút lưu thêm thông tin một danh sách các nút nằm sau nó trong vịng Chord. Nếu một nút n đột ngột

không liên lạc được với successor thì nó sẽ sử dụng các nút liền sau trong

danh sách đó. Do đó, một khóa và dữ liệu sẽ chỉ bị mất khi có log2(N)+1 các nút trong danh sách đồng thời rời khỏi mạng.

1.4.3. Một số giao thức mạng ngang hàng có cấu trúc khác

1.4.3.1. Giao thức CAN

CAN (Content Addressable Network) [18] là giao thức mạng ngang hàng có cấu trúc khác, hoạt động dựa trên cấu trúc bảng băm phân tán. Mỗi nút trong mạng CAN quản lý một vùng (zone) trong khơng gian định danh và có thơng tin về các vùng lân cận trực tiếp. CAN hỗ trợ các thao tác cơ bản như chèn, tìm kiếm và xóa các thơng tin khóa từ bảng băm. Hệ thống được xây dựng dựa trên CAN có kiến trúc hồn tồn phân tán và có khả năng mở rộng, mỗi nút chỉ cần duy trì một lượng thông tin rất nhỏ về các nút trong mạng. Chức năng định tuyến và tìm kiếm trong CAN có khả năng chịu lỗi tốt, khi gặp sự cố các nút có thể định tuyến theo tuyến đường khác. CAN sử dụng không gian tọa độ ảo d-chiều để lưu trữ các giá trị khóa trong bảng băm. Mỗi nút đều có thơng tin về các nút lân cận trực tiếp trong hệ thống. Một nút mới khi tham gia vào mạng sẽ chọn ngẫu nhiên một điểm trong không gian d

chiều và liên hệ với nút chịu trách nhiệm quản lý vùng này. Tiếp theo, nút chịu trách nhiệm quản lý vùng chia vùng đó thành hai phần và gán một phần cho nút mới tham gia hệ thống. Sau đó, nút này gửi thơng báo đến tất cả các nút lân cận để cập nhật bảng định tuyến. Mỗi nút duy trì thơng tin trong bảng định tuyến khoảng N nút. Khi một nút rời khỏi hệ thống, vùng khơng gian do nút đó quản lý được chuyển cho nút lân cận quản lý. Các nút trong mạng CAN trao đổi thông tin với nhau theo định kỳ. Giao thức CAN cần (Log

N1/d) bước để tìm kiếm một nút chứa nội dung cần tìm với N và d biểu diễn số nút và số chiều tương ứng.

Pastry [19] [22] là một giao thức mạng P2P có cấu trúc khá giống với Chord được cài đặt dựa trên bảng băm phân tán trong đó các giá trị khóa được lưu trữ trong một mạng ngang hàng. Trong hệ thống này, khi tham gia mạng, một định danh nodeID được gán ngẫu nhiên cho nút. Mỗi nút duy trì một

bảng định tuyến dọc theo các nút láng giềng. Khi một nút mới tham gia vào hệ thống nó cập nhật bảng định tuyến và thông báo cho các nút lân cận khác về sự hiện diện của nó. Một nút gặp sự cố và được thay thế bằng một nút khác khi có một nút trung gian khơng thể giao tiếp với nút này. Pastry cần Θ (logN) bước để định tuyến gói tin đến đích, trong đó N là số nút đang hoạt động

trong mạng Pastry. Một nút trong mạng Pastry sử dụng định danh nodeID liên quan đến thơng điệp để định hướng gói tin đến nút gần nhất. Pastry là giao thức có khả năng tự tổ chức và phân tán cao. Pastry có khả năng xác định tuyến đường tốt nhất để truyền thông giữa các nút.

1.5. Kết luận

Chương 1 đã trình bày các kiến thức cơ bản về mạng ngang hàng phục vụ cho việc nghiên cứu thuật toán nâng cao hiệu năng hoạt động của mạng ngang hàng có cấu trúc. Nội dung của chương đề cập đến các vấn đề của mạng ngang hàng như khái niệm mạng ngang hàng, các đặc trưng của mạng ngang hàng, phân loại mạng ngang hàng và các ứng dụng trên mạng ngang hàng, bảng băm phân tán, giao thức mạng ngang hàng có cấu trúc Chord.

Các chương tiếp theo của luận án giải quyết vấn đề cân bằng tải xử lý câu truy vấn, điều khiển tắc nghẽn khi định tuyến để nâng cao tỷ lệ thành công của các câu truy vấn; vấn đề sao lưu dữ liệu để đảm bảo tính sẵn sàng cho dữ liệu trong mạng, qua đó nâng cao hiệu năng hoạt động của mạng ngang hàng có cấu trúc.

Chương 2. CÂN BẰNG TẢI TRONG MẠNG NGANG HÀNG CÓ CẤU TRÚC

Các nút trong mạng ngang hàng có cấu trúc được xây dựng từ máy tính của nhiều người dùng, mỗi nút có khả năng xử lý các cấu truy vấn khác nhau, mỗi câu truy vấn có tần suất xuất hiện khác nhau, v.v. Do đó, trong mạng thường xuất hiện các nút bị quá tải gây ảnh hưởng đến hiệu năng hoạt động của hệ thống mạng. Để cải thiện hiệu năng hoạt động của mạng ngang hàng có cấu trúc, một trong các vấn đề cần phải giải quyết là đảm bảo cân bằng tải xử lý truy vấn cho các nút trong mạng.

Chương 2 trình bày về cân bằng tải trong mạng ngang hàng có cấu trúc và đề xuất thuật tốn cân bằng tải trong mạng ngang hàng có cấu trúc. Thuật toán cân bằng tải đề xuất trong chương này giúp một nút xử lý truy vấn được tốt hơn, nâng cao được tỷ lệ thành công của các câu truy vấn, qua đó nâng cao hiệu năng hoạt động của hệ thống mạng ngang hàng có cấu trúc. Nội dung của chương bao gồm:

- Một số nghiên cứu liên quan đến cân bằng tải trong mạng ngang hàng có cấu trúc.

- Thuật tốn cân bằng tải đề xuất.

- Đánh giá hiệu quả của thuật toán cân bằng tải đề xuất. - Kết luận chương.

2.1. Đặt vấn đề

Mạng ngang hàng [18], [27], [21] sử dụng cấu trúc dữ liệu bảng băm phân tán đưa ra cách tiếp cận mới cho các ứng dụng mạng như chia sẻ tệp tin [28], [29], [73], [74], [75], xử lý truy vấn [30], các dịch vụ tên [31] và các

(id) được phân hoạch giữa các máy tính (các nút) tham gia mạng. Mỗi nút chịu trách nhiệm quản lý một phần không gian định danh. Mỗi định danh liên quan đến một mục dữ liệu (data item) và một nút trong hệ thống. Dữ liệu được ánh xạ vào vùng khơng gian do một nút quản lý. Để tìm kiếm nút quản lý một định danh dữ liệu cho trước, DHT sử dụng cơ chế tìm kiếm “tham lam” liên hệ với logN nút khác trong hệ thống và mỗi nút cần duy trì một

bảng tìm đường có kích thước O(logN), với N là số nút trong hệ thống.

Mạng ngang hàng dựa trên DHT có nhiều ưu điểm trong việc tổ chức lưu trữ và tìm kiếm dữ liệu, xong cũng tồn tại khơng ít những nhược điểm. Một trong những vấn đề cần giải quyết trong các mạng DHT là làm thế nào để cân bằng tải xử lý truy vấn giữa các nút tham gia hệ thống. Yếu tố gây mất cân bằng tải xử lý truy vấn trước hết là khả năng không giống nhau của các nút tham gia vào mạng. Mỗi nút quản lý một số lượng khóa dữ liệu và khả năng xử lý các câu truy vấn khác nhau. Điều này dẫn tới tình trạng mất cân bằng tải xử lý truy vấn giữa các nút, có nút phải xử lý nhiều câu truy vấn dẫn đến tình trạng q tải, có nút xử lý ít câu truy vấn hơn.

Hơn thế nữa, ngay cả trong trường hợp tất cả các nút trong mạng đều có khả năng xử lý truy vấn như nhau, các mạng DHT vẫn chứa đựng trong nó nhiều yếu tố gây mất cân bằng tải như việc lựa chọn ngẫu nhiên định danh của các nút và của dữ liệu [21].

Ngồi ra, cịn có nhiều ngun nhân khác ảnh hưởng đến cân bằng tải xử lý truy vấn của hệ thống, như tính phổ biến của các tệp tin. Nghiên cứu của Gummadi cùng các cộng sự và một số nghiên cứu khác chỉ ra rằng truy vấn đặt vào các nút tuân theo một phân bố dạng Zipf khi phân tích mạng Kaza [34], [35], [36]. Sự ra/vào hệ thống của các nút (nút Churn) không giống nhau cũng ảnh hưởng rất lớn đến khả năng cân bằng tải xử lý truy vấn của các nút

trong hệ thống. Bustanment [36] khi phân tích mạng Gnutella thấy rằng thời gian sống của một nút trong mạng xấp xỉ theo phân bố xác xuất Pareto.

Đã có nhiều nghiên cứu về cân bằng tải được các tác giả đưa ra cho hệ thống mạng mang hàng dựa trên DHT. Nói chung, các thuật tốn này được phân thành hai nhóm chính:

(a) Theo hướng sử dụng khái niệm server ảo [27], [28], [37], [38]. Mỗi

nút vật lý quản lý một hoặc nhiều server ảo với các định danh ngẫu nhiên

được chọn từ không gian định danh. Các server ảo hoạt động như các nút

tham gia mạng DHT. Trong hệ thống, các nút có khả năng đồng đều cao, mỗi nút vật lý cần duy trì O(logN) server ảo để làm giảm nhân tố mất cân bằng

xuống một hằng số. Với hệ thống DHT gồm nhiều nút có khả năng chịu tải khác nhau, mỗi nút vật lý sẽ chọn một số lượng server ảo tỷ lệ với khả năng của nó. Tuy nhiên, thuật tốn sử dụng server ảo cũng tồn tại những yếu điểm, như để quản lý được các server ảo thì mỗi nút phải duy trì khá nhiều liên kết đến các server ảo đó, thơng thường số liên kết này là O(logN), với N là số nút trong hệ thống.

(b) Theo hướng không sử dụng khái niệm server ảo [39], [40], [41], [34], [72]. Mỗi định danh trong không gian địa chỉ sẽ tương ứng với một nút vật lý trong mạng. Để đạt được sự cân bằng trong hệ thống các thuật toán đưa ra đều phải dịch chuyển định danh của các nút trong hệ thống khi có một nút tham gia hoặc rời khỏi hệ thống. Nhược điểm của các thuật toán này là làm tăng tải của hệ thống khi dịch chuyển dữ liệu cũng như phải cập nhật lại các liên kết khi định danh của một nút thay đổi.

Nói chung, các thuật tốn đưa ra cho vấn đề cân bằng tải đều giả sử rằng khả năng của các nút trong hệ thống là giống nhau, hầu hết các thuật toán đều

Chương này đề xuất thuật toán cân bằng tải cải tiến từ thuật toán cân bằng tải theo ngưỡng do Ganesan [3] đề xuất, với tên gọi là thuật toán ThresholdPlus. Thuật tốn đề xuất khơng sử dụng khái niệm server ảo do A. Rao [42] đưa ra. Các nút quá tải nhận được sự cân bằng tải thông qua dịch chuyển định danh để chuyển tải cho các nút khác. Tải trong thuật toán đề xuất được hiểu theo nghĩa là khả năng xử lý câu truy vấn của các nút. Thuật tốn ThresholdPlus

được đánh giá thơng qua các mơ phỏng trong một hệ thống gần giống với hệ thống mạng ngang hàng thực tế. Kết quả đánh giá cho thấy thuật tốn đề xuất có tỷ lệ thành cơng các câu truy vấn tốt hơn thuật toán cân bằng tải theo ngưỡng khoảng 12%, đồng thời đạt được thông lượng mạng tốt hơn.

2.2. Các nghiên cứu liên quan

2.2.1. Cân bằng tải theo ngưỡng

Thuật toán cân bằng tải theo ngưỡng [3] ln duy trì tải của mỗi nút dưới một ngưỡng  nào đó. Một nút trong mạng sẽ cố gắng chuyển tải cho các nút khác khi tải của nó tăng quá ngưỡng . Xét một dãy các ngưỡng 𝑇𝑖 = ⌊𝑐𝑖⌋ với i ≥ 1 và c là một hằng số nào đó. Khi tải của một nút vượt quá ngưỡng Tj, nút đó sẽ khởi tạo thuật tốn cân bằng tải theo ngưỡng.

Hình 2.1.(a) mô tả nút n1 chuyển tải cho nút láng giềng n2 và hình 2.1.(b) mơ tả việc chuyển định danh của nút n3 vào giữa n1 và n2. Độ cao của mỗi

hình tương ứng là biểu diễn tải của các nút.

Ý tưởng của thuật toán cân bằng tải theo ngưỡng được mô tả như sau: khi tải của một nút n trong mạng vượt quá một ngưỡng Tj thì đầu tiên nó cố gắng chuyển tải cho một trong hai nút láng giềng có tải nhỏ. Nếu cả hai nút láng giềng đều có tải lớn và khơng thể nhận được tải nữa thì nó tìm một nút nhẹ tải trong mạng và có tải nhỏ nhất, nhờ nút này nhận tải hộ bằng cách dịch chuyển định danh của nút nhẹ tải vừa tìm được vào giữa nút n và predecessor của n. Để tìm một nút nhẹ tải, nút n lựa chọn ngẫu nhiên p nút trong mạng để thử. Với mỗi nút n' được chọn để thử, nút n' hỏi nút successor của nó xem khi nút n' dịch chuyển định danh sang vị trí khác có gây nặng tải cho nút

successor của n' hay không. Nếu nút n' có thể di chuyển được, nút n ghi nhận nút n' là một ứng cử viên để thực hiện di chuyển. Nếu nút n' không di chuyển được, nút n chọn các nút tiếp theo trong p nút để thử. Khi toàn bộ p nút được

Một phần của tài liệu (LUẬN án TIẾN sĩ) nghiên cứu nâng cao hiệu năng hoạt động của mạng ngang hàng có cấu trúc (Trang 45)

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

(158 trang)