Thuật toán ThresholdPlus

Một phần của tài liệu LUẬN VĂN:GIẢI PHÁP CÂN BẰNG TẢI SỬ DỤNG CẤU TRÚC THƯ MỤC CHO MẠNG NGANG HÀNG CÓ CẤU TRÚC doc (Trang 41 - 46)

b. Phương pháp Proportion

3.2Thuật toán ThresholdPlus

Ý tưởng đề xuất thuật toán của chúng tôi

 Không sử dụng Server ảo

 Sử dụng ý tưởng của Prasanna Ganesan cho vấn đề thực hiện cân bằng tải.  Sử dụng khái niệm Directory của A. Rao vào việc lưu trữ các Node nhẹ tải

Như đã giới thiệu ở phần trước thuật toán cân bằng tải theo ngưỡng khi mà một node quá tải nó sẽ đi tìm các node nhẹ tải ở các Directory và để tìm được node nhẹ tải thì thuật thời gian tìm kiếm phải mất tối thiểu Log(N) thông báo.

Thuật toán ThresholdPlus của chúng tôi nghiên cứu và đề xuất trên cơ sở của thuật toán Threshold được cải tiến ở cách thức tìm kiếm node nhẹ tải phù hợp và hiệu quả. Thuật toán của này được mô tả chi tiết, gồm ba bước như sau:

Bước 1: Node nhẹ tải thông báo cho các thư mục

Trong hệ thống có một số node có chức năng làm node để lưu trữ thông tin về các node nhẹ tải có thể dịch chuyển được, node này được gọi là thư mục (Directory), các node này được chọn một cách ngẫu nhiên từ hệ thống, cơ chế lựa chọn các node làm thư mục như sau:

Giả sử hệ thống có d thư mục, d là một số rất nhỏ so với số node vật lý trong hệ thống. Thư mục i sẽ được lưu ở node chịu trách nhiệm quản lý định danh D(i), trong đó D là một hàm băm ánh xạ mỗi giá trị i trong khoảng [0,d) vào một định danh trên vòng Chord một cách ngẫu nhiên.

Định kỳ trong khoảng thời gian nhất định, các node sẽ chạy thuật toán kiểm tra tải của mình. Nếu một node có định danh L kiểm tra thấy mình là nhẹ tải, nó sẽ gửi một thông điệp tới hỏi successor của mình xem nếu khi chuyển sang định danh khác có làm cho node successor hoặc predecessor quá tải hay không?. Nếu không làm quá tải cho các node này thì node L có thể di chuyển được, khi đó node L sẽ gửi thông báo chứa thông tin của nó cho node phụ trách thư mục i, trong đó i = h(L), h là hàm băm ánh xạ định danh của node L vào một giá trị trong khoảng [0,d) . Hay nói cách khác, node L sẽ gửi thông báo chứa thông tin tải của nó đến node phụ trách định danh D(h(L)). Hình vẽ 22 minh họa hệ thống gồm hai thư mục

Hình 22. Các node nhẹ tải A và F hỏi successor của nó (các đường mũi tên nét liên) và thông báo tình trạng tải cho thư mục 1 và thư mục 2 (các đường mũi tên nét đứt).

Bước 2: Chia sẻ tải cho các node láng giềng

Trong bước này, giả sử một node n trong hệ thống bị quá tải, quá trình nó thực hiện cân bằng tải diễn ra như sau:

Đầu tiên node quá tải n sẽ kiểm tra xem hai node láng giềng của mình là (predecessor của n và successor của n) có khả năng nhận tải được hộ được hay không.

Nếu được node n sẽ kiểm tra xem một trong hai láng riềng, láng riềng nào có tải thấp hơn nó sẽ thực hiện chia của mình cho node đó. Hình vẽ 23 và 24 mô tả quá trình chia sẻ tải của node nặng tải cho các node láng riềng.

Hình 23. Node A thực hiện cân bằng tải, node láng riềng B nhận tải hộ node A bằng cách dịch chuyển định danh về phía A

Hình 24. Node A thực hiện cân bằng tải, node A chia tải cho node láng giềng C bằng cách dịch chuyển định danh của A về phía B.

Bước 3: Định danh lại một node

Trong trường hợp hai láng giềng của n không thể gánh hộ tải cho node n thì node n sẽ chọn ngẫu nhiên một thư mục(Directory) i và gửi một thông điệp tới node phụ trách thư mục đó để tìm kiếm một node nhẹ tải.

Thư mục i sẽ xem xét vào yêu cầu giảm tải (chia tải) của node nặng tải và khả năng của các node nhẹ tải có trong thư mục để chọn ra một node nhẹ tải thích hợp nhất gửi cho node n. Node nhẹ tải này phải đảm bảo tính chất:

+ Nhận được tải cho node nặng tải mà không bị quá tải

+ Khả năng của node nhẹ tải là tốt nhất trong số các node nhẹ tải có thể nhận tải hộ được node nặng tải.

Dựa trên thông tin trả lời từ thư mục i, node n sẽ yêu cầu node nhẹ tải mà nó biết dịch chuyển định danh về vị trí giữa predecessor(n) và n để chịu tải hộ node n. Nếu không tìm được node nhẹ tải nào thỏa mãn, node n sẽ hỏi các thư mục còn lại. Hình vẽ 25 mô tả quá trình này.

Hình 25. Node A hỏi thư mục 1 để tìm một node nhẹ tải có thể dịch chuyển được (đường mũi tên nét liên). Định danh của node nhẹ tải E được chuyển đến giữa

predecessor(A) và A để nhận tải hộ node A (đường mũi tên nét đứt).

Nhận xét

Thuật toán ThresholdPlus của chúng tôi đề xuất có hai điểm khác biệt so với các thuật toán trước đó:

Thứ nhất: Nếu như thuật toán Threshold nguyên thủy, để một node nặng tải tìm một node nhẹ tải thì node nặng tải phải đòi hỏi nhiều nhất (N-1) node (N là số node vật lý trong hệ thống) để tìm thấy một node nhẹ tải. Thuật toán

ThresholdPlus chúng tôi đề xuất sử dụng thư mục để chứa các node nhẹ tải có thể dịch chuyển được (tức là khi node này di chuyển đi sang vị trí khác không làm quá tải đến các node bên cạnh). Thư mục đảm bảo chắc chắn rằng khi trong hệ thống còn có một node nhẹ tải có thể di chuyển được thì node thực hiện quá trình cân bằng tải bao giờ cũng tìm được node nhẹ tải đó một cách nhanh chóng.

Thứ hai: Thư mục trong thuật toán ThresholdPlus chỉ chứa các node nhẹ tải có thể di chuyển được do đó số lượng node nhẹ tải trong thư mục quản lý ít hơn nhiều so với số server ảo nhẹ tải trong các thuật toán cân bằng tải dịch chuyển server ảo có sự dụng khái niệm thư mục. Chính điều cải tiến này làm giảm đáng kể việc quản lý liên kết đến các node nhẹ tải trong hệ thống.

Thuật toán được mô tả như sau: THRESHOLDPLUS(v,t)

1 Các node nhẹ tải thông báo tình trạng tải cho thư mục 2 v.levelt ngưỡng của node v tại thời điểm t (adsbygoogle = window.adsbygoogle || []).push({});

2 if v.levelt ≤ v.levelt-1 then 3 return

4 v’ láng riềng với ngưỡng nhỏ nhất 5 if v’.levelt < v.levelt then

6 chuyển tải từ v sang v’ 7 else

8 Hỏi thư mục để tìm node có tải nhẹ 9 s  node có tải nhỏ nhất

10 Chuyển định danh của s vào giữa Pred(v) và node v

Một phần của tài liệu LUẬN VĂN:GIẢI PHÁP CÂN BẰNG TẢI SỬ DỤNG CẤU TRÚC THƯ MỤC CHO MẠNG NGANG HÀNG CÓ CẤU TRÚC doc (Trang 41 - 46)