.
Hình 3.2 Vòng Chord mới
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.
3.2. Chèn
Một node nặng tải có thể phát hiện node nhẹ tải trên vòng nChord dựa vào bảng định tuyến của nó.
- Một node nặng tải h muốn chuyển server ảo v có tải w để thành node nhẹ tải, nó
sẽ tìm node có id > w *2n
- Trong tất cả các node có id thỏa mãn, chọn node có id nhỏ nhất để thực hiện việc chuyển server ảo.
Vậy tại sao khi node nặng tải muốn chuyển server ảo có tải w đi thì nó sẽ phải tìm node có id > w *2n ? Vì vòng Chord ban đầu có n bit không gian định danh và khi chuyển sang vòng Chord mới, định danh của node nặng tải được giữ nguyên nên các node nặng tải trên vòng Chord mới luôn có id < 2n. Suy ra một node mà có id > w *2n sẽ luôn là node nhẹ tải. Mà node nhẹ tải có công thức là new_id = m .2n + old_id > w *2n thì luôn chắc chắn rằng: m > w, tức là độ chênh lệch tải của node nhẹ tải thỏa mãn công thức trên luôn lớn hơn tải của server ảo mà nó sẽ nhận. Khi đó, khi nhận server ảo từ node nặng tải, node nhẹ tải có id thỏa mãn công thức trên cũng vẫn nhẹ tải.
Để tìm node có id > w*2n, ta dựa vào bảng định tuyến của node cần tìm. Nó sẽ tìm trong bảng định tuyến của nó predecessor gần nhất của id trên vòng tròn định danh và chuyển truy vấn đến predecessor này. Cứ như thế, các node sẽ chuyển tiếp truy vấn dựa vào bảng định tuyến của chính nó đến khi truy vấn đến được node h sao cho trên vòng tròn định danh h nằm giữa n và successor của n. Khi đó, ta sẽ tìm được node chịu trách nhiệm quản lý key là w*2n. Nếu node này có id đúng bằng w*2n thì kết quả truy vấn là node liền sau nó. Nếu node này có id > w*2n thì kết quả truy vấn sẽ là chính node đó.
VD: