24B Cơ chế nhân bản đối xứng cải tiến

Một phần của tài liệu đánh giá hiệu năng của một số thuật toán bảng băm phân tán dht và đưa ra giải pháp cải tiến hiệu năng của thuật toán chord (Trang 89 - 95)

Chương 3 2B Cải tiến hiệu năng của Chord

3.5.2.2. 24B Cơ chế nhân bản đối xứng cải tiến

Ý tưởng cải tiến ở đây là các key được tìm kiếm với tần suất khác nhau sẽ được nhân bản với hệ số nhân bản khác nhau.

Các item trong hệ thống được nhân bản ở các mức khác nhau. Mọi node trong hệ thống đều được nhân bản với hệ số cơ bản (giống nhân bản đối xứng). Các node được tìm kiếm nhiều hơn sẽ được nhân bản với hệ số bổ xung, các node này sẽ được

nhân bản trong một số lớp khác. Đối với các node được nhân bản them thì nhân bản là không đối xứng, node này không nhân bản các item của các node trong các lớp nó được nhân bản bổ xung.

Các node trong các lớp liên kết với ID i được xác định như sau: fk: rk(i, x) = i ⊕ (x − 1) + N/f + (k-1).N/f

Với N/f < N/k or f > k k = 1 là mức nhân bản cơ sở.

k > 1 nhân bản bổ xung trong đó k được tính từ proxy dựa trên tần suất tìm kiếm

Quá trình duy trì

Thut toán join

Khi một node n join vào hệ thống, nó sẽ kích hoạt sự kiện JoinReplication, sự kiện này gửi thông điệp RetrieveItems tới successor để lấy về các item n cần lưu. Thông điệp bao gồm các thông tin về các item nằm trong giải (pred,n], trong đó pred là ID của predecessor và n là ID của nó.

Khi successor nhận được thông điệp RetrieveItems, nó khởi tạo một mạng hai chiều rỗng ( f , N). Sau đó, các item liên kết với một ID trong giải xác định được sao từ bảng HashTable cục bộ tới mảng vừa tạo và được gửi trở lại trong thông điệp Replicate tới node vừa join vào mạng. Khi nhận được thông điệp Replicate, node mới join vào mạng sẽ sao các item trong mảng vào bảng HashTable cục bộ. Node mới lúc này sẽ sẵn sàng nhận truy vấn tìm kiếm từ các node khác trong hệ thống.

Thut toán leave

Thuật toán leave làm việc tương tự như thuật toán join. Khi một node muốn leave khỏi hệ thống, nó sẽ kích hoạt sự kiện LeaveReplication, sự kiện này sử dụng sự kiện RetrieveItems để sao các item mà nó chịu trách nhiệm và gửi chúng trong thông điệp Replicate tới node successor.

Để chèn một item, node muốn chèn thực hiện quá trình chèn song song tới các node chịu trách nhiệm cho item.

event n.JoinReplication() from m

sendto succ.RetrieveItems(pred, n, n)

end event

event n.LeaveReplication() from m

sendto n.RetrieveItems(pred, n, succ)

end event

event n.RetrieveItems(start, end, p) from m

for r := 1 to f do items[r] := Æ i := start while i 6= end do i := i ⊕ 1 items[r][i] := localHashTable[r][i] end while end for

sendto p.Replicate(items, start, end)

end event

event n.Replicate(items, start, end) from m

for r := 1 to f do i := start while i 6= end do i := i ⊕ 1 localHashTable[r][i] := items[r][i] end while end for end event

Thuật toán 3.7. Quá trình tìm kiếm và chèn trong giải pháp nhân bản đối xứng

event n.InsertItem(key, value) from app

for r := 1 to f do

replicaKey := key ⊕ (r − 1)Nf

n.Lookup(replicaKey,AddItem(replicaKey, value,

end for end event

procedure n.AddItem(key, value, r)

localHashTable[key][r] := value

end procedure

event n.LookupItem(key, r) from app replicaKey := key ⊕ (r − 1)Nf

Lookup(replicaKey,GetItem(replicaKey, r))

end event

procedure n.GetItem(key, r)

return localHashTable[r][key]

end procedure

Thuật toán 3.8. Join và leave trong trường hợp nhân bản đối xứng

Thut toán x lý failure

event n.FailureReplication( f ailed, predFailed, r) from m s := predFailed ⊕ (r − 1)Nf

e := f ailed ⊕ (r − 1)Nf

sendto n.StartBulkOwn((s, e], RetrieveItems(s, e, succ))

end event

Thuật toán 3.9. Xử lý failure trong nhân bản đối xứng

event n.StartBulkOwn(I, msg) from m

sendto n.BulkOwn(I, I, n, msg) ⊲ Local message to itself

end event

event n.BulkOwn(I, R, next, msg) from m

MS := R ∩ (u(M), n] ⊲ u(M) is same as pred

if MS 6= Æ then

end if

limit := n

lnext := next

sentsucc :=false

for i := M downto 1 do ⊲ Node has M unique pointers

J := (u(i), limit]

if I J 6= Æ then

K := (u(i − 1), u(i)]

sendto u(i).BulkOwn(I J, I K, lnext, msg)

I := I J ⊲ Same as I := I − (I J) limit := u(i) lnext := u(i) if i = 1 then sentsucc :=true end if end if end for J := (n, u(1)]

if I J 6= Æ and sentsucc = false and next 6= u(1) then

sendto u(1).BulkOwn(Æ, I J, limit, msg)

end if end event

Kết lun

Sự phát triển mạnh mẽ và đa dạng của các thiết bị truy cập mạng như điện thoại, PDA, TV,… là một thách thức đối với mạng structured overlay hiện nay. Với sự xuất hiện của các thiết bị này, mạng trở nên bất ổn và kéo theo sự sụt giảm nghiêm trọng hiệu năng của mạng. Cải tiến hiệu năng của mạng trong điều kiện làm việc mới là bài toán đặt ra cho cộng đồng nghiên cứu peer-to-peer hiện nay.

Sau khi tóm tắt lý thuyết tổng quan về peer-to-peer, luận văn đánh giá, phân tích và so sánh hiệu năng của các DHT như Chord, Kademlia, Kelips và Tapestry trong điều kiện churn rate cao sử dụng phương pháp mô phỏng. Dựa trên cơ chế hoạt động của Chord, kết hợp với kết quả mô phỏng, luận văn đã chỉ ra hạn chế của giao thức Chord trong điều kiện churn rate cao và đưa ra các giải pháp nâng cao hiệu năng của giao thức này.

Trong giai đoạn tiếp theo, tác giả sẽ cài đặt các giải pháp nâng cao hiệu năng của Chord và đánh giá kết quả đạt được, trên cơ sở đó tác giả tiếp tục cải tiến hơn nữa các giải pháp để Chord đạt được hiệu suất cao trong môi trường truyền thông không dây.

Trong quá trình nghiên cứu, một số kết quả nghiên cứu đã được công bố trên các bài báo quốc tế và trong nước [ 15, 16, 17, 18].

Một phần của tài liệu đánh giá hiệu năng của một số thuật toán bảng băm phân tán dht và đưa ra giải pháp cải tiến hiệu năng của thuật toán chord (Trang 89 - 95)