Trên vòng Chord, các node được xác định bằng định danh id duy nhất. Mỗi node sẽ quản lý một vài server ảo. Dựa vào độ lệch giữa capacity và tải hiện thời của
node, ta sẽ xây dựng vòng Chord mới có số bit không gian định danh lớn gấp 2 lần số bit không gian định danh vòng Chord ban đầu.
Mỗi node vật lý trong vòng Chord ban đầu sẽ có các thông tin sau:
id – định danh của node
Capacity C - tải định mức
workload W - tải hiện thời
mismatch m - độ lệch giữa tải định mức và tải hiện thời của node m = C - W
isOverloaded – trạng thái tải của node (=1 nếu quá tải và =0 nếu ngược lại)
Server ảo của node có các thông tin:
workPerRound – tải của VS
key – định danh của VS
originalPsId – định danh của node đang quản lý VS
Giả sử vòng Chord ban đầu có n bit định danh không gian. Như vậy vòng Chord mới sẽ có (2*n) bit không gian định danh.
Vòng Chord mới (gọi là nChord) được xây dựng dựa vào độ mismatch của node trên vòng Chord ban đầu như sau:
- Độ lệch được định nghĩa bằng phép tính:
m = C – W;
- id của node trên vòng Chord mới sẽ có giá trị như sau: if (isOverloaded = 0)
new_id = m .2n + old_id
if (isOverloaded = 1)
new_id = id
Để rõ hơn, ta xét ví dụ sau:
Hình 3.1. Vòng Chord ban đầu
Khi đó, vòng Chord mới (nChord) có 16 bit không gian định danh được xây dựng như hình 3.2:
Hình 3.2. Vòng Chord mới
Mỗi node trên vòng Chord ban đầu đều có một bảng định tuyến. Khi sang vòng Chord mới với định danh id mới, các node sẽ phải cập nhật lại bảng định tuyến của mình.