Giải pháp dùng 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 ủa một số 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 91 - 96)

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

3.5. Giải pháp dùng nhân bản đối xứng cải tiến

3.5.1. Mục tiêu

Nhân bản đối xứng nh m tăng cường tính sẵn sàng củằ a d li u và tránh bottle-neck. ữ ệ

3.5.2. Cơ chế làm việc

Giải pháp này dựa trên cơ chế nhân bản đối xứng

3.5.2.1. 23BNhân bn đối x ng

Ý tưởng chính của nhân bản đối xứng là mỗi ID i trong hệ ố th ng c n có liên kết ầ với ID f khác. Nếu ID i liên kết với ID f thì node chịu trách nhiệm cho item i cũng chịu trách nhiệm cho cả item i và item j. Tương tự, node chịu trách nhiệm cho item j cũng sẽ chịu trách nhi m cho item i. ệ

Mỗi ID trong hệ thống liên kết với một tập f các ID khác thỏa mãn: nếu ID i liên kết với tập ID r1, ...,rf , thì ID rx, với 1 ≤ x ≤ f , cũng liên kết với các ID r1, ...,rf.

Nói cách khác, không gian ID được chia thành N/f lớp tương được sao cho ID trong mỗi lớp này liên kế ới nhau. Để đơn giản, người ta thường sử dụt v ng các l p v i ớ ớ module m với m = N/f với N là kích thước của không gian ID.

Cho F = {1, ..., f }, khi đó ID i sẽ liên kết với các ID f được xác định bởi công thức r : I x F → I:

r(i, x) = i ⊕ (x − 1) + N/f

3.5.2.2. 24BCơ chế nhân bn đối xng ci 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ạ ự kiện JoinReplication, sự t 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à là ID cn ủ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 đ ệp Replicate, node mới join vào i 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, r))

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

Thuật toán 3.10. Thuật toán bulk owner operation

Một phần của tài liệu Đánh giá hiệu năng ủa một số 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 91 - 96)

Tải bản đầy đủ (PDF)

(98 trang)