b. Phương pháp Proportion
2.3.2 Hướng không sử dụng server ảo
Theo hướng này mỗi định danh trong không gian địa chỉ sẽ tương ứng với một node vật lý trong mạng. Để đạt được sự cân bằng trong hệ thống các giải pháp đưa ra đều phải dịch chuyển định danh của các node trong hệ thống khi có một node tham gia hoặc rời khỏi hệ thống. Một thuật toán điển hình đi theo hướng này đó là cân bằng tải theo ngưỡng.
Thuật toán cân bằng tải theo ngưỡng
Thuật toán cân bằng tải theo ngưỡng luôn duy trì được tải của mỗi node dưới một ngưỡng nào đó. Một node trong mạng sẽ cố gắng chuyển tải cho các node khác khi tải của nó tăng quá ngưỡng . Xét một dãy các ngưỡng
i i
T c với i ≥ 1 và c là một hằng số nào đó. Khi tải của một node vượt quá ngưỡng Tj, node đó sẽ khởi tạo thuật toán cân bằng tải theo ngưỡng.
Hình 17.(a) Node A chuyển tải cho node láng riềng B và (b) Chuyển định danh của node C vào giữa A và B. Độ cao của mỗi hình tương ứng là biểu diễn tải của các
node.
Ý 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 node n trong mạng vượt quá một ngưỡng Tj nào đó thì đầu tiên nó cố gắng chuyển tải cho một trong hai láng riềng có tải nhỏ hơn. Nếu cả hai láng riềng đều có tải lơn hơn và không thể nhận được tải nữa thì nó tìm một node nhẹ tải trong mạng và có tải nhỏ nhất, nhờ node này nhận tải hộ bằng cách dịch chuyển định danh của node nhẹ tải vừa tìm được vào giữa node n và predecessor của n. Để tìm một node nhẹ tải, node n phát một thông điệp hỏi successor của n, successor của n tính toán tải của nó và gửi trả lời node n nếu nó thỏa mãn điều kiện node nhẹ tải có thể dịch chuyển được. Ngược lại, successor của n phát tiếp thông điệp để hỏi node tiếp theo trong vòng Chord (node tiếp theo theo chiều kim đồng hồ). Quá trình này tiếp tục cho đến khi tìm được một node nhẹ tải thỏa mãn điều kiện, hoặc là duyệt hết các node mà không tìm được node nào thỏa mãn.
Đã có một số tác giả đề xuất phương pháp cân bằng tải theo hướng này, cụ thể là:
Theo tác giả H. Feelif, M. Kitsuregawa, and B. C. Ooi:
Khi tải của một Node trong hệ thống vượt quá một ngưỡng nào đó thì nó thực hiện việc cân bằng tải theo các bước sau:
a). Xác định tải của các láng riềng của nó để chọn ra láng riềng có tải nhỏ hơn. b). Chuyển tải của nó sang láng liếng có tải nhỏ vừa tìm được ở bước a.
B B
Hình 18. Node A có tải vượt quá ngưỡng. Node B có tải thấp hơn trong hai láng riềng của A. Tải được chuyển từ Node A cho Node B
Theo tác giả Prasanna Ganesan
Đưa ra một cải tiến dựa vào phương pháp cân bằng tải theo ngưỡng: Tác giả thấy rằng: nếu các Node láng riềng có tải cao thì việc cân bằng tải khi hệ thống đạt đến mức độ cân bằng thì lượng tải di chuyển trong hệ thống sẽ nhiều hơn khi định danh lại thứ tự các Node. Nếu một trong 2 Node láng riềng có thể nhận được tải thì nó sẽ chuyển tải cho Node láng riềng đó.
Hình 19. Node A có tải vượt quá ngưỡng. Node B có tải thấp hơn trong 2 láng riềng của A. Tải được chuyển cho node B
Nếu các Node láng riềng không nhận được tải thì nó sẽ đi tìm Node có tải thấp nhất trong hệ thống và nhờ Node đó chịu tải hộ.
Hình 20. Node A có tải vượt quá ngưỡng, node E chuyển tải cho F, E di chuyển vị trí đến giữa A và B để nhận tải
Giải pháp này tải giữa các Node được di chuyển thực sự.
Tác giả Jonathan Ledlie
Sử dụng ý tưởng của các tác giả: H. Feelif, M. Kitsuregawa, and B. C. Ooi và Prasanna Ganesan đã giới thiệu ở trên. Tác giả có hai cải tiến
- Sử dụng khái niệm Utilization (Hệ số sử dụng) thay cho Workload bởi vì thuật toán ban đầu đã giả thiết các nút có khả năng tải giống nhau.
- Các nút chỉ thực hiện việc cân bằng tải khi chúng tăng thêm đến một mức nào đó.
Mỗi nút cho duy nhất một VS, các ID đã chọn ngẫu nhiên khi khởi tạo. Thuật toán cân bằng tải được thực hiện theo các bước ở trên. Với thuật toán này nó thực hiện cân bằng tải cho một node với VS là v vào thời điểm t. Các nút thiết đặt giá trị Unitization hiện tại của mình đến khi tăng đến một mức nào đó. Khi một node đó tăng đến một ngưỡng . Nếu Level của một nút tăng lên thì nó bắt đầu thực hiện cân bằng tải, trước hết nó sẽ xem xét nhờ các hàng xóm của mình để nhờ chịu tải hộ, trước tiên VS v sẽ xem xét điều chỉnh với Successor và Predecessor. Nếu như Predecessor nhẹ tải hơn so với v, ID của nó sẽ được dịch chuyển về phía v, như vậy v được giảm tải. v cũng có thể di chuyển ID của nó về phía Predecessor khi đó tải của v được chuyển cho Successor chịu tải hộ. Trong trường hợp các hàng xóm không chịu tải hộ được, nó sẽ đi tìm một node nhẹ tải trong hệ thống và di chuyển nút đó tới cạnh v để giảm tải cho v nhưng với điều kiện khi nút mà có thể chịu tải hộ cho v di chuyển đi thì nó không làm cho successor của nút đó quá tải.
Hình 21. Node A có tải vượt quá ngưỡng; Node G là nhẹ tải khi di chuyển không làm cho Successor(G) bị quá tải; di chuyển vị trí của G đến giữa A và B để G chịu
tải
Theo giải pháp này
- Tải của các Node không được di chuyển mà chỉ là di chuyển định danh của các Node. (Mục đích của cân bằng tải là cân bằng số Query truy vấn đến các Node)
- Số lượng các thông báo phát ra để đi tìm một Node nhẹ tải tối thiểu là Log(N) thông báo.
- Vì là chọn ngẫu nhiên Log(N) định danh nên chưa chắc đã tìm được Node có tải nhẹ thỏa màn điều kiện dịch chuyển.
Đánh giá: Các thuật toán cân bằng tải theo ngưỡng hoạt động hiệu quả khi trong mạng có tỷ lệ số node nặng tải so với số node nhẹ tải là thấp. Trong trường hợp này node nặng tải thường chuyển tải ngay cho các node láng riềng, do đó tải truy vấn để tìm node nhẹ tải giảm đáng kể.
Ngược lại, khi tỷ lệ trên cao, các node trong mạng hầu hết đều quá tải, khả năng chuyển tải của node quá tải cho láng riềng hầu như không xảy ra, chính vì vậy tải truy vấn đề tìm node nhẹ tải tăng rất nhanh. Chính điều này làm cho hệ thống đạt độ cân bằng chậm, thuật toán không hiệu quả trong trường hợp này.
Một nhược điểm nữa của thuật toán này là nó giả sử rằng khả năng của các node tham gia hệ thống là như nhau, trong thực tế khả năng của các node tham gia mạng là không đồng đều nhau, có node mạnh, có node yếu. Do đó, thuật toán cũng không hiệu quả trong trường hợp này.
2.3.3 Kết luận
Trong chương này luận văn đã trình bày về khái niệm cân bằng tải, tìm hiểu về các nguyên dẫn đến mất cân bằng tải và nghiên cứu hai hướng giải pháp cho cân bằng tải, trong đó có sự đánh giá các giải thuật này. Với việc nghiên cứu những nội dung trên là cơ sở để chúng tôi đưa ra đề xuất cải tiến thuật toán cân bằng tải theo ngưỡng được trình bày ở chương 3.
CHƯƠNG 3 - ĐỀ XUẤT CẢI TIẾN THUẬT TOÁN CÂN BẰNG TẢI THEO NGƯỠNG
Như đã nêu ở trên, mạng ngang hàng có cấu trúc sử dụng giải thuật Bảng băm phân tán (Distributed Hash Table – DHT). Một vấn đề rất quan trọng trong mạng DHT đó là cân bằng tải.
Đã có nhiều nghiên cứu đưa ra các giải pháp để giải quyết vấn đề này. Một số tập trung vào việc cân bằng không gian định danh làm cho khoảng cách giữa các node trở nên đồng đều. Tuy nhiên giải pháp này chỉ tốt trong điều kiện lý tưởng. Các nhà nghiên cứu đã chỉ ra rằng các phân bố truy vấn là không đồng đểu, sự vào ra của các node là ngẫu nhiên và khả năng lưu trữ của các node khác nhau là cũng rất khác nhau.
Giải pháp cân bằng tải theo ngưỡng được trình bày trong chương 2 thực hiện cân bằng tải khá tốt, tuy nhiên với phương pháp này ta nhận thấy còn có một số tồn tại như sau:
- Số lượng các thông báo phát ra để đi tìm một Node nhẹ tải tối thiểu là Log(N) thông báo.
- Vì là chọn ngẫu nhiên Log(N) định danh nên chưa chắc đã tìm được Node có tải nhẹ thỏa mãn điều kiện dịch chuyển.
Trên cơ sở nghiên cứu giải pháp cân bằng tải theo ngưỡng chúng tôi đề xuất Giải pháp cân bằng tải theo ngưỡng cải tiến, trong giải pháp của chúng tôi đề xuất giảm bớt số lượng các thông báo phát ra để đi tìm một nút nhẹ tải. Và có phương pháp chọn Node nhẹ tải thoả mãn điều kiện dịch chuyển một cách có hiệu quả hơn. Giải pháp đề xuất của chúng tôi có 2 điểm khác biệt so với các thuật toán đã có :
1) Chúng tôi nghiên cứu thuật toán cân bằng tải theo ngưỡng do Ganesan [9] đưa ra và khái niệm Directory được sử dụng trong các thuật toán cân bằng tải có sử dụng server ảo từ đó đề xuất một thuật toán cân bằng tải mới hoạt động hiệu quả hơn trong các hệ thống dựa trên DHT.
2) Nếu như các thuật toán đề xuất trước đây thường không xem xét đến tải xử lý các câu truy vấn thì. Thuật toán của chúng tôi đề xuất mới này có xem xét đến cả tải xử lý các câu truy vấn tìm kiếm một node trong quá trình thực hiện cân bằng tải. Khi hệ thống đạt đến mức độ cân bằng, số lượng các câu truy vấn để tìm kiếm một node là khá nhiều.
3) Ngoài ra, chúng tôi nghiên cứu các đặc điểm của mạng P2P trong thực tế mà các tác giả đã đưa ra: sự ra vào của các node, khả năng của các node và sự phân bố dữ liệu của các node để áp dụng vào hệ thống của chúng tôi.