Chương 1 KIẾN THỨC NỀN TẢNG
2.3. Cải tiến thuật toán cân bằng tải theo ngưỡng
2.3.2. Thuật toán ThresholdPlus
cân bằng tải và đặt tên là ThresholdPlus. Thuật tốn có ba sửa đổi so với thuật tốn ban đầu:
(a) Dùng hệ số sử dụng của một nút thay cho khối lượng cơng việc vì thuật tốn ban đầu giả định các nút có khả năng giống nhau.
(b) Các nút bắt đầu tái cân bằng khi tăng mức hệ số sử dụng.
(c) Sử dụng thư mục để quản lý các nút nhẹ tải có thể di chuyển được. Thuật toán Threshold ban đầu sử dụng tải xử lý truy vấn để thực hiện cân bằng tải và coi các nút có khả năng xử lý truy vấn giống nhau. Tuy nhiên, với mạng ngang hàng thơng thường các nút có khả năng xử lý truy vấn khác nhau, hai nút có cùng tải xử lý truy vấn nhưng có khả năng xử lý truy vấn khác nhau thì nút có khả năng xử lý truy vấn thấp hơn sẽ có khả năng bị quá tải lớn hơn. Do đó, trong thuật tốn đề xuất chúng tơi dùng hệ số sử dụng thay cho tải xử lý truy vấn để thực hiện cân bằng tải. Đồng thời, việc sử dụng thư mục để quản lý các nút nhẹ tải có thể di chuyển được giúp cho chi phí tìm kiếm nút nhẹ tải sẽ thấp hơn, thời gian tìm kiếm nhanh hơn và quản lý các nút nhẹ tải được tập trung hơn.
Khi tìm kiếm một nút nhẹ tải, nút nặng tải chỉ cần hỏi thư mục quản lý nút nhẹ tải chứ không phải phát câu truy vấn để tìm kiếm một nút nhẹ tải trong số các nút đang tồn tại trong mạng. Thư mục sẽ trả lại thông tin về nút nhẹ tải cho nút nặng tải để thực hiện việc cân bằng tải.
Khi các nút trong hệ thống có sử thay đổi (các nút vào, ra hệ thống, định danh của các nút thay đổi), thuật toán Threshold dựa theo cơ chế của thuật tốn Chord để cập nhật lại bảng tìm đường cho các nút.
Thuật tốn đề xuất được mơ tả chi tiết, gồm hai bước dưới đây:
Hệ thống gồm một số nút được chọn ngẫu nhiên làm thư mục để lưu trữ thông tin về các nút nhẹ tải có thể dịch chuyển được. Cách thức lựa chọn các nút làm thư mục như sau. Giả sử hệ thống có d thư mục được đánh số từ 0..(d-
1), d là một số rất nhỏ so với tổng số nút vật lý trong hệ thống. Thư mục i sẽ
được lưu ở nút chịu trách nhiệm quản lý định danh h'(i), trong đó h' là một
hàm băm ánh xạ mỗi giá trị i trong khoảng [0, d-1] 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, các nút sẽ kiểm tra tải của mình. Nếu một nút n là nhẹ tải, nó sẽ gửi một thơng điệp cho successor của nó để hỏi
xem nó có thể di chuyển sang định danh khác được khơng. Nếu nút n có thể di chuyển được, nó sẽ gửi thơng báo chứa thơng tin của nó cho nút phụ trách thư mục i, trong đó i = h(idn), h là hàm băm ánh xạ định danh idn của nút n
sang một giá trị trong khoảng [0,d). Hay nói cách khác, nút n sẽ gửi thông báo chứa thơng tin về tải của nó đến nút quản lý định danh h'(h(idn)). Hình vẽ 2.5 minh họa hệ thống gồm hai thư mục.
Hình 2.3. Các nút nhẹ tải thơng báo thơng tin cho thư mục
Trong hình 2.5 các nút nhẹ tải n1 và n3 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 d1 và thư mục d2 (các
Bước 2: Cân bằng tải
a. Chia sẻ tải cho các nút láng giềng
Khi hệ số sử dụng nút n trong hệ thống bị thay đổi, nó sẽ thực hiện quá
trình cân bằng tải như sau. Trước hết nó hỏi hai nút láng giềng (predecessor của n và successor của n) xem có thể nhận tải hộ được khơng. Nếu được nó sẽ chia tải cho một trong hai nút trong láng giềng của n có tải thấp hơn.
Quá trình chia sẻ tải được thực hiện như sau:
- Chia sẻ tải cho nút predecessor: để chia sẻ tải cho nút predecessor, nút
n gửi thông tin yêu cầu nút predecessor dịch chuyển định danh của nó về phía
nút n. Khi đó khoảng khơng gian khóa do nút n quản lý sẽ bị giảm đi, làm cho nút n giảm tải truy vấn từ các nút và khoảng khơng gian khóa do nút predecessor của n quản lý sẽ tăng lên làm cho tải cho nút predecessor của n
tăng lên. Trong hình 2.6, nút n1 là nút nặng tải, nút n5 là nút predecessor của
n1. Nút n5 là nút nhẹ tải có thể nhận tải hộ được nút n1, khi đó nút n5 sẽ dịch
chuyển định danh của nó đến gần nút n1 hơn để giảm tải cho nút n1
Hình 2.4. Nút n1 thực hiện cân bằng tải, nút láng giềng n5 nhận tải hộ nút
Hình 2.5. Nút n1 thực hiện cân bằng tải, nút n1 chia tải cho nút láng giềng
n2 bằng cách dịch chuyển định danh của n1 về phía n5.
- Chia sẻ tải cho nút successor: để chia sẻ tải cho nút successor, nút n
dịch chuyển định danh của nó về phía nút predecessor. Khi đó khoảng khơng gian khóa do nút n quản lý sẽ bị giảm đi, do đó tải truy vấn của nút n được
giảm. Đồng thời khoảng khơng gian khóa do nút successor của n quản lý sẽ
tăng lên làm cho tải cho nút successor của n tăng lên. Trong hình 2.7, nút n1 là nút nặng tải, nút n2 là nút successor của n1. Nút n2 là nút nhẹ tải có thể nhận
tải hộ được nút n1, khi đó nút n1 sẽ dịch chuyển định danh của nó đến gần nút
n5 (nút predecessor của n1) hơn để giảm tải cho nút n1
b. Định danh lại một nút
Trong trường hợp không thể chia sẻ tải cho hai nút láng giềng n2, n5, nút
n1 sẽ chọn ngẫu nhiên một số k trong khoảng [0, d] và gửi một thông điệp tới
nút phụ trách định danh i = h'(k) (thư mục i) để tìm kiếm một nút nhẹ tải. Thư mục i sẽ căn cứ vào yêu cầu giảm tải (chia tải) của nút nặng tải và khả năng xử lý truy vấn của các nút nhẹ tải có trong thư mục để chọn ra một nút nhẹ tải thích hợp nhất gửi cho nút n1. Nút nhẹ tải này đảm bảo hai điều kiện: a) nhận được tải cho nút nặng tải mà không bị quá tải và b) khả năng của nút nhẹ tải là
Hình 2.6. Di chuyển định danh để thực hiện cân bằng tải
Dựa trên thông tin trả lời từ thư mục i, nút n1 sẽ yêu cầu nút nhẹ tải mà nó biết dịch chuyển định danh về vị trí giữa predecessor(n1) và n1 (nút n5 và
n1 tương ứng trong hình vẽ 2.8) để nhận tải hộ nút n1. Nếu khơng tìm được
nút nhẹ tải nào thỏa mãn, nút n1 sẽ hỏi các thư mục cịn lại. Hình vẽ 2.8 mơ tả quá trình này.
Trong hình 2.8 nút n1 hỏi thư mục d1 để tìm một nút nhẹ tải có thể dịch
chuyển được (đường mũi tên nét liền). Nút n3 là nút nhẹ tải có thể di chuyển được do thư mục d1 cung cấp. Định danh của nút nhẹ tải n3 được chuyển đến giữa predecessor(n1) và n1 để nhận tải hộ nút n1 (đường mũi tên nét đứt).
Thuật toán ThresholdPlus đặt mục tiêu duy trì hệ số sử dụng của một nút trong một tỷ lệ ρ, trái ngược với các giá trị giữa giá trị nhẹ tải và quá tải như các thuật tốn khác. Thuật tốn ThresholdPlus mơ tả trong đoạn giả mã trong hình 2.9 được thực hiện bởi một nút n tại thời điểm t.
Hình 2.7 Giả mã của thuật tốn ThresholdPlus
Các nút thiết lập mức hệ số sử dụng hiện tại và thỏa mãn điều kiện hệ số sử dụng tăng thêm một nếu công việc tăng theo hệ số ρ, trong đó c là một
hằng số nhỏ (dòng 1).
Khi mức hệ số sử dụng của một nút tăng lên, nút n bắt đầu thực hiện cân bằng tải (dòng 2). Đầu tiên nút n tạo ra một sự điều chỉnh với các nút láng
giềng (dòng 4-9) bằng cách điều chỉnh định danh của nó hoặc định danh của nút predecessor nếu có thể điều chuyển một số truy vấn cho các nút đó. Nếu nút predecessor nhẹ tải so với n, định danh của nó được dịch chuyển đến n
(dòng 8). Nút n cũng có thể dịch chuyển định danh của nó đến gần hơn với nút predecessor để chuyển tải từ n sang nút successor của nó (dịng 9). Nếu
sẽ tìm một nút nhẹ tải trong thư mục và thay đổi vị trí nút tải nhẹ để trở thành nút predecessor mới của nó (dịng 11- 12). Nút nhẹ tải được chọn lý thưởng
nhất là có thể nhận được một nửa tải của nút n.
Tham số ρ là một tham số quan trọng. Nếu ρ quá lớn, quá trình cân bằng tải sẽ xảy ra chậm. Nếu nó quá nhỏ, các nút sẽ thực hiện nhiều điều chỉnh không cần thiết. Tham số ρ được thiết lập sao cho sự điều chỉnh diễn ra chậm nhưng vẫn tạo ra sự cân bằng tải nếu một nút trở thành quá tải thậm chí là ngay cả khi hệ số sử dụng không thay đổi. Tham số ρ được thiết lập trong cài đặt của thuật toán. Do thuật tốn ThresholdPlus ln chọn nút được sử dụng ít nhất để di chuyển, các nút có khả năng xử lý rất cao (và do đó hệ số sử dụng thấp) có thể có xu hướng được di dời thường xun.
Thuật tốn ThresholdPlus có hai điểm khác biệt so với các thuật tốn
trước đó. Thứ nhất, thuật toán sử dụng thư mục để chứa các nút nhẹ tải có thể di chuyển được. Thư mục đảm bảo chắc chắn rằng khi trong hệ thống cịn có một nút nhẹ tải có thể di chuyển được thì nút thực hiện cân bằng tải ln ln tìm được nút nhẹ tải đó một cách nhanh chóng. Trong thuật tốn Threshold
ban đầu, để tìm một nút nhẹ tải nút nặng tải phải mất chi phí là O(M) với M là số nút lựa chọn để thử, trong khi đó với thuật tốn ThresholdPlus chi phí này là O(1). Thứ hai, thư mục trong thuật toán ThresholdPlus chỉ chứa các nút
nhẹ tải có thể di chuyển được do đó số lượng nút nhẹ tải trong thư mục ít hơn nhiều so với số server ảo nhẹ tải trong các thuật tốn cân bằng tải dịch chuyển
server ảo có sự dụng khái niệm thư mục. Cải tiến này làm giảm đáng kể việc