Chương 1 KIẾN THỨC NỀN TẢNG
4.3. Sao lưu dữ liệu dựa trên phân cụm trong mạng P2P
4.3.5. Xây dựng cụm
Chúng tôi đề xuất hai phương pháp xây dựng cụm trong thuật tốn chúng tơi đưa ra, đó là xây dựng cụm tĩnh và xây dựng cụm động. Hai phương pháp đó được mơ tả cụ thể như sau:
Xây dựng cụm tĩnh
Trong phương pháp xây dựng cụm tĩnh, khơng gian khóa DHT được chia thành m phần tương ứng với m cụm. Với khơng gian khóa gồm d-bit,
biên của cụm thứ k được định nghĩa bởi khóa đầu tiên và khóa cuối cùng theo hướng cùng chiều với kim đồng hồ, được xác định như sau:
Theo cách phân chia này số cụm trong khơng gian khóa là cố định (m cụm), biên của một cụm cũng cố định theo số cụm. Các nút tham gia mạng sau khi có định danh sẽ thuộc một trong các cụm được phân chia. Số nút tham gia mạng có rải đều cho các cụm hay khơng phụ thuộc rất nhiều vào việc thiết kế hàm băm để sinh ra định danh của khơng khóa DHT.
Xây dựng cụm động
Trong mạng P2P, các nút tự do ra/vào mạng. Do đó, nếu phạm vi khơng gian khóa của một cụm là cố định, số lượng các nút trong một cụm có thể chênh lệch nhau tương đối nhiều, tùy thuộc vào số nút hiện có trong mạng. Nếu số lượng các nút trong một cụm nhỏ thì việc tìm kiếm một nút có khả năng lưu trữ sẵn sàng cao cho việc lưu trữ các mảnh dữ liệu là tương đối khó khăn. Nếu số lượng các nút trong một cụm lớn, thời gian cần thiết để một thông báo cập nhật thông tin cụm đi qua tất cả các nút trong một cụm là rất lớn và do đó thời gian cập nhật thơng tin cụm cũng rất lớn. Có nghĩa là danh sách các nút có dung lượng lưu trữ cao trong cụm có thể bị lỗi và việc sao lưu có thể khơng thực hiện được vì nút nguồn có thể khơng tìm thấy bất kỳ nút sẵn sàng nào trong danh sách để sao lưu. Thêm nữa, nếu danh sách nút bị mất được thông báo đến các nút trong cụm quá chậm, việc sao lưu tệp tin có thể không thực hiện được do khơng đủ các mảnh dữ liệu sẵn có. Vì vậy, số lượng các nút trong một cụm nên giữ được một con số hợp lý.
khi số lượng các nút trong một cụm lớn hơn một ngưỡng cho trước. Khi nút đầu tiên của một cụm nhận được thông báo cập nhật thông tin cụm từ nút cuối cùng, nó sẽ kiểm tra số lượng các nút trong cụm. Nếu số nút trong cụm lớn hơn một giá trị ngưỡng splitThreshold cho trước, nó sẽ khởi tạo thủ tục tách cụm bằng cách gửi một thông báo cập nhật khác để thông báo cho tất cả các nút trong cụm mới đầu tiên về việc chia tách. Nút đầu tiên cũng gửi một thông báo đến nút đầu tiên của cụm thứ hai bằng các thủ tục định tuyến trong DHT. Điểm đến của thơng điệp sẽ là khố đầu tiên của cụm thứ hai. Nút đầu tiên của cụm thứ hai cũng gửi một thông báo cập nhật đến các nút khác trong cùng một cụm.
Khơng gian khóa của các cụm mới được chia theo phương pháp dưới đây. Nếu khơng gian khóa của cụm gốc trước khi chia là [𝐾𝑓𝑑, 𝐾𝑙𝑑), thì khơng gian khóa của hai cụm mới sau khi chia là một nửa của cụm gốc theo công thức (1).
𝐾𝑓𝑑1 = 𝐾𝑓𝑑
𝐾𝑙𝑑1 = 𝐾𝑓𝑑2 = 𝐾𝑓𝑑 + 1
2(𝐾𝑙𝑑 − 𝐾𝑓𝑑) (1) 𝐾𝑙𝑑2 = 𝐾𝑙𝑑
trong đó [𝐾𝑓𝑑1, 𝐾𝑙𝑑1] là khơng gian khóa của cụm mới thứ nhất và [𝐾𝑓𝑑2, 𝐾𝑙𝑑2] là khơng gian khóa của cụm mới thứ 2.
Thủ tục tách một cụm thành hai cụm mới B và C được mơ tả bằng đoạn giả mã trong Hình 4.7. Thủ tục này được thực hiện tại nút đầu tiên của cụm được tách.
Hình 4.7. Đoạn giả mã thủ tục tách một cụm thành cụm B và C Số nút trong một cụm có thể giảm do các nút ra/vào hệ thống mạng. Để đảm bảo các nút trong một cụm đủ lớn, nếu tổng số các nút trong hai cụm liền kề nhỏ hơn một giá trị ngưỡng mergeThreshold cho trước thì hai cụm này sẽ được nhập thành một cụm. Trong trường hợp này, khi số nút trong một cụm nhỏ hơn một ngưỡng cho trước, nút đầu tiên sẽ kiểm tra số lượng các nút trong cụm láng giềng mà nó cũng thuộc về cụm đó. Nếu điều kiện sáp nhập thỏa mãn, nút đầu tiên sẽ gửi một thông báo đến nút đầu tiên của cụm láng giềng. Nếu nút đầu tiên của cụm láng giềng đồng ý hợp nhất, nó sẽ gửi một thơng báo trả lời, sau đó hai nút đầu tiên sẽ gửi thơng báo cập nhật đến tất cả các nút trong cụm mới được sáp nhập. Thủ tục nhập cụm hàng xóm A vào
cụm B thành cụm C được mô tả bằng đoạn giả mã trong Hình 4.8. Thủ tục
này được thực hiện tại nút đầu tiên của cụm B. Nút đầu tiên của cụm B cũng
Hình 4.8. Giả mã thủ tục nhập cụm hàng xóm A vào cụm B thành cụm C Vì một cụm có thể được chia thành một số cụm, do đó các mảnh dữ liệu của một tệp tin có thể khơng được lưu trữ tại các nút trong cùng một cụm với nút quản lý khóa. Trong trường hợp này, khi nút lưu trữ mảnh dữ liệu của một tệp tin rời mạng, nút quản lý khóa của tệp tin có thể khơng biết nút đó rời mạng. Để giải quyết vấn đề trên, nút đầu tiên của một cụm sẽ gửi danh sách các nút rời mạng của cụm đó đến các nút đầu tiên của k cụm láng giềng. Cụm
A và cụm B là các cụm k láng giềng nếu có nhiều nhất k cụm giữa chúng.
Việc cập nhật danh sách các nút rời mạng được thực hiện tương đối dễ dàng vì nút đầu tiên của một cụm cũng chính là nút cuối cùng của cụm liền trước. Danh sách các nút rời mạng trong k cụm láng giềng sau đó được gửi kèm với thơng báo cập nhật tới tất cả các nút trong cụm. Trong trường hợp nút chứa mảnh dữ liệu của một tệp tin thuộc một cụm mà cụm đó khơng thuộc k láng
giềng của cụm có chứa nút quản lý khóa của tệp tin thì mảnh dữ liệu sẽ được di chuyển đến một nút trong cùng một cụm với nút quản lý khóa của tệp tin.