DANH MỤC CÁC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT AV Attribute/Value Thuộc tính/giá trị Based -DHT Dựa trên bảng băm phân tán Bibliographic Broadcast Gửi phát tràn quảng bá discovery System Hệ t
Trang 1Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng cá nhân tôi, không sao chép lại của người khác Trong toàn bộ nội dung luận văn, những điều được trình bày hoặc là của cá nhân tôi, hoặc do tôi tổng hợp được từ các nguồn tài liệu khác nhau Tất cả các tài liệu được tham khảo điều có xuất xứ rõ ràng, được trích dẫn hợp pháp và được liệt kê đầy đủ trong mục tài liệu tham khảo của luận văn
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình
Hà Nội, ngày 03 tháng 11 năm 2008
Phạm Thị Huế
Trang 2Tôi xin bày tỏ lời cảm ơn chân thành tới các thầy cô giáo trong khoa Công nghệ thông tin – Đại học Công nghệ - ĐHQG Hà Nội, đặc biệt là các thầy cô giáo trong bộ môn Mạng và truyền dữ liệu, đã tạo điều kiện thuận lợi và giúp đỡ tôi trong thời gian tôi học tập
Tôi xin bày tỏ lòng biết ơn chân thành, lời cảm ơn sâu sắc đối với thầy giáo
TS Nguyễn Hoài Sơn đã tận tình hướng dẫn, định hướng cho tôi giải quyết các vấn
đề trong luận văn
Tôi cũng xin bày tỏ lời cảm ơn đối với cha mẹ, gia đình, các đồng nghiệp và bạn học viên lớp Cao học K12T3 đã động viên, giúp đỡ, góp ý cho tôi rất nhiều trong quá trình hoàn thành luận văn
Hà Nội, ngày 3 tháng 11 năm 2008
Phạm Thị Huế
Trang 3MỤC LỤC
Trang phụ bìa
Lời cam đoan
Lời cảm ơn
Mục lục 1
Danh mục các thuật ngữ và các từ viết tắt 3
Danh mục bảng biểu 4
Danh mục hình vẽ 5
MỞ ĐẦU 6
CHƯƠNG 1 TỔNG QUAN VỀ MẠNG NGANG HÀNG 10
1.1 Khái niệm mạng ngang hàng 10
1.2 Ưu, nhược điểm của mạng ngang hàng 15
1.3 Kết luận 16
CHƯƠNG 2 MẠNG NGANG HÀNG CÓ CẤU TRÚC 18
2.1 Mạng ngang hàng có cấu trúc dựa trên DHT 18
2.1.1 Khái niệm mạng ngang hàng có cấu trúc 18
2.1.2 Các tính chất của mạng DHT 19
2.2 Mạng ngang hàng có cấu trúc CHORD 20
2.2.1 Mô hình mạng Chord 20
2.2.2 Ánh xạ khóa vào một node trong Chord 21
2.2.3 Tìm kiếm trong mạng Chord 22
2.2.4 Tham gia và ổn định mạng 22
2.3 Kết luận 23
CHƯƠNG 3 MỘT SỐ GIẢI PHÁP PHÂN PHỐI VÀ TÌM KIẾM THÔNG TIN TRÊN MẠNG NGANG HÀNG CÓ CẤU TRÚC 24
3.1 INS/Twine 24
3.1.1 Giải pháp 24
3.1.2 Nhận xét 28
3.2 CDS 29
3.2.1 Giải pháp 29
3.2.2 Nhận xét 34
3.3 Data Indexing 35
3.3.1 Giải pháp 35
3.3.2 Nhận xét 41
3.4 Kết luận 41
Trang 4CHƯƠNG 4 GIẢI PHÁP TÌM KIẾM THÔNG TIN THEO CÁC THUỘC
TÍNH/GIÁ TRỊ TRÊN MẠNG NGANG HÀNG CÓ CẤU TRÚC 42
4.1 Ý tưởng 42
4.2 Mô hình giải pháp SMAV 44
4.2.1 Khái quát 44
4.2.2 Ánh xạ tên miền-khóa và phân bổ nội dung 45
4.2.3 Truy vấn thông tin 51
4.2.4 Quản lý khi trạng thái mạng thay đổi 54
CHƯƠNG 5 ĐÁNH GIÁ HIỆU QUẢ CỦA GIẢI PHÁP “TÌM KIẾM THÔNG TIN THEO CÁC THUỘC TÍNH/GIÁ TRỊ TRÊN MẠNG NGANG HÀNG CÓ CẤU TRÚC” 55
5.1 Đánh giá định tính 55
5.2 Đánh giá dựa trên mô phỏng 56
5.2.1 Các tham số mô phỏng 56
5.2.2 Kết quả 58
5.3 Mở rộng hệ thống cho phù hợp với các yếu tố thực tế 64
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66
Trang 5DANH MỤC CÁC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT
AV (Attribute/Value) Thuộc tính/giá trị
Based -DHT Dựa trên bảng băm phân tán
Bibliographic
Broadcast Gửi phát tràn (quảng bá)
discovery System) Hệ thống phát hiện nội dung
Chord Một giao thức mạng ngang hàng dựa trên DHT thực hiện
việc phân bổ và quản lý khóa theo dạng vòng (ring) Client/Server Máy khách/ Máy chủ
DHT (Distributed
Hash Table ) Bảng băm phân tán
Entry Một bản ghi trong bảng dùng để lưu thông tin về các đặc tả
tài nguyên tại mỗi node
JXTA Một cơ sở hạ tầng mạng ngang hàng dựa trên mã nguồn mở
LBM (Load
Balancing Matrix) Ma trận cân bằng tải
Load-balancing Cân bằng tải
Node
Thực thể có khả năng thực hiện một công việc hữu ích nào
đó và trao đổi kết quả với các thực thể khác qua mạng một cách trực tiếp hoặc gián tiếp
Trang 6Trade-off Sự thỏa hiệp hay việc cân bằng giữa các yếu tố khác nhau
để đạt được 1 sự kết hợp tốt nhất
XML (Extensible
Markup Language) Ngôn ngữ đánh dấu mở rộng
Trang 7DANH MỤC BẢNG BIỂU
Bảng 2-1 Bảng định nghĩa các trường trong Finger Table 21
Bảng 4-1 Bảng ánh xạ khóa phân bổ - nội dung thông tin 49
Bảng 4-2 Bảng ánh xạ khóa thứ cấp 50
Bảng 4-3 Bảng ánh xạ khóa không phổ biến 50
Bảng 4-4 Bảng ánh xạ khóa đặc biệt 50
Trang 8DANH MỤC HÌNH VẼ
Hình 1.1-1 Mô hình client/Server 10
Hình 1.1-2 Mô hình P2P 11
Hình 1.1-3 Mô hình mạng Napster 12
Hình 1.1-4 Mô hình xử lý truy vấn trên mạng Gnutella 12
Hình 2.2-1 Một mạng Chord với 3 node 0, 1, 3 và các bảng Finger Table ứng với mỗi node N = 3 bit nên Finger Table có 3 entry 21
Hình 2.2-2 Lưu giữ key trong mạng Chord: node 0 lưu key 6, node 1 lưu key 1 và node 3 lưu key 2 22
Hình 3.1-1 Một ví dụ về đặc tả tài nguyên và cây AVTree 24
Hình 3.1-2 Mô hình hoạt động của hệ thống INS/Twine 25
Hình 3.1-3 Trích rút 1 AVTree thành các strand 26
Hình 3.1-4 Việc quản lý trạng thái trong hệ thông INS/Twine 28
Hình 3.2-1 Kiến trúc 1 node sử dụng CDS 29
Hình 3.2-2 Ví dụ về việc đăng ký tên miền và xử lý truy vấn với 1 tập các điểm môi giới RPs 30
Hình 3.2-3 Ma trận cân bằng tải cho cặp thuộc tính aivi 31
Hình 3.3-1 Ví dụ về đặc tả file 36
Hình 3.3-2 Ví dụ về cấu trúc các câu truy vấn 37
Hình 3.3-3 Đồ thị biểu diễn các câu truy vấn được đưa ra trong hình 3.3-2 37
Hình 3.3-4 Lược đồ chỉ mục cho dữ liệu cây thư mục (bibliographic database) 38
Hình 3.3-5 Ví dụ về chỉ mục phân tán cho 3 tài liệu được đưa ra trong hình 3.3-1 và lược đồ chỉ mục trong hình 3.3-4 39
Hình 3.3-6 Việc ánh xạ giữa các câu truy vấn cho hình 3.3-5 39
Hình 4.2-1 Lược đồ phân bổ tên nội dung thông tin theo giải thuật SMAV 46
Hình 4.2-2 Ánh xạ khóa thứ cấp 49
Hình 4.2-3 Lược đồ truy vấn thông tin theo giải thuật SMAV 52
Hình 5.2-1-A: Tỷ lệ phần trăm tần số xuất hiện 1 thuộc tính/giá trị 59
Hình 5.2-2-B Tần số xuất hiện các AV trên các node 59
Hình 5.2-3 So sánh tải nội dung giữa 2 phương pháp phân bổ tên nội dung: Phân phối bình thường dựa trên DHT-Chord và phân phối theo SMAV 60
Hình 5.2-4 So sánh tải truy vấn giữa 2 phương pháp phân bổ tên nội dung: Phân phối bình thường dựa trên DHT-Chord và phân phối theo SMAV 61
Hình 5.2-5 Số ánh xạ sinh ra bởi mỗi tên nội dung khi sử dụng giải thuật SMAV 61
Hình 5.2-6 Thời gian truy vấn 63
Trang 9Sở dĩ mô hình mạng P2P phát triển như vậy là vì mô hình này rất phù hợp với tính phân tán của dữ liệu, đồng thời nó đảm bảo quyền quản lý dữ liệu của người dùng nên khuyến khích được việc chia sẻ dữ liệu, làm tăng nguồn tài nguyên trên mạng Mô hình P2P cũng được sử dụng để xử lý các bài toán phức tạp do tận dụng được khả năng tính toán phân tán và tích hợp dữ liệu từ các peer tham gia mạng Trong mô hình
P2P, mỗi peer vừa có thể đóng vai trò là Client, vừa có thể đóng vai trò là Server Tổng sức mạnh xử lý của các peer này có khi lớn hơn nhiều lần khả năng xử lý của 1 Server lớn Như vậy, mô hình P2P không chỉ làm tăng lượng tài nguyên mạng, mà còn làm tăng sức mạnh xử lý đáp ứng yêu cầu dịch vụ, nâng cao tính sẵn sàng phục vụ của mạng
Tuy nhiên, trong thời kỳ đầu mới phát triển, việc tìm kiếm trong mạng ngang hàng thường được thực hiện theo kiểu phát tràn thông báo, gây tốn kém băng thông mạng Các ứng dụng sau này đã từng bước cải tiến giao thức định tuyến thông báo, làm mạng hoạt động hiệu quả hơn, nhưng vẫn chưa đảm bảo việc tìm kiếm thông tin sẽ thành công
Mạng ngang hàng có cấu trúc sử dụng giải thuật Bảng băm phân tán (Distributed Hash Table – DHT) khắc phục nhược điểm trên bằng cách tổ chức các node mạng theo một cấu trúc không gian khóa nhất định như mạch vòng (giải thuật Chord[7]) hay không gian n-chiều (giải thuật CAN[10]) và định tuyến thông báo dựa
trên cấu trúc này Nội dung thông tin được gắn với một khóa k là giá trị băm của một
đặc tả đặc trưng nào đó của nội dung thông tin (gọi là tên nội dung) và sẽ được phân
bổ đến node phụ trách khóa k Mỗi node trong mạng sẽ chịu trách nhiệm quản lý 1 tập
các khóa trong không gian khóa, và lưu giữ thông tin về 1 số các node khác trong mạng Việc tìm kiếm thông tin qua câu truy vấn q được thực hiện bằng cách băm q để được khóa kq, rồi chuyển q đến node quản lý khóa kq, node đó sẽ thực hiện việc tìm kiếm địa phương và trả về kết quả cho câu truy vấn Bằng phương pháp này, giải thuật DHT cho phép xây dựng một mạng ngang hàng với khả năng mở rộng cao, định tuyến hiệu quả các gói tin thông báo tới đích và kháng lỗi tốt
Trang 10Tuy nhiên, giải thuật DHT chỉ hỗ trợ tìm kiếm chính xác, tức là tìm kiếm nội
dung thông tin gắn với một khóa k nào đó Trong thực tế, không phải lúc nào người
tìm kiếm cũng biết chính xác về các đặc tả của thông tin mình cần tìm, do đó, rất nhiều giải pháp hỗ trợ tìm kiếm nâng cao đã và đang được rất nhiều tổ chức, cá nhân trên thế giới nghiên cứu và ứng dụng Một số giải pháp điển hình như tìm kiếm theo khoảng, tìm kiếm theo các thuộc tính/giá trị, tìm kiếm gần đúng, …
Trong số các kiểu tìm kiếm nâng cao trên P2P, tìm kiếm theo các thuộc tính/giá trị gần đây đang được quan tâm nghiên cứu bởi sự phù hợp của việc biểu diễn đặc tả thông tin thông qua các cặp thuộc tính/giá trị Qua phương pháp này, 1 tên nội dung không còn được băm thành 1 giá trị khóa duy nhất nữa, mà sẽ được ánh xạ vào 1 tập các khóa tương ứng với giá trị băm của các cặp thuộc tính/giá trị có mặt trong tên nội dung Sau đó, tập khóa này sẽ được chuyển đến 1 tập các node sẽ quản lý chúng dựa trên giao thức DHT nào đó Bằng cách này, 1 nội dung thông tin sẽ được lưu trữ ở nhiều node hơn, làm tăng tính sẵn sàng sử dụng và khắc phục lỗi của mạng khi có sự vào ra của các node Đồng thời, thông tin được tìm kiếm cũng dễ dàng hơn, do chỉ cần biết 1 phần đặc tả của thông tin (ứng với 1 cặp thuộc tính/giá trị trong tên nội dung thông tin)
Có nhiều giải pháp tìm kiếm theo các thuộc tính/giá trị khác nhau được đưa ra, chủ yếu nhấn mạnh vào việc sẽ phân bổ các thuộc tính/giá trị đến các node, và tiến hành xử lý truy vấn như thế nào Có giải pháp thì đưa ra cách xây dựng cây AVTree từ các cặp thuộc tính/giá trị (trong INS/Twine), rồi tính khóa phân bổ bằng cách băm các nhánh của cây này Có giải pháp thì đưa ra cách xây dựng các Xpath từ các đặc tả kiểu XML của tên nội dung, rồi dùng nó để tạo cây truy vấn,…Mỗi giải pháp đều có điểm mạnh riêng, song vẫn còn nhiều hạn chế cần khắc phục để mạng cân bằng hơn về tải
và tìm kiếm hiệu quả hơn Việc nghiên cứu các giải pháp này để từ đó, tìm ra được 1 giải pháp tìm kiếm tốt hơn trên P2P có cấu trúc là việc làm hết sức cần thiết để phát triển các ứng dụng P2P phù hợp với thực tế
Luận văn Tìm kiếm thông tin theo các giá trị thuộc tính trên mạng ngang hàng
có cấu trúc đi vào nghiên cứu và đánh giá các giải pháp tìm kiếm theo các thuộc
tính/giá trị đã có, từ đó tìm cách cải tiến để đưa ra 1 giải pháp mới Giải pháp mới được triển khai trong luận văn này không nằm ngoài xu hướng nghiên cứu chung, đồng thời cũng được đánh giá qua chương trình mô phỏng và cho kết quả khá tốt
Về bố cục, nội dung của luận văn bao gồm 6 chương:
Chương 1: Giới thiệu tổng quan về mạng ngang hàng, những khái niệm cơ bản cũng như sơ lược về lịch sử phát triển của mạng ngang hàng
Trang 11Chương 2: Trình bày sâu thêm về 1 nhánh của mạng ngang hàng: mạng ngang hàng có cấu trúc Đồng thời giới thiệu chi tiết về giao thức Chord, giao thức sẽ được
sử dụng để triển khai mạng phủ DHT khi xây dựng chương trình mô phỏng
Chương 3: Trình bày các nghiên cứu liên quan, cụ thể là 1 số giải pháp phân bổ
và tìm kiếm thông tin theo các thuộc tính/giá trị trên mạng ngang hàng có cấu trúc tiêu biểu
Chương 4: Trình bày chi tiết về giải pháp “Tìm kiếm thông tin theo các thuộc tính/giá trị trên mạng ngang hàng có cấu trúc”
Chương 5: Đánh giá hiệu quả của giải pháp “Tìm kiếm thông tin theo các thuộc tính/giá trị trên mạng ngang hàng có cấu trúc” trên lý thuyết và qua chương trình mô phỏng
Chương 6: Cuối cùng là phần kết luận nêu tóm tắt các vấn đề đã trình bày trong luận văn, rút ra những điểm đã đạt được cũng như chưa đạt được, đồng thời đưa ra một
số hướng nghiên cứu, phát triển tiếp theo
Ngoài ra, luận văn còn có thêm các danh mục các thuật ngữ, các từ viết tắt, danh mục bảng biểu, hình vẽ và danh mục các tài liệu tham khảo để thuận tiện cho việc tìm hiểu và tra cứu nội dung của luận văn
Trang 12CHƯƠNG 1 TỔNG QUAN VỀ MẠNG NGANG HÀNG
Trong chương này, báo cáo luận văn sẽ giới thiệu khái quát về công nghệ mạng ngang hàng: khái niệm mạng ngang hàng là gì? Mô hình ra sao? Và những ưu nhược điểm của mạng ngang hàng
1.1 Khái niệm mạng ngang hàng
Như chúng ta đã biết, hầu như mọi dịch vụ Internet ngày nay đều dựa trên mô hình client/Server (hình 1.1-1) Theo mô hình này thì một máy khách (client) sẽ kết nối với một máy chủ thông qua một giao thức nhất định như WWW, FTP, Telnet, email Nói chung, mô hình client/Server có nhiều ưu điểm, một trong số đó là việc mọi xử lý đều nằm trên Server do đó sẽ tránh cho clients những tính toán nặng nề, và
do đó các máy Client không cần có cấu hình mạnh
Hình 1.1-1: Mô hình client/Server
Tuy nhiên, với chế độ hoạt động theo kiểu: Client đóng vai trò thụ động, chỉ yêu cầu dịch vụ từ Server chứ không thể cung cấp dịch vụ cho các client khác, thì chính ưu điểm trên lại trở thành nhược điểm của mô hình này Với tốc độ phát triển Internet như hiện nay, số lượng client tăng nhanh liên tục gây ra sự quá tải và tắc nghẽn tại các Server Khi số lượng clients tăng đến một mức độ nào đó mà nhu cầu về tải và băng thông tăng lên tới mức máy chủ không còn đủ khả năng để đáp ứng được dịch vụ cho các máy khách thì Server bị sập và mạng sẽ bị sập theo
Việc tăng số lượng Server để tăng khả năng chịu tải cho các Server là cần thiết Tuy nhiên, chi phí cho 1 Server thường là rất lớn Bởi vậy, ý tưởng về một kiến trúc mạng mà ở đó, không cần thêm chi phí cho việc lắp đặt thêm Server, ta vẫn đảm bảo
Trang 13mạng hoạt động tốt bằng cách tận dụng những tài nguyên mạng có sẵn từ chính các máy tham gia mạng, đã dẫn đến sự ra đời của mạng ngang hàng (peer to peer - P2P) Vậy P2P là gì?
Hình 1.1-2: Mô hình P2P
Hình 1.1-2 cho ta thấy một cách trực quan mô hình P2P Có thể nói: Công nghệ P2P là công nghệ mạng cho phép mọi thiết bị nối mạng cung cấp dịch vụ cho nhau, đồng thời mọi loại tài nguyên trên các thiết bị nối mạng đều có thể được chia sẻ cho nhau
Như vậy, trên P2P, không còn có khái niệm Client hay Server nữa Tất các máy đều có thể yêu cầu dịch vụ, cũng như đáp ứng yêu cầu dịch vụ của các máy khác Mọi máy tính đều có thể lưu trữ và chia sẻ tài nguyên, cũng như kết nối trực tiếp với nhau
Thực chất kiến trúc mạng P2P không phải là mới Hoạt động của mạng LAN chính là hoạt động kiểu P2P: các Client trong 1 mạng LAN hoàn toàn có thể chia sẻ và
sử dụng tài nguyên của nhau Những ứng dụng P2P cũng xuất hiện từ lâu, ví dụ như Usenet được xây dựng từ năm 1979 [2] Tuy nhiên cho tới gần đây, khi có sự xuất hiện của các dịch vụ chia xẻ files như Napster, Gnutella, Bittorent, …, những chương trình tin nhắn tức thời như ICQ, YIM, …, thì P2P mới được nhận ra là một công nghệ quan trọng cho Internet
Ta có thể khái quát về các bước phát triển của P2P qua tổng hợp trong[2,13], theo đó thì P2P đã trải qua 3 thế hệ:
Thế hệ 1:
Đó là thế hệ phát triển của kiến trúc P2P đơn giản nhằm mục đích chia sẻ file Hai đại diện cho P2P giai đoạn này là 2 mạng Napster (1999) [2] and Gnutella (1999) chia sẻ file MP3
Trang 14Hoạt động của Napster khá đơn giản:
Người sở hữu file đặt tên cho file là x và chia sẻ file
Mọi người thì tìm kiếm x, sau đó copy hoặc down về
Hình 1.1-3: Mô hình mạng Napster
Mô hình này là mô hình P2P lai ghép vì vẫn còn tồn tại 1 Server quản lý tập trung các danh sách ánh xạ user-file Người muốn chia sẻ file thì gửi thông tin user-file lên Server để đăng ký Người muốn down file thì truy vấn đến Server để tìm thông tin
về file mình cần, Server tìm và trả về thông tin user có file đó, sau đó, người muốn down kết nối trực tiếp với user có file để down file về
Hình 1.1-4: Mô hình xử lý truy vấn trên mạng Gnutella
Trang 15Khi 1 node muốn tham gia vào mạng, nó liên hệ với 1 node bootstrap hoặc 1 node nào đó mà địa chỉ nằm trong danh sách địa chỉ được cài đặt sẵn Sau khi việc kết nối thành công, client sẽ thực hiện tìm kiếm các client đang làm việc Client cố gắng kết nối tới các node mà nó biết địa chỉ (đã được cài sẵn hoặc thông qua các node khác) cho đến khi nhận được 1 số lượng nhất định các node Client sẽ chỉ kết nối đến các node này, cache lại những địa chỉ mà nó chưa có trong bộ nhớ nội bộ và bỏ qua những địa chỉ mà nó không kết nối được đến
Hình 1.2-2 mô tả hoạt động tìm kiếm của Gnutella: Khi người dùng tại 1 node muốn tìm kiếm tài nguyên, node sẽ gửi yêu cầu đến mỗi node mà nó đang kết nối đến Sau đó, mỗi node nhận được yêu cầu lại tiếp tục forward yêu cầu tới các node mà node này biết Việc forward tiếp diễn cho đến khi gói tin đạt đến số hop được đĩnh nghĩa trước bởi node tìm kiếm ban đầu (ở phiên bản 0.4 số hop lớn nhất là 7).Nếu câu truy vấn tìm được kết quả, node có kết quả sẽ liên lạc với node tìm kiếm Trong phiên bản ban đầu, thông điệp trả lời được gửi cho node tìm kiếm bằng cách đi ngược lại con đường mà truy vấn đã được truyền đi Nhưng việc này đã được xem lại và cải tiến trong giao thức hiện nay, node có kết quả sẽ cung cấp kết quả trực tiếp đến node tìm kiếm thông qua giao thức UDP Vì vậy, mỗi câu truy vấn bao giờ cũng gồm thông tin
về địa chỉ IP và cổng của node khác Nhờ đó mà yêu cầu về băng thông cũng được giảm xuống và tăng khả năng mở rộng của mạng
Khi 1 node ngắt kết nối, nó sẽ lưu lại danh sách các node nó đã kết nối và các tài nguyên chia sẻ để dùng cho lần kết nối tiếp theo Trong thực tế, phương pháp tìm kiếm của Gnutella thường không tin cậy Các node là các máy tính bình thường, do đó
có thể gia nhập hoặc rời mạng bất cứ lúc nào, và do đó mạng không bao giờ ở trạng thái cân bằng hoàn toàn cả Hơn nữa, nếu số lượng các node tăng lên thì băng thông dùng cho việc tìm kiếm và duy trì các kết nối cũng tăng lên làm cho hoạt động của mạng trở nên nặng nề, các yêu cầu tìm kiếm thường xuyên bị bỏ qua (dropped) Các nghiên cứu thực tế cho thấy, Gnutella không phải là 1 mạng có khả năng mở rộng và hoạt động hiệu quả
Theo [15], để giải quyết vấn đề thắt nút cổ chai (bottlenecks), Gnutella đã được cài đặt thành hệ thống nhiều tầng Thay vì tất cả các node đều có vai trò như nhau, giờ đây, các node gia nhập vào mạng chỉ được giữ ở cạnh mạng giống như các node lá và
không chịu trách nhiệm định tuyến Các node ultrapeers mới có khả năng định tuyến
thông điệp tìm kiếm và lưu thông điệp đó Điều này cho phép việc tìm kiếm trong 1 không gian mạng rộng hơn và cũng làm tăng hiệu quả hoạt động của mạng Do không phụ thuộc vào 1 Server duy nhất nên Gnutella cũng khó bị đánh sập hơn so với
Napster
Trang 16Thế hệ 2:
Thế hệ thứ 2 của P2P với các đại diện như Freenet ,eDonkey, hay KaZaA nhấn mạnh tính nặc danh (Freenet) và khả năng tương tác giữa các hệ thống ngang hàng khác nhau (eDonkey)[13] Sau những tranh chấp về pháp lý dẫn đến sự đóng cửa của 1
số mạng P2P trước đó, các mạng sau này hoặc phải thêm tính năng giấu thông tin của các file được chia sẻ, hoặc tìm cách thương mại hóa, hợp pháp hóa các ứng dụng P2P (Audiogalaxy)[13] Trong hệ thống Freenet, file không được lưu trữ trên đĩa cứng của các peer cung cấp chúng mà được lưu trữ ở các vị trí khác trong mạng Mục đích của việc phát triển mạng Freenet là làm cho thông tin được lưu trữ và truy cập mà không cần biết định danh Với cách tổ chức như vậy, chủ sở hữu của một node mạng cũng không biết được tài liệu gì được lưu trữ trên đĩa cứng của máy anh ta Vì lý do này mà các Peer và các file được cung cấp các số định danh khác nhau Khi một file được tạo,
nó được truyền qua các peer láng giềng tới các peer có số định danh gần với số định danh của file nhất và được lưu trữ ở đó Cũng trong giai đoạn này, các nghiên cứu về việc cải tiến kiến trúc và giao thức hoạt động của P2P đã dẫn đến sự ra đời của nhiều
mô hình P2P như Chord, CAN, Pastry, …Với các mô hình kiến trúc mới này, hiệu suất của mạng được cải tiến đáng kể so với thế hệ trước đây
Thế hệ 3:
Thế hệ thứ 3 hay chính là thế hệ tương lai của P2P, vượt ra ngoài mục đích sơ khai là chia sẻ và tìm kiếm tài nguyên theo tên để hướng đến nhiều mục đích hơn như:
Tìm kiếm so khớp 1 phần, tìm kiếm theo từ khóa
Công cụ tìm kiếm Web
Công việc có tính tương tác cộng đồng
Công việc cần tính toán phân tán (data mining)
P2P hiện tại và tương lai sẽ phải đối mặt với nhiều thách thức hơn khi mà yêu cầu về khả năng mở rộng với mạng lên tới hàng triệu node tham gia và vẫn phải đảm bảo mạng hoạt động hiệu quả
Khả năng chịu lỗi, tính sẵn sàng sử dụng và khả năng tự ổn định
Việc phân phối dữ liệu, định tuyến, cân bằng tải trong các mạng phủ
Về mặt an ninh: khả năng chống được các cuộc tấn công
Tính tin cậy trong việc tính toán và chia sẻ dữ liệu
Những kỹ thuật nhằm đảm bảo sự công bằng trong khi sử dụng mạng (cân bằng giữa tính ích kỷ cá nhân và mục tiêu toàn cục)
Nhiều hệ thống đã được đề xuất và kết quả mô phỏng cho thấy chúng hoạt động khá hiệu quả (EDUTELLA[9], INS/Twine[4]) Bên cạnh đó, công nghệ ngang hàng
Trang 17còn được tích hợp vào các trình duyệt Web (AllPeers - Firefox plug-in [17]) và công cụ tìm kiếm trên mạng
1.2 Ưu, nhược điểm của mạng ngang hàng
Mô hình P2P rất phù hợp với tính phi tập trung của Internet, bởi bản chất của tài nguyên là phân tán, các thông tin lưu trữ không chỉ trên các Server mà ở cả các máy Client Việc cá nhân hóa quyền quản lý tài nguyên làm tăng lượng tài nguyên mạng, từ
đó nâng cao mức độ sẵn sàng phục vụ cũng như hiệu suất khai thác
Xét về khía cạnh sức mạnh xử lý, mạng P2P có tiềm năng cao hơn cả những máy chủ lớn nhất hiện nay, và do đó, sử dụng mạng P2P có thể cải thiện đáng kể hiệu quả của các phương pháp phân tích, xử lý dữ liệu, giải các bài toán phức tạp (đây đều
là những vấn đề vượt ra ngoài tầm xử lý của những máy chủ tập trung khi số lượng truy vấn, tính toán lên đến hàng trăm triệu mỗi ngày) Sỡ dĩ như vậy là vì, P2P đã tận dụng được tiềm năng từ “cạnh” của Internet, tận dụng khả năng xử lý, khả năng lưu trữ còn thừa của các máy tính tham gia mạng với những thuật toán phân tán hợp lý Công nghệ này đã chia việc xử lý lớn ra thành những xử lý nhỏ có thể phân tán giữa các máy tính trong một mạng Mỗi một PC đồng thời xử lý các dữ liệu và trả về kết quả cho máy tính trung tâm ráp nối các kết quả thành phần lại Bằng cách đó, ta có thể giải quyết những bài toán phức tạp mà không cần chi phí nào cho việc trang bị thêm máy móc
Bên cạnh đó, việc phân tán trách nhiệm cung cấp dịch vụ đến tất cả các nút trên mạng sẽ giúp loại bỏ vấn đề ngừng trệ dịch vụ do nơi cung cấp duy nhất bị sự cố Khi
có nhiều máy cùng cung cấp 1 dịch vụ, ta có nhiều giải pháp khả biến trong việc cung cấp dịch vụ đó
P2P cũng tận dụng được băng thông trên toàn bộ mạng, vì việc tăng số giao tiếp giữa các thiết bị mạng qua các đường truyền khác nhau sẽ làm giảm khả năng tắc nghẽn mạng
Ngoài ra, khi càng nhiều máy tính tham gia vào P2P thì tổng sức mạnh xử lý, khả năng lưu trữ và chia sẻ tài nguyên, băng thông lại càng tăng Điều đó cho thấy một cách rõ ràng khả năng mở rộng của mạng P2P
Tuy nhiên, mạng ngang hàng cũng có nhiều nhược điểm Với mô hình P2P thuần túy, tức là mô hình mà ở đó, mọi máy đều có vài trò như nhau và không tuân theo bất cứ 1 qui luật định tuyến hay kết nối nào, thì mạng P2P cũng bộc lộ khá nhiều nhược điểm:
Trang 18Đầu tiên, chính vì yêu cầu dịch vụ được đáp ứng một cách tùy biến nên máy yêu cầu dịch vụ có thể nhận được nhiều kết quả khác nhau khi nó kết nối đến các máy khác nhau cung cấp cùng 1 dịch vụ
Tiếp theo, các yêu cầu gửi đi có thể không nhận được kết quả trả về, vì chẳng có gì đảm bảo sẽ tồn tại 1 máy nào đó có khả năng đáp ứng yêu cầu
1.3 Kết luận
Ngày nay, do mọi sự chú ý đều tập trung vào vấn đề cộng tác, các hệ thống P2P cho phép các ứng dụng phần mềm tương tác với nhau đem lại nhiều hứa hẹn cho các ứng dụng kết hợp các dữ liệu phân tán cho thương mại điện tử, thiết kế sản phẩm hoặc quản lý tri thức Các chương trình đó dùng P2P như một phương thức gửi dữ liệu vào ra từ trình ứng dụng này tới trình ứng dụng khác hoặc liên kết một số lượng vô hạn các máy tính thành một cơ sở dữ liệu khổng lồ Công nghệ tương tác phần mềm cho phép các công ty chia nhỏ các vấn đề phức tạp cho dễ quản lý hơn Các hệ thống cho phép đối chiếu dữ liệu và đảm bảo rằng chúng đang được điều khiển bởi chính những người tạo ra chúng, đảm bảo rằng hoạt động chính xác và kịp thời rất lý tưởng cho các ứng dụng trực tuyến và kinh doanh chứng khoán Một số các công ty đang tiếp tục phát triển thế hệ tiếp theo của các máy tìm kiếm trên công nghệ P2P để phân phối thông tin đúng lúc và toàn diện hơn cho các công ty truyền thông lớn
Một loạt các hãng mới thành lập đang tạo ra những chương trình tận dụng tài nguyên triển khai khả nǎng của P2P để lưu trữ các file, phân phối nội dung và chia sẻ sức mạnh xử lý của các máy khác Mục đích ở đây một phần là cắt giảm giá thành phần cứng chẳng hạn như thiết bị lưu trữ, Server và các thiết bị khác, nhưng cũng giúp cho việc quản lý thông lượng trên mạng Mặc dù có tiềm nǎng dịch vụ lớn, nhưng những vấn đề liên quan đến an toàn bảo mật và sự phức tạp liên quan đến việc quản lý bản quyền khiến cho việc áp dụng các dịch vụ P2P trở nên khó khăn Một số lượng lớn các ứng dụng của P2P đã phải ngừng hoạt động, nhưng các công ty lớn như Microsoft , Sun Microsystems và nhiều công ty khác lại bắt đầu áp dụng P2P Những hãng khổng
lồ này đang nghiên cứu để ứng dụng công nghệ P2P trong các sản phẩm của họ Intel
là công ty lớn đầu tiên dùng P2P và đang đầu tư để phát triển tiếp và đồng thời giúp đỡ
Trang 19các nhóm làm việc về P2P nhằm đưa ra các chuẩn công nghệ ban đầu Trong khi đó, Microsoft đã tuyên bố công khai dự án Hailstorm của họ và đã đưa ra một số nét nổi bật của các dịch vụ P2P Không chịu đứng ngoài cuộc Sun Microsystems đã đưa ra một loạt chuẩn cho một nền P2P mã nguồn mở gọi là JXTA
Việc nghiên cứu về lịch sử phát triển P2P cũng như những thông tin liên quan cho thấy P2P là 1 công nghệ mạnh và có khả năng được sử dụng rộng rãi trong tương lai Đây sẽ là nền tảng quan trọng để chúng ta có thể phát triển được các ứng dụng mạng phù hợp với tốc tốc độ phát triển công nghệ thông tin như hiện nay
Trang 20CHƯƠNG 2 MẠNG NGANG HÀNG CÓ CẤU TRÚC
Trong chương này, báo cáo luận văn sẽ giới thiệu khái quát về mạng ngang hàng có cấu trúc và hoạt động của giao thức Chord, 1 giao thức DHT sẽ được sử dụng
để cài đặt mạng phủ DHT trong phần sau
2.1 Mạng ngang hàng có cấu trúc dựa trên DHT
2.1.1 Khái niệm mạng ngang hàng có cấu trúc
Mô hình mạng P2P mà trong đó, các node được tổ chức lại theo 1 cấu trúc nhất định và việc định tuyến thông báo sẽ dựa trên cấu trúc đó, được gọi là mô hình mạng ngang hàng có cấu trúc
Như đã nói trong chương 1, mạng P2P thuần túy hoạt động không hiệu quả do các node tham gia mạng không tuân theo 1 quy luật nào, các kết nối xảy ra ngẫu nhiên, thông báo được gửi kiểu phát tràn, …Mạng ngang hàng có cấu trúc dựa trên DHT khắc phục nhược điểm của mạng không cấu trúc bằng cách sử dụng hệ thống bảng băm phân tán Hệ thống này định nghĩa liên kết giữa các nút mạng trong mạng phủ theo một thuật toán cụ thể, đồng thời xác định chặt chẽ mỗi nút mạng sẽ chịu trách nhiệm đối với phần dữ liệu nào được chia sẻ trong mạng Với cấu trúc này, khi một máy cần tìm một dữ liệu, nó chỉ cần áp dụng một giao thức chung để xác định nút mạng nào chịu trách nhiệm về dữ liệu đó và liên lạc trực tiếp đến nút mạng đó để lấy kết quả
Mạng P2P có cấu trúc sử dụng một giao thức đảm bảo tính toàn cục để chắc chắn rằng mọi peer tham gia mạng đều có thể định tuyến truy vấn tới các peer khác chứa dữ liệu mong muốn, ngay cả khi dữ liệu đó không phổ biến Sự đảm bảo này yêu cầu một mạng phủ (overlay) được liên kết theo một cấu trúc nhất định Hầu hết những mạng P2P có cấu trúc hiện này đều thuộc kiểu DHT, với kiểu này một kỹ thuật băm phù hợp được sử dụng để gán quyền quản lý dữ liệu cho những peer tham gia cụ thể, cũng như bảng băm truyền thống, mỗi khóa sẽ được gán cho những ô cụ thể Một số mạng based-DHT phổ biến có thể kể là: Chord, Pastry, CAN,…
Bảng băm là một cặp (tên, giá trị) hay thường gọi là cặp (khóa, giá trị) Mỗi một node khi tham gia vào mạng có thể dễ dàng tìm thấy giá trị mong muốn dựa vào
khóa của giá trị đó Việc hình thành khóa và gắn các khóa đó với giá trị tương ứng
được thực hiện trực tiếp tại các node trong mạng, chính vì vậy khả năng sập mạng được giảm tối thiểu khi các node tham gia hoặc dời bỏ mạng Chính lý do này khiến khả năng mở rộng của mạng DHT là cực lớn, quá trình kiểm soát việc tham gia, dời bỏ mạng của các node cũng trở nên dễ dàng hơn
Trang 21Với cấu trúc vững mạnh, DHT được sử dụng như một giao thức nền để xây dựng nhiều ứng dụng phức tạp như: Hệ thống các file phân tán, hệ thống chia sẻ file ngang hàng, hệ thống nội dung phân tán, tin nhắn tức thời, Multicast… Các mạng DHT nổi tiếng thường được nhắc đến là: Bittorrent, eDonkey, …
Các nghiên cứu về DHT được bắt nguồn cùng với sự phát triển của các hệ thống P2P như Napster, Gnutella, và Freenet, những hệ thống này sử dụng lợi thế của các tài nguyên phân tán trên mạng Internet để cung cấp một ứng dụng chia sẻ thông tin hữu dụng Cụ thể, chúng đã sử dụng lợi thế tăng băng thông và sức chứa của ổ cứng còn nhàn rỗi của các Peer để cung cấp dịch vụ chia sẻ file và các hệ thống này khác nhau chủ yếu ở cách thức thực hiện việc tìm kiếm dữ liệu mà các peer quản lý
DHT sử dụng cơ chế định tuyến dựa trên khóa trên 1 kiến trúc mạng chặt chẽ
hơn để có thể đạt được cả tính phân tán về tài nguyên của Gnutella và Freenet, tính hiệu quả về truy vấn của Napster Có một hạn chế là DHT chỉ hỗ trợ tìm kiếm chính
xác, không hỗ trợ tìm kiếm theo từ khóa, hay tìm kiếm theo khoảng,… tuy nhiên các chức năng này có thể triển khai mở rộng trên nền DHT
Sau khi một số mạng based - DHT đầu tiên được giới thiệu vào khoảng năm
2001, lĩnh vực nghiên cứu DHT trở lên khá năng động Công nghệ DHT đã được sử dụng như một thành phần của BitTorrent và trong Coral Content Distribution Network Ngày nay, hầu hết các nghiên cứu về P2P đều coi DHT như giao thức cơ sở
để từ đó, xây dựng lên các tầng ứng dụng bên trên
2.1.2 Các tính chất của mạng DHT
DHT nhấn mạnh vào các thuộc tính sau:
Phân tán (Decentralization): các node tham gia cấu thành hệ thống không
có thành phần trung tâm làm điều phối mạng
Khả năng mở rộng: hệ thống vẫn có thể hoạt động hiệu quả với hàng nghìn hoặc hàng triệu node
Khả năng chịu lỗi: hệ thống vẫn có thể làm việc ổn định ngay cả khi có các sự kiện node tham gia, rời bỏ mạng hay lỗi diễn ra
Kỹ thuật khóa được sử dụng để đạt được mục đích là mỗi node chỉ cần liên kết
với một số ít các node khác trong hệ thống, thường là O(logn) với n là số node tham gia Vì vậy sự thay đổi trong các thành viên chỉ ảnh hưởng đến một phần nhỏ của hệ thống
Một số thiết kế DHT có tính bảo mật nhằm chống lại những người tham gia có
ác tâm và cho phép người tham gia giấu danh tính, mặc dù điều này không phổ biến trong các hệ thống P2P chia sẻ file
Trang 22Cuối cùng, DHT phải giải quyết những vấn đề cơ bản của các hệ thống phân tán
đó là cân bằng tải, tính toàn vẹn dữ liệu, hiệu năng (cụ thể là đảm bảo các hoạt động như định tuyến, lưu trữ, truy vấn phải được thực thi nhanh chóng)
2.2 Mạng ngang hàng có cấu trúc CHORD
Theo một đánh giá tổng hợp về các thuật toán định tuyến dựa trên DHT trong
các kiến trúc mạng khác nhau như hình tròn (ring, với giao thức Chord), hình cây (tree), hình hộp (hypercube, với giao thức CAN), …xét về sự linh hoạt trong việc định tuyến, khả năng phục hồi trạng thái cũng như khả năng chịu lỗi, kiến trúc ring đều
được đánh giá cáo Vì vậy, kiến trúc Chord thường hay được sử dụng như là mạng phủ
để thực hiện các cài đặt cải tiến việc tìm kiếm trên P2P có cấu trúc
2.2.1 Mô hình mạng Chord
Chord[12] được mô tả dưới dạng một vòng tròn và không gian định danh phân
bố đều trên vòng tròn tăng dần theo chiều kim đồng hồ Nếu gọi N là số bit định danh của không gian khóa thì mạng Chord có thế chứa tối đa 2N node Mỗi node trên Chord
có một định danh id và có khả năng duy trì liên kết 2 chiều với các node đứng liền
trước và liền sau nó theo chiều kim đồng hồ, tạo thành 1 mạch kiên kết vòng Node
liền trước được gọi là Successor(id), và node liền sau được gọi là Predecessor(id) Thêm vào đó, mỗi node sẽ lưu một bảng định tuyến gọi là Finger Table, cho phép node đó định tuyến tới các node ở xa Mỗi dòng trong bảng Finger Table sẽ lưu thông tin về 1 node ở xa, gọi là 1 entry Không gian định danh có bao nhiêu bit thì Finger
Table có bấy nhiêu entry
Trang 23Hình 2.2-1: Một mạng Chord với 3 node 0, 1, 3 và các bảng Finger Table ứng với mỗi node N = 3 bit nên
Finger Table có 3 entry
Các trường trong mỗi entry trong bảng Finger Table của node n được định
nghĩa trong bảng dưới:
Bảng 2-1 Bảng định nghĩa các trường trong Finger Table
Trong đó giá trị của trường node tại dòng i của bảng được coi như là finger thứ
i của node n Thông tin lưu trong bảng cũng bao gồm cả IP và Port của các node tương
ứng Node đầu tiên trong bảng Finger Table của n chính là Successor của n, hay còn
được gọi là Immediate Successor
Từ bảng Finger Table ở trên ta có thể thấy rằng:
+ Mỗi node chỉ cần lưu trữ thông tin của một số node nhất định trong bảng định tuyến của mình
+ Node biết thông tin về các node gần nó nhiều hơn là các node ở xa
+ Bằng cách định tuyến thông qua bảng Finger Table, một node n có thể xác định được vị trí của bất kỳ khóa nào trên mạng
2.2.2 Ánh xạ khóa vào một node trong Chord
Chord ánh xạ các khóa vào các node, thường theo cặp (key, value) Một value
có thể là 1 address, 1 văn bản, hoặc 1 mục dữ liệu Chord có thể thực hiện chức năng này bằng cách lưu các cặp (key, value) ở các node mà key được ánh xạ Một node sẽ
chịu trách nhiệm lưu giữ một khóa k nếu node đó là node có định danh id nhỏ nhất thỏa mãn điều kiện id >= k Một node khi lưu giữ khóa k cũng sẽ được gọi là Successor của k, ký hiệu là Successor(k)
Trang 24Hình 2.2-2: Lưu giữ key trong mạng Chord: node 0 lưu key 6, node 1 lưu key 1 và node 3 lưu key 2
2.2.3 Tìm kiếm trong mạng Chord
Khi một node n cần tìm kiếm một khóa có định danh id, node n sẽ tìm node chịu trách nhiệm lưu giữ id đó Nếu node n ở xa so với vị trí của node lưu giữ id, n có
thể nhờ vào thông tin trong bảng Finger Table để định tuyến đến các node xa hơn, từ
đó dần dần tìm ra node chịu trách nhiệm lưu giữ id
Một ví dụ được chỉ trong hình 2.2-1, giả sử node 3 muốn tìm successor của ID
= 1 (hoặc còn có thể coi là khóa) ID =1 thuộc khoảng [7, 3) Node 3 kiểm tra entry thứ 3 trong bảng định tuyến của nó, là 0 Bởi vì 0 nằm ngay trước 1 trên vòng tròn, node 3 sẽ hỏi node 0 để tìm successor của 1 Tiếp theo, node 0 sẽ tìm trong bảng định tuyến của nó và suy ra successor của 1 chính là node 1, và trả lời node 3 rằng node 1 chính là successor của khóa ID = 1
2.2.4 Tham gia và ổn định mạng
Trong 1 mạng động, thường xuyên có sự thay đổi với các node tham gia và rời khỏi bất kỳ lúc nào, để có thể xác định được vị trí của các khóa ở trong mạng, Chord cần thỏa mãn 2 điểm sau :
Mỗi successor của 1 node phải được duy trì
Với mỗi khóa k, node successor(k) có trách nhiệm quản lý k
Khi tham gia vào một mạng Chord, một node n cần chọn cho nó một định danh
id và báo cho các node bên cạnh biết sự tham gia của nó Các node Successor và
Predecessor sẽ cần phải cập nhật thông tin về node mới tham gia vào mạng Node n cũng khởi tạo bảng định tuyến Finger Table Để mạng vẫn định tuyến đúng sau khi có
sự tham gia của node n, các node cần thường xuyên chạy thuật toán ổn định mạng để
Trang 25cập nhật thông tin về node bên cạnh (hay node láng giềng) Một số node có lưu thông tin về n trong bảng Finger Table thì cần cập nhật các entry liên quan trong Finger Table Cuối cùng, node Successor của n sẽ chuyển một phần khóa k mà bây giờ n là Successor(k) cho n lưu giữ Việc chuyển khóa sẽ do tầng trên của ứng dụng thực hiện
Khi một node chuẩn bị rời khỏi mạng, nó cần thông báo cho các node bên cạnh biết để ổn định lại mạng Node đó cũng sẽ chuyển các khóa nó lưu giữ cho node Successor của nó
2.3 Kết luận
Chúng ta vừa tìm hiểu về mạng ngang hàng có cấu trúc Qua đó ta thấy rằng, những nhược điểm của mạng ngang hàng thuần túy có thể khắc phục khá hiệu quả nhờ vào việc áp dụng những kiến trúc nhất định vào P2P Tuy nhiên, nếu chỉ dựa vào kiến trúc DHT thôi, liệu các ứng dụng đã đảm bảo được hiệu quả trong việc quản lý và tìm kiếm thông tin trên mạng? Chương tiếp sẽ giúp lý giải câu hỏi trên thông qua việc giới thiệu các giải pháp nâng cao cho P2P có cấu trúc
Ngoài ra, chương này còn giới thiệu chi tiết giao thức Chord, một giao thức based – DHT điển hình rất hay được sử dụng để cài đặt mạng phủ trong các nghiên cứu về P2P Chord cũng được luận văn sử dụng để cài đặt chương trình mô phỏng đánh giá hiệu quả hoạt động của giải pháp đề suất trong phần sau
Trang 26CHƯƠNG 3 MỘT SỐ GIẢI PHÁP PHÂN PHỐI VÀ TÌM KIẾM THÔNG TIN TRÊN MẠNG NGANG HÀNG CÓ CẤU TRÚC
Có nhiều giải pháp tìm kiếm nâng cao trên mạng ngang hàng có cấu trúc như: tìm kiếm theo khoảng, tìm kiếm theo các thuộc tính/giá trị, tìm kiếm gần đúng, … Chương này tập trung đi sâu vào việc tìm hiểu các giải pháp tìm kiếm theo các thuộc tính/giá trị đã được đưa ra trong những năm gần đây như: INS/Twine[4], CDS[5], Data indexing[6], …đồng thời cũng rút ra các nhận xét về ưu nhược điểm của các giải pháp này
3.1 INS/Twine
INS/Twine[4] đưa ra mô hình hệ thống tên miền dịch vụ xây dựng trên mạng ngang hàng có cấu trúc với tên miền dịch vụ là một cây thuộc tính/giá trị phân tầng (AVTree) Mỗi tên miền dịch vụ được ánh xạ vào một tập hợp các khóa là giá trị băm của các nhánh của tên miền Phần này sẽ giới thiệu chi tiết kiến trúc hệ thống INS/Twine, cũng như phân tích những ưu nhược điểm của hệ thống này
3.1.1 Giải pháp
3.1.1.1 Biểu diễn các đặc tả tài nguyên
Các tài nguyên trong INS/Twine được mô tả bởi các cặp thuộc tính/giá trị phân cấp, mà mục đích sau cùng là dựng lên được cây AVTree Hình dưới cho ta 1 ví dụ minh họa về một đặc tả tài nguyên và cây AVTree được xây dựng lên từ đặc tả đó
Hình 3.1-1: Một ví dụ về đặc tả tài nguyên và cây AVTree
Mỗi đặc tả tài nguyên trỏ tới 1 name-record chứa thông tin về nơi chứa tài nguyên đó, bao gồm: thông tin về IP, port, giao thức truyền
Trong INS/Twine, 1 tài nguyên d là kết quả trả về cho 1 câu truy vấn q nếu cây AVTree được thiết lập từ q là khớp với AVTree sinh ra bởi đặc tả của d, với sự cắt bớt
đi 0 hay nhiều cặp thuộc tính/giá trị Ví dụ: với d có đặc tả như hình trên thì câu truy
Trang 27vấn q=<res>camera<man>ACompany</man></res> hoặc q=<res>camera</res> có AVTree khớp với d Điều này cho phép INS/Twine hỗ trợ truy vấn từng phần (partial query), từ đó hỗ trợ tìm kiếm gần đúng thay vì chỉ tìm kiếm chính xác đặc tả tài nguyên phù hợp với toàn câu truy vấn ban đầu (complete query)
3.1.1.2 Mô hình hoạt động của hệ thống INS/Twine
Hình 3.1-2: Mô hình hoạt động của hệ thống INS/Twine
Trang 28Hình 3.1-3: Trích rút 1 AVTree thành các strand
Hình trên là 1 ví dụ về việc trích rút 1 AVTree thành các strand Số strand được tính theo công thức: s = 2a –t, với a là số cặp thuộc tính - giá trị, t là độ cao của AVTree
Việc tạo ra các strand hỗ trợ truy vấn từng phần (partial query) Do thông tin nhỏ nhất có ý nghĩa cho 1 đặc tả hay câu truy vấn là 1 cặp thuộc tính/giá trị nên có thể
bỏ qua những strand chỉ gồm duy nhất tên mỗi thuộc tính Với lược đồ như trên, các câu truy vấn từng phần dễ dàng được xử lý do được ánh xạ đến các key riêng biệt Yêu cầu lưu trữ tại mỗi node là:
Trong đó:
R: số node trong hệ thống
S: số trand trung bình cho mỗi đặc tả tài nguyên
N: số resolver trong mạng (có thể đồng nhất với số node)
K: mức độ sao chép thông tin tài nguyên, K được chọn sao cho S*K<<N Tuy nhiên, sẽ tồn tại nhiều strand liên quan đến nhiều đặc tả thông tin khác nhau, do đó, node phụ trách khóa do strand sinh ra có thể bị quá tải Để giải quyết vấn
đề này, INS/Twine sử dụng 1 giá trị ngưỡng nhằm giới hạn số tài nguyên tối đa liên quan đến 1 key, giá trị này được xác định dựa vào khả năng của node Khi ngưỡng này
bị vượt quá, không tài nguyên nào liên quan đến key này được node tiếp nhận Node cũng bắt đầu cho phép thay thế ngẫu nhiên các entry cũ bởi các entry mới được thông cáo (Mỗi một bản ghi trong bảng dùng để lưu thông tin về các đặc tả tài nguyên tại
mỗ node được coi là 1 entry)
Một câu truy vấn được trích ra thành nhiều strand có thể thu được kết quả thông qua việc xử lý 1 trong những strand dài nhất, do đó, ngưỡng nói trên không ảnh hưởng đến hầu hết các kết quả truy vấn Trong quá trình giải quyết truy vấn, nếu 1 node trả về kết quả không hoàn chỉnh do ngưỡng gây ra, 1 strand khác sẽ được chọn để tìm tiếp Việc này được lặp lại cho đến khi danh sách tất cả tài nguyên có đặc tả phù hợp được tìm thấy hoặc khi đã duyệt hết tất cả các strand Kết quả trả về sẽ là các đặc tả trùng khớp nếu thấy, ngược lại sẽ là danh sách kết quả từ truy vấn từng phần, dựa vào kết quả này, người dùng có thể định nghĩa lại câu truy vấn để tìm kiếm lại nếu cần
Thêm vào đó, nếu gặp trường hợp 1 câu truy vấn quá ngắn hoặc chỉ gồm thông tin đặc tả phổ biến, để trách cho node chịu trách nhiệm quản lý strand phổ biến bị quá tải, những node cạnh mạng sẽ caching 1 số kết quả để hỗ trợ Tuy nhiên việc caching này chưa được cài đặt trong hệ thống
Trang 29Việc tạo khóa được thực hiện bằng cách chuyển thuộc tính/giá trị trên các strand thành string, sau đó băm string này bởi hàm băm 128-bit MD5 Tiếp đó, khóa
Ki cùng với các thông tin về loại message, đặc tả hoặc câu truy vấn đầy đủ sẽ được chuyển xuống lớp dưới
KeyRouter:
KeyRouter là tầng cuối cùng trong hệ thống INS/Twine Tầng này chịu trách nhiệm chuyển các Ki tới node quản lý nó dựa vào 1 mạng DHT INS/Twine chọn Chord để đảm bảo tính mở rộng cũng như hiệu quả trong việc tìm kiếm
Message cuối cùng được chuyến đến node quản lý Với câu truy vấn thì kết quả tốt nhất được trả lại cho node tìm kiếm ban đầu
3.1.1.3 Quản lý trạng thái
Mục tiêu của thiết kế INS/Twine là:
Khi 1 node tham gia vào, hoặc dời mạng, hoặc sửa đổi thông tin về đặc tả, thông tin update sẽ được truyền tới các node thích hợp Thông tin mới sẽ thay thế các thông tin cũ, sau khi update xong đảm bảo rằng các đặc tả cũ
và thông tin về vị trí lưu trữ cũ không được trả về trong câu truy vấn (Khi thông tin update đang được truyền trên mạng thì tất nhiên kết quả nhận được có thể gồm cả cũ lần mới.)
Khi tài nguyên bị xóa thì thông tin đặc tả lưu tại các Resolvers về tài nguyên đó cũng bị xóa
Kết quả trả về không ảnh hưởng bởi nhưng Resolvers mới tham gia hoặc Resolvers bị lỗi (mức độ chịu lỗi được qui định bởi tham số k)
Có nhiều cách để đạt được những mục tiêu trên Resolver coi thông tin tài nguyên luôn có trạng thái mềm (soft – state), yêu cầu tài nguyên phải refresh lại thông tin này 1 cách định kỳ, ngược lại thông tin về tài nguyên sẽ bị loại bỏ Để đảm bảo thông tin được update, chu kỳ update phải nhỏ, nhưng sẽ làm tốn kém băng thông Mô
Trang 30hình lai ghép mà INS/Twine sử dụng như mô hình dưới là sự kết hợp giữa việc quản lý soft – state và yêu cầu về băng thông nhỏ hard – state
Hình 3.1-4: Việc quản lý trạng thái trong hệ thông INS/Twine
Mỗi tài nguyên R gửi thông tin refresh của nó tới Resolver theo chu kỳ δ Resolver refresh thông tin trong mạng với chu kỳ ∆ dài hơn Nếu 1 tài nguyên ra khỏi mạng mà không thông báo thì resolver gần nhất sẽ nắm được thông tin này trong khoảng thời gian δ và sẽ thông báo cho các node khác biết Tương tự cho trường hợp tài nguyên update thông tin Khi resolver bị lỗi (sập), thông tin về tài nguyên liên quan tồn tại trên mạng không quá thời gian ∆
3.1.2 Nhận xét
Ưu điểm dễ thấy nhất của INS/Twine là cho phép truy vấn từng phần Trong thực tế, người dùng thường không có thông tin đầy đủ về cái mình cần tìm, việc trả về tất cả các kết quả từng phần của câu truy vấn giúp cho người dùng có được những thông tin hữu ích để từ đó, có thể định nghĩa lại câu truy vấn cho phù hợp, hoặc lựa chọn được một kết quả phù hợp trong số các kết quả trả về
Mặc dù INS/Twine hỗ trợ tìm kiếm theo từng phần ứng với các nhánh của tên miền, nhưng việc tìm kiếm sẽ không thực hiện được với các truy vấn không thuộc các nhánh của tên miền
Ngoài ra, hệ thống INS/Twine không đảm báo tính cấn bằng tải giữa các node
do các node phụ trách các thuộc tính/giá trị phổ biến sẽ phải chịu tải nội dung và truy vấn lớn Việc lấy ngưỡng hạn chế tải cho các node dẫn đến bị mất thông tin, việc thay thế ngẫu nhiêu entry cũ bởi entry mới cũng dẫn đến bị mất thông tin
Số lượng bản sao về thông tin lớn (mỗi strand ánh xạ thành nhiều khóa, số khóa bằng chiều dài strand -1, số strand = 2a-t)
Trang 31Tìm kiếm chưa hiệu quả (chưa nhanh): có thể phải quét toàn bộ strand mới cho kết quả
3.2 CDS
Giải pháp CDS (Content discovery System)[5] cũng sử dụng các cặp thuộc tính/giá trị để định danh nội dung thông tin cần chia xẻ Tuy nhiên, khác với INS/Twine, CDS tạo nhiều khóa cho một nội dung từ mỗi cặp thuộc tính/giá trị trong tên miền và phân bổ thông tin về nội dung đến các node phụ trách các khóa đó Như vậy, khi truy vấn nội dung, CDS chỉ sử dụng một cặp thuộc tính/giá trị để tạo khóa truy vấn và truy vấn đến node phụ trách khóa đó CDS cũng đề ra giải pháp tạo Ma trận Cân bằng Tải (Load Balancing Matrix - LBM) để giải quyết vấn đề cân bằng tải
3.2.1 Giải pháp
Hình dưới chỉ ra kiến trúc của một node sử dụng CDS Mỗi node tham gia vào mạng CDS liên kết với các node khác dựa trên một mạng phủ ngang hàng có cấu trúc (DHT) Tầng CDS được thiết kế như là tầng truyền thông cơ sở để trên đó các ứng dụng mạng ngang hàng như chia sẻ file, tìm kiếm thông tin, … được xây dựng
Hình 3.2-1: Kiến trúc 1 node sử dụng CDS
Mỗi tên nội dung được biểu diễn bằng n cặp thuộc tính/giá trị (av): CN = { a1v1,
a2v2, …, anvn} Tương tự, mỗi câu truy vấn Q cũng được cho dưới dạng m cặp av, và việc tìm kiếm được tiến hành thông qua việc so khớp các tập con av trong tên nội dung với các av trong Q, kết quả trả về là các tên nội dung CN chứa các av trong Q
CDS có 2 chức năng chính: đăng ký tên nội dung và xử lý truy vấn ở các node Khi nhận được 1 thông điệp, CDS sẽ phải xác định xem những node nào sẽ xử lý thông điệp đó Các node này được gọi là Rendezvous Points (RPs - điểm trung gian, môi giới)
Mô hình thiết kế CDS cơ bản gồm 3 phần cơ bản: Đăng ký tên nội dung với các node môi giới, xử lý truy vấn và xử lý cân bằng tải Phần tiếp theo sẽ trình bày chi tiết hơn mô hình này
Trang 323.2.1.1 Đăng ký tên nội dung với các node Rendezvous Points
Để đăng ký 1 tên nội dung lên mạng, việc đầu tiên là xác định những node sẽ nhận và quản lý tên nội dung này CDS sử dụng 1 hàm băm H để băm các cặp av trong tên nội dung thành 1 khóa Ni, sau đó, node phụ trách khóa Ni sẽ chịu trách nhiệm quản
lý tên nội dung này Ví dụ, với tên nội dung: CN = { a1v1, a2v2, …, anvn}, tính các H(ai,
vi) =Ni, i=1, …, n Các node lưu thông tin CN là các node chịu trách nhiệm quản lý các khóa Ni (gọi tắt node đó là N i)
Như vậy, mỗi tên nội dung với n cặp av sẽ được sao chép và lưu giữ ở n node khác nhau trên hệ thống Node Ni chính là node chịu trách nhiệm quản lý tất các các tên nội dung có chứa cặp aivi
Hình 3.2-2: Ví dụ về việc đăng ký tên miền và xử lý truy vấn với 1 tập các điểm môi giới RPs
Trang 33Phương pháp cân bằng tải dựa trên ma trận LBM (Load Balancing Matrix):
Do cách đăng ký tên nội dung đã trình bày ở trên và thực tế là tồn tại nhiều cặp
av phổ biến nên tải nội dung sẽ tập trung ở một số node nhất định làm cho những node này bị quá tải Hệ thống CDS thực hiện việc phân tải bằng cách sử dụng một tập các node thay vì sử dụng một node để chia sẻ các tải nội dung và tải truy vấn Hình dưới
mô tả ma trận cân bằng tải cho các tên nội dung có chứa cặp aivi, mỗi một node trong
ma trận có chỉ số cột và hàng (p, r) và ID của node được xác định bởi hàm băm H:
(*) Mỗi một cột trong ma trận chứa một tập con các tên nội dung có chứa cặp aivi, mỗi tập con đó được gọi là 1 partition Các node thuộc cùng một cột là bản sao của mỗi node khác nghĩa là chúng chứa cùng một tập tên nội dung chứa cặp aivi
Hình 3.2-3: Ma trận cân bằng tải cho cặp thuộc tính a i v i
Ma trận cân bằng tải mở rộng hay thu nhỏ theo hai chiều phụ thuộc vào tải mà
nó nhận được Số cột (tương ứng với partitions mới) sẽ được thêm vào ma trận khi tải
Trang 34nội dung của cặp aivi tăng lên, số dòng sẽ được thêm vào khi tải truy vấn tăng lên Ma trận cân bằng tải có nhiều hình dạng khác nhau, có thể chỉ có một hàng nếu tải nội dung của node Ni lớn và tải truy vấn của nó nhỏ, hoặc ngược lại, chỉ có một cột nếu tải truy vấn của node Ni lớn và tải nội dung của nó lại nhỏ
Để mở rộng ma trận mỗi node phải lưu trong bộ nhớ của nó ba giá trị ngưỡng:
Tcn- số tên nội dung lớn nhất node có thể chứa,
Treg- mức độ đăng ký mà node có thể chịu được,
Tq- mức độ truy vấn lớn nhất mà node có thể chịu được
Chú ý là một node có thể thuộc về nhiều ma trận khác nhau khi có nhiều cặp av ánh xạ tới node đó
Hoạt động của ma trận LBM:
Việc đăng ký:
Trong hệ thống cơ sở, một nhà cung cấp tên nội dung sẽ đăng ký tên nội dung của nó với các node môi giới RPs sẽ quản lý tên nội dung này Ngược lại, với LBM, nhà cung cấp phải đăng ký tên nội dung của nó với một cột gồm những node trong mỗi
ma trận tương ứng với cặp av Để đăng ký với ma trận LBMi nhà cung cấp tên nội dung phải phát hiện ra kích cỡ của ma trận LBMi, tức là phải biết được số partitions P hiện là bao nhiêu, và số các bản sao R là bao nhiêu
Khi kích thước của ma trận đã được xác định, nhà cung cấp tên nội dung sẽ chọn ngẫu nhiên một số i từ một đến P, i chính là cột sẽ lưu tên nội dung Sau đó, sử dụng công thức (*) để tính toán khóa, và gửi khóa đó tới node quản lý nó Vì phần được chọn là ngẫu nhiên nên tải sẽ được phân phối nhiều trong ma trận
Giải quyết câu truy vấn:
Tương tự như trong hệ thống cơ sở, các client có thể gửi một câu truy vấn đến các ma trận thích hợp với bất kỳ cặp av nào có trong câu truy vấn Chi phí truy vấn phụ thuộc vào số cột trong ma trận (số partitions) được chọn Nếu câu truy vấn chỉ có
1 cặp av, thì gửi trực tiếp câu truy vấn đến ma trận phụ trách cặp av đó Nếu ma trận
có nhiều partitions, thì chọn 1 tập con các partition đủ để tìm kiếm được kết quả khớp Client có thể định nghĩa lại câu truy vấn bằng cách thêm số av vào, giống như người
sử dụng thường làm khi tìm kiếm trên internet
CDS sử dụng 2 thuật toán để xác định xem, khi câu truy vấn có nhiều cặp av thì client nên sử dụng cặp nào để truy vấn Đầu tiên, client sẽ thăm dò kích thước của tất
cả các ma trận thích hợp với mỗi cặp av trong câu truy vấn, sau đó sẽ chọn ra ma trận
có ít partition nhất Chi phí cho việc thăm dò này sẽ nhỏ đi nếu dùng kỹ thuật cache lại khi node thực hiện truy vấn
Trang 35Sau khi đã chọn xong ma trận, client sẽ gửi câu truy vấn đến tất cả các partition trong ma trận nếu nó cần tập hợp tất cả các kết quả trả về Vì các node trong cùng 1 cột chứa nội dung thông tin giống nhau, nên chỉ cần chọn ngẫu nhiên 1 node trong cột
để thực hiện truy vấn
Việc quản lý ma trận
Để hệ thống hoạt động ổn định, kích thước của ma trận sẽ tăng lên hay giảm đi
1 cách tuyến tính với số lượng tải (nội dung và truy vấn) liên quan đến av
Giả sử xết ma trận cân bằng tải LBMi tương ứng với cặp thuộc tính/giá trị aivi,
Ni(0,0) là node gốc của ma trận Giả sử vào thời điểm hiện tại LBMi có kích thước là (Pi, Ri)
Mở rộng ma trận theo số cột, tức là thêm partition và ma trận
Những partition mới sẽ được thêm vào ma trận nếu những partition hiện có nhận được quá nhiều tải đăng ký nội dung Gọi các partition mới được thêm vào ma trận là vùng mở rộng ER (expansion region) Việc mở rộng ma trận được thực hiện như sau:
Khi tải đăng ký nội dung trên 1 node nào đó trong ma trận đạt tới ngưỡng Tcnhoặc Treg, nó sẽ gửi 1 thông điệp INC_P đến node Ni(0,0)
Node gốc sẽ nhân đôi số partition lên thành 2Pi Nó bỏ qua những thông điệp nhận được từ partition không thuộc vùng mở rộng ER và từ các partition khác đến sau
Node gốc sau đó sẽ thông tin cho các partition từ Pi đến 2Pi biết rằng chúng đã trở thành các node thuộc ma trận LBMi
Các partitions từ Pi đến 2Pi trở thành ER mới
Khi nhận được 1 tên nội dung chứa aivi, node đăng ký sẽ phát hiện ra LBMi có 2Pi partitions, và nó sẽ chọn 1 node để đăng ký Do đó, tải đăng ký sẽ được chia sẻ bởi phần ER
Node gốc chỉ chấp nhận thông điệp yêu cầu mở rộng ma trận từ ER để tránh việc mở rộng ma trận khi không cần thiết Nói cách khác, LBMi chỉ mở rộng theo cột nếu thỏa mãn 2 điều kiện: tải được phân bổ đều giữa tất cả các node và tải trên tất cả các node trong ma trận đều đạt ngưỡng