Tải bản đầy đủ (.pdf) (62 trang)

Xây dựng ứng dụng tìm kiếm thông tin dựa trên giao thức mạng ngang hàng có cấu trúc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (24 MB, 62 trang )

ĐẠĨ HỌC QUO C GIA HÀ NỘI
XÂY DỤNG ỨNG DỤNG TÌM KIÉM THÔNG TIN DựA
TRÊN GIAO THỨC MẠNG NGANG HÀNG CÓ CẤÙ
TRÚC
M ã số: Q C .0 9 .1 2
C h ủ n h iệm đ ề tà i: T S . N g u y ễ n H o à i S ơ n
H à N ộ i - 2 0 1 0
j/\\ H Ọ C Q U Ò C G I A H À N Ò I
ĨR Ụ N G t à m t h ô n g t i n Ỉ H Ư v i ê n
OOOtOOOOOỈS
M Ụ C L Ụ C
DANH SÁCH NHU'NG NGƯỜI THAM GIA THỰC HIỆN ĐỀ T À I
3
DANH MỤC CÁC BẢNG BIÈU, HÌNH V Ê 4
TÓM TẮT CÁC KẾT QUẢ NGHIÊN cửu CHÍNH CỦA ĐỀ TÀ I 5
BÁO CÁO TỒNG K É T 7
1. Giới thiệu c h u n g 7
2. Các công cụ tìm kiếm thông tin trên Internet 8
2.1. Các dịch vụ tìm kiếm thông tin W eb
8
2.2. Mạng ngang hàng có cấu trúc và việc tìm kiếm thông tin dựa trên mạng ngang
hàng có cấu trúc 9
3. Thiết kế hệ thống tìm kiếm thông tin sử dụng công nghệ mạng ngang h à n g 12
3.1 Mục tiêu thiết k ế 12
3.2 Ý tưởng cùa thuật toán tìm kiếm thông tin
13
3.2.1 Ánh xạ tên nội dung-khóa và Phân bổ nội d u n g
15
3.2.2 Truy vẩn thông tin 16
3.3 Vấn đề tối ưu hóa to p ology 17
3.4 Thiết kế chương trình phần m ề m 19


3.4.1. Cấu trúc chương trình 19
3.4.2 Thiết kế giao thức

24
3.5. Triền khai và đánh g iá

25
4. Kết luận

27
TÀI LIỆU THAM K H À O 29
PHỤ L Ụ C 31
2
DANH SÁCH NHŨNG NGƯỜI THAM GIA THỤC HIỆN ĐỀ TÀI
S IT Họ và tên
Học hàm . học vị, Cơ quan công tác
1 Neuvễn Hoài Sơn
TS. Khoa CNTT- ĐH Công nghệ. ĐHQG Hà Nội
2 Hồ Đắc Phương TS. Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội
3 Đoàn M inh Phương
Ths
Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội
4 Đào Minh Thư
Ths Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội
5 Nguyễn Đình Nghĩa
Ths
Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội
6 Nguyễn Thành Đạt CN Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội
7 Bùi Thị Lan Hương CN
Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội .

3
DANH MỤC CÁC BẢNG BIẾU, HÌNH VẼ
Hình 1. Kiến trúc lưu trừ - truy vấn thòne tin cùa G o ogle

.

9
Hình 2. Định tuyến trong mạng Chord

10
Hình 3. K hóa phân bổ và ánh xạ giữa khóa phân bồ và khóa bậc 2 16
Hình 4. Sơ đồ truy vấn thông tin 17
Hình 5: Biểu đồ thời gian trễ trung bình thay đổi theo số lượng node
19
Hình 6. Cấu trúc khung chương trinh

20
Hình 7. M odule D ataStore 20
Hình 8. Quá trình gửi và nhận thông báo cùa m odule M essageHandler
22
Hình 9. Các bước gia nhập một mạng đã có cùa m ột node m ớ i
23
Hình 10. Cập nhật bảng định tuyến

24
Hình 11. Màn hình khời tạo mạng Chord và các tham số cùa mạng C h o rd

26
Hình 12. Màn hình nhập dừ liệu vào hệ thốn g


.

26
Hình 13. Màn hình nhập dừ liệu tìm k iểm
27
4
T Ó M T Ắ T C Á C K Ế T Q U Ả N G H IÊ N c ú t ) C H Í N H C Ử A Đ Ề T À I
Têt (tề tài: Xây dựng ứng dụng tìm kiếm thông tin dựa trên giao thức m ạng ngang hàng có
cấu trúc
M ãsố đề tài: QC.09.12
Chi trì đo tài: TS. Nguyễn Hoài Sơn
Đen vị công tác: Bộ môn M ạng và Truyền thông máy tính, Khoa Công nghệ thông tin,
Triờiìg Đại học Công nghệ - ĐHQG Hà Nội
Các bộ tham gia thực hiện:
S7T
I ỉọ và tên
Học hàm, học vị, Cơ quan công tác
1 Nguyễn Hoài Sơn TS.
Khoa CNTT- ĐH C ông nghệ, ĐHQG H à Nội
2
I lồ Đắc Phương
TS. Khoa CNTT- ĐH C ông nghệ, ĐHQG Hà Nội
3 Đoàn M inh Phương Ths Khoa CNTT- ĐH Công nghệ, ĐHQG Hà Nội
4 Dào M inh Thư Ths
Khoa CNTT- ĐH C ông nghệ, ĐHQG Hà Nội
5 Nguyễn Đình N ghĩa Ths
NCS Khoa CNTT- ĐH Công nghệ, Đ H QG Hà Nội
6 Nguyễn Thành Đạt CN
Học viên cao học Khoa CNTT- ĐH Công nghệ, ĐHQG
Hà Nội

7 Bùi Thị Lan Hương CN
Học viên cao học Khoa CN TT- ĐH Công nghệ, ĐHQG
Hà Nội
Cá- kết quá đạt được
KÌ‘t quả về khoa học:
- tài đã tìm hiểu các các yêu cầu cụ thể của một hệ thống tìm kiếm thông tin dựa trên mạng
raging hàng và cách thức tìm kiếm thông tin dựa trên công nghệ mạng ngang hàng có cấu trúc
- Kày dựng một hệ thống tìm kiểm thông tin theo thuộc tính-giá trị dựa trên công nghệ mạng
mgtng hàng có cấu trúc
- <ây di,mg một giải pháp cải thiện độ ưề trên mạng ngang hàng có cấu trúc
- 1 bài báo cáo khoa học đăng trong kỳ yếu hội thảo quốc tế: Hội thảo quốc tế KSE 2009 và Hội
tihíO quốc tế ATC 2009
KÌt quá đào tạo:
5
- Có ] thạc sỹ (chương trình ] 6/23) và 3 cừ nhân tốt nghiệp trong khuôn khò cùn dề tài
- Nâng cao năng lực chuyên môn cho cán bộ bộ môn về các giải thuật định luvến và tìm
kiếm thông tin trong m ạng ngang hàng
6
BÁO CÁO TỐNG KÉT
1. Ctiói thiệu chung
Tốc độ phát triển nhanh chóng cùa Internel như hiện nay đã tạo ra cho chúng ta một cơ hội
lớn và cũng là m ột thách thức lớn trong việc sử dụng các tài nguyên Internet trong các ứng
đụn> xử lý thông tin quy mô lớn, cũng như cung cấp dịch vụ cho người dùng mọi nơi, mọi
lức. phù hợp với môi trường, hoàn cảnh và mong muốn cùa người dùng. Các tài nguyên này
bao gồm các tài nguyên máy tính như CPU, bộ n h á ổ lưu tr ừ , của các máy tính nối m ạng,
các tài nguyên thông tin như các trang Web hay các CSDL lưu trừ thông tin, các dịch vụ dựa
trêt nền W eb

Để khai thác và sử dụng các tài nguyên này m ột cách hiệu quà và hợp lý,
viiội tìm kiếm và quán lý thông tin các nguồn tài nguyên này là một vấn đề rất quan trọng.

Híiệi nay việc tìm kiếm thông tin trên mạng chủ yếu dựa vào các Search engine thương mại
nlhi G oogle, Yahoo, M SN, Các Search engine này duy trì một database dừ liệu khổng lồ,
tậ p h ự p từ rất nhiều W ebsite trên toàn thế giới. Việc tìm kiếm thông tin trên các Search
emgne hiện nay kết quà khá tốt. Tuy nhiên các Search engine này chi cho phép tìm kiếm các
Víăr bản chứa từ khóa hoặc cụm từ khỏa cần tìm, nhưng không cho phép tìm kiếm theo thuộc
tíml của các từ khóa này. Ngoài ra do quy mô quá lớn của dữ liệu nên kết quả trả về của các
Steach engine thường bao gồm rất nhiều thông tin không liên quan.
T ại Việt Nam, cùng với sự bùng nổ cùa công nghệ thông tin và với chù trương tin học hóa
CIÚ; chính phù, tin học đã được đưa vào rất nhiều đơn vị cơ quan nhà nước cùng như trường
htọc bệnh viện. Điều đó dẫn đến việc rất nhiều cơ quan đoàn thể công ty có nhu cầu chia xể
thiôig tin cho nhau. Ví dụ thông tin về sách lưu giữ tại các thư viện trên toàn quốc, các giáo
trim , giáo án và tài liệu nghiên cứu cùa các trường, các văn bàn lưu hành cùa các cơ quan
nlhi nước, hồ sơ bệnh án của các bệnh viện, cơ sở dữ liệu trong các cơ quan nhà nước trong
Cià 1UỚC Các thông tin này có đặc điềm là được quàn lý phân tán tại mỗi cơ sở, khối lượng
thiôig tin là lớn và được cập nhật thường xuyên. Do đó, để truy cập các thông tin này một
ciáci hiệu quả và tiện lợi, một công cụ tìm kiếm thông tin là hết sức cần thiết.
T ’u' nhiên, việc sừ dụng các địch vụ tìm kiếm như các Search Engine không thích hợp với
V'iệ tìm kiếm này do khà năng cập nhật thông tin có hạn cùa các Search Engine. Việc xây
diựig một hệ thống tìm kiếm tập trung cùng không phù hợp do chi phí cao trong việc xây
dlựig và duy trì hệ thống và máy chủ lưu giữ thông tin sẽ dễ trở thành điểm yểu của hệ thống.
Gìầi đây công nghệ mạng ngang hàng với các ưu điểm về khả năng triển khai m ờ rộng trên
qịu mô lón, chị phí thấp do sử dụng các tài nguyên sằn có, có độ linh hoạt cao như khả năng
cihu lỗi tốt phù hợp với các tính chất cùa Internet. Các ứng dụng chia xẻ file dựa trên mạng
nig.ng hàng đã được nhiều người dùng trẽn thế giới sừ dụng và phổ biến rộng rãi.
7
Tuy nhiên, các mạng ngang hàng thời kỳ đầu được xây dựng theo kiểu không có cấu trú<c,
các liên kết giữa các node trong mạng là ngẫu nhiên và các thông báo tìm kiếm thônn Ún
được phát tràn trên mạng. Do đó, mặc dù các mạng này có khả năng kháng lỗi tốt. các m ạng
này có xác suất tìm kiếm không cao và sừ dụng nhiều băng thông, hiệu quà tìm kiếm thắp.
Các giao thức 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 này 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) hay
không gian n-chiều (giải thuật CAN) 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 trưng cùa nội dung thòng
tin (aọi là tên nội dung) và sẽ được phân bồ đến node phụ trách khóa k. Nghiên cứu về việc
sừ dụng mạng ngang hàng có cấu trúc trong việc tìm kiếm và quán lý thông tin tài nguyên
Internet đã được tiến hành trong khuôn khổ của đề tài nghiên cứu khoa học do trường quàn
lý cấp Đại học Quốc gia QC.07.19.
Trên cơ sở đó, đề tài này sẽ tập trung xây dựng thử nghiệm một công cụ tìm kiếm thông till
sử dụng giao thúc mạng ngang hàng nhàm đánh giá tiềm năng ứng dụng công nghệ m ạng
ngang hàng trong tìm kiếm thông tin và khà năng triền khai công nghệ này trong thục tế.
Công cụ này sẽ góp phần chia xẻ và tìm kiếm ihông tin cho các hộ thống thông tin cua các
cơ quan, đơn vị hay các công ty với một chi phí hợp lý.
2. Các công cụ tìm kiếm thông tin trên Internet
2.1. Các dịch vụ tìm kiếm thông tin Web
Google[19), Yahoo [20], Bing [21] là các dịch vụ tìm kiếm thône tin trane; Web phô biến
nhất hiện nay. Các dịch vụ này cho phép người dùng tìm kiếm địa chi cua các trang Web
theo từ khóa tìm kiểm. Theo các con số thống kê không chính thức thì số lượng W ebsite
được tạo chi mục bởi Google lên tới hàng chục tỷ với số lượng truy vấn đến hàng tý mọi
ngày và hiện nay vẫn không ngừng gia tăng.
Để đáp ứng việc lưu trữ một lượng dừ liệu khổng lồ và số lượna truy vấn thông tin rất lỏn
thì Google sử dụng mô hình tập trung với sự kết hợp của hàng chục nghìn máv tính PC để
thực hiện các khối chức năng như Hình 1 [18].
8
H ình 1. K iến trú c lưu trừ - truy vấn th ông tin cùa G o ogle
Các trang Web được máy tìm kiếm của Google dow nload về và lưu tại các docum ent servers,
mỗi docum ent servers chứa một phần cơ sở dữ liệu các trang Web. Các từ khóa trong mỗi
văn bàn Web được sừ dụng để tạo ra index cho văn bản web đó theo ihuật toán riêng cùa
Google. Do kích thước cùa dữ liệu index lên đến hàng trăm terabyte nên dừ liệu index sẽ
được chia thành các phần index, mỗi phần sao lưu trong nhiều index servers.

Việc phân chia và sao lưu dữ liệu index cùa toàn bộ các trang Web lên các index server giúp
cho việc tìm kiểm thông tin trang Web có thể diễn ra một cách đồng thời tại nhiều index
server và khắc phục sự cố trong trường hợp có các index server bị lỗi.
Google cũng như các máy tìm kiếm khác cỏ các cơ chế xếp hạng thứ tự kết quà tìm kiếm, ví
dụ theo thuật toán PageRank tính toán căn cứ vào các liên kết Web giữa các trang Web.
Mặc dù các m áy tìm kiếm được sừ dụng rộng rãi và góp phần vào việc phát triển hệ thống
W W W toàn cầu nhưng với các ứng dụng đòi hòi phạm vi tìm kiếm thu hẹp, dữ liệu đa dạng
và dược cập nhật liên tục, nội dung truy vấn cần được mô tả một cách chính xác hơn để tăng
độ chính xác của kết quả tìm kiếm, thi việc sử dụng các dịch vụ tìm kiếm do các máy tìm
kiếm cung cấp là rất khó khăn.
Việc xây dựng hệ thống tìm kiếm sừ dụng các mô hình tìm kiếm thông tin một cách tập
trung giông như mô hình cùa các máy tìm kiếm Web cũng gặp vấn đề về chi phí vận hành
do phải dầu tư về trang thiết bị, chi phí quản lý và khả năng duy tri dịch vụ khi các máy tìm
kiếm gặp lỗi, không cung cấp được dịch vụ.
2.2. Mạng ngang hàng có cấu trúc và việc tìm kiếm thông tin dựa trên mạng
ngang hàng có cấu trúc
M ạng ngang hàng với các node cùng chia sẻ thông tin, băng thông và tài nguyên tính toán là
m ột m ô hình mạng ra đời trong khoáng 10 năm gần đây nhưng được sự chú ý cao do khả
năng m ờ rộng cùa hệ thống, khả năng sừ dụng hiệu quá tài nguyên cùa các bên tham gia và
9
khá năng kháng lồi cao. Các node trong mạng ngang hàng thuần túy tạo ra các liên kết logic
với nhau và thông qua các liên kết logic này để trao đồi thông tin. Tùy thuộc vào các thức
tạo các liên kết logic mà người ta chia mạng ngane hàng thuần túy thành 2 loại: Mạrm ngang
hàng có cấu trúc và Mạng ngang hàng không có cấu trúc. Trong đề tài này. chúng tôi tập
trung nghiên cứu triển khai dịch vụ tìm kiếm thông tin dựa trên mạng ngang hàr.g có cấu
trúc do tính hiệu quả trong việc định tuyến các thông báo tìm kiếm, khả năng mơ rộng và
đám bâo tính khảng lỗi.
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) để 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[5], giải thuật Pastry[6]) hay không gian n-chiều (giãi thuật

CAN[7Ị). Mỗi node trong mạng phụ trách một phần cùa không gian khóa và liên kết vói
nhau theo vị trí trên không gian khóa. Các thông báo trên mạng ngang hàng có céu trúc có
địa chi là một khóa k và sẽ được định tuyến đến node phụ trách khóa k này dựa trê i các liên
kết trong không gian khóa của các node.
Ví dụ với giao thức Chord, các node được phân bồ vào một không gian khóa kiểu mạch
vòng, trong đó mồi node duy trì các liên kết đến các node ở cách nó những khoảng :ách nhất
định trong không gian khóa. Các liên kết này tạo nên báng dịnh tuyến (gọi là Bảng finger) ở
mỗi node. M ột thông báo trong mạng Chord sẽ được định tuyến dựa vào bàng finger tại mỗi
node mà thông báo đi qua. Hình 3 biểu diễn cách thức định tuyến thông báo cùa ỉiao thức
Chord.
L o o k u p { 5 4 )
tin geitiD lt
V p«
I / Chord Ring
tlngertab ỉe
1 - •

? !
0*
p, * 4

p „ ♦ 8
p
p„ * 1«
p.
P r ♦ * : P r
ftn g trta b le
H ình 2. Đ ịnh tuyển trong m ạng C hord
10
Giài thuật DHT cho phép xâv dựng một mạng ngang hàng với khả năng m ờ rộng cao, hiệu

qua trong việc định tuyến các gói tin thônu báo và có dộ kháng lỗi tốt. Ví dụ với giao thức
Chord, so lượng liên kết với các node khác mà mỗi node phải duy trì là O(logN) và chi phí
đe định tuyến một thông báo là O(logN) hops với N là số node tham gia mạng .
Trong m ạng ngang hàng có cấu trúc, một node phân bồ một nội dung thông tin (ví dụ như
mộ: file hoặc m ột ánh xạ Éỉiữa tên file và địa chỉ máy tính có chứa file) vào mạng bàng cách
tạo khóa k là giá trị băm của m ột đặc trưng của nội dung thông tin (gọi là tên nội dung). Nội
dur.g thông tin sau đó sẽ được phân bố đến node phụ trách khóa k thông qua việc định tuyến
theo giải thuật DHT.
Tìm kiếm thông tin trong m ạng ngang hàng có cẩu trúc được thực hiện bàng cách tạo khóa
tìm kiếm k từ tên nội dung và định tuyến thông báo truy vấn đến node phụ trách khóa k.
Node phụ trách khóa k sẽ trả về kết quà tìm kiếm nếu có.
So với cách thức tim kiếm thông tin trong mạng ngang hàng không có cấu trúc, việc tìm
kiếm thông tin trong m ạng ngang hàng có cấu trúc được thực hiện với chi phí ít hom rất
nhiiu do số thông báo tối đa cần gửi chỉ là O(logN) thông báo . Ngoài ra nếu thông tin có
tôn tại trên mạng thì xác suất tìm thấy thông tin sẽ rất cao.
T uy nhiên, giải thuật DHT chỉ hỗ trợ tim kiếm khóa 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 khi rất nhiều ứng dụng [8,9,10] đòi hôi việc tìm
k iến nâng cao như tìm kiếm theo khoảng [] 1,12], tìm kiếm theo các giá tri thuộc tính [13
1 6 Ị, tìm kiếm gần đúng [12], Đ ã cỏ nhiều nghiên cứu về tìm kiếm thông tin trên mạng
ag ing hàng có cấu trúc nhàm tìm giải pháp nâng cao khả năng tìm kiếm đồng thời đảm bào
tinh hiệu quà cũng như khả năng mờ rộng cùa hệ thổng.
INS/Twine[13] đư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 m iền dịch vụ là một cây thuộc tính/giá trị phân tầng. Mỗi tên m iền dịch
V ụdirợ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. Mặc dù
I'NS/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
lciế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
r;a, 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ụ
tĩrá:h các gia trị-thuộc tính phổ biến sè phải chịu tải về lưu giữ dữ liệu và truy vấn lớn.
G ũ i pháp CDS[14] cũng sử dụng các cặp thuộc tính/giá trị để định danh nội dung 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 giá

tĩrị-thuộc tinh 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
k.h)a đó. N hư vậy, khi truy vấn nội dung, CDS chi sử dụng m ột cặp giá trị-nội dung để tạo
k;h)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
tirậi Cân bàng Tải (Load Balancing Matrix - LBM) để giải quyết vấn đề cân bằng tải. Tuy
rnhên già) pháp CD S tạo nhiều dư thừa trong việc quản lý LBM cũng như dư thừa trong lưu
g ii dữ liệu và truy vấn.
11
Giải pháp Data ỉndexing[15Ị tạo các khóa phân bồ từ các nhánh từ node ngọn tới node gố'c
của cây mô tả dữ liệu và lưu giữ ánh xạ giữa các khóa phân bổ này tại các node phụ tmclh
các khóa phân bổ của mạng ngang hàng có cẩu trúc. Giải pháp này cho phép lưu giữ Lhõriíe
tin với số lượng bản sao nhò, tuy nhiên chí phí tìm kiếm thôns tin sẽ rất lớn do phái thự'c
hiện nhiều truy vấn từ node ngọn tới node gốc.
Trong nghiên cứu [16], các tác già đề xuất giải pháp lựa chọn các khóa phàn bồ sao cho số
lượng nội dung phân bồ ứng với mỗi khóa phân bồ nằm trong một giới hạn nhất định. Đ<ề
xuất này mặc dù hạn chế được số lượng khỏa phân bổ cũng như số lượng nội dung thông tin
gán cho mỗi khóa nhưng không cho hiệu quã cao trong tìm kiếm thông tin do việc tim kiếm
thông tin sẽ phải thực hiện qua nhiều bước.
3. Thiết kế hệ thống tìm kiếm thông tin sử dụng công nghệ mạng ngang hàng
3.1 Mục tiêu thiết kế
Hiện nay các máy tìm kiếm thông tin trang W eb như Google, B in g , đã có Ihể đáp ứng tốt
các yêu cầu tìm kiếm trang Web theo từ khóa. Tuy nhiên, với các yêu cầu tìm kiếm nâng cao
trong phạm vi hẹp, cách thức biểu diễn dữ liệu đa dạng, tốc độ cập nhật thông till nhanh và
có các yêu cầu về bào mật thì các máy tìm kiếm thông tin trang Web sẽ không đáp ứng được.
E)ề tài này sẽ xây dựng thừ nghiệm một công cụ tìm kiếm thông tin sử dụng công nghệ mạng
ngang hàng cho các đơn vị, doanh nghiệp có thông tin lưu trữ phân tán ở nhiều nơi. Công cụ
này sẽ được cài đặt trên các máy tính chứa thông till phàn tán. Các máy tính sau khi được cài
đặt công cụ sỗ trờ thành một node trong m ạng ngang hàng và cung cấp dịch vụ index cho
việc tim kiếm thông tin. Để tim kiếm thông tin. thông háo chửa câu truy vấn thông tin Sc
được gửi vào m ạng ngang hàng và sau khi truy vấn, mạng ngang hàng sẽ trả về Ihông tin
được tìm kiếm thông qua dịch vụ index.

Một ví dụ cho việc triển khai công cụ này là Bộ công an với cơ sở dữ liệu phân tán về thòng
tin của các phương tiện giao thông. Với giả thiết việc quàn lý các phương tiện giao thông sè
do công an các quận, huyện thực hiện, mồi một quận huyện sẽ có một máy chù lưu trữ thông
tin về các phương tiện giao thông trên địa bàn quàn lý. Các thông tin sẽ có các thuộc tính vù
giả trị về kiểu xe, phiên bàn. nhà sàn xuất, ngày sàn xuất, màu sắc. biển kiềm soát, chủ S(y
hữu, Công cụ tìm kiếm cài đặt trên các m áy chù lưu trừ thône tin sẽ giúp cho công an
trên toàn quốc cỏ thể tra cứu thông tin phương tiện theo các thuộc tính giá trị một cách
nhanh chóng và chính xác, với các thông tin được cập nhật thường xuyên.
Một ví dụ khác là thông tin về sách. báo. tạp chí trong các thư viện trên toàn quốc. Giả thiết,
mồi thư viện có một máv chù quàn lý thôim tin về sách. báo. tạp chí trong thư viện cùa minh.
Các thòng tin này bao gồm tên sách, nhà xuất bàn. tác già, thể loại sách. Công cụ tìm
kiếm cài dặt trên các máy chù lưu trừ thông tin sỗ giúp cho các cán bộ tlnr viện hoặc người
đọc tìm kiếm thông tin về các sách có trong các thư viện khác để cỏ thế mượn, dọc từ xa.
Như vậy, công cụ tìm kiếm sẽ phải thỏa mãn các yêu cầu:
- 1'hông tin dược mô tả theo thuộc tính giá trị
- Tin kiếm thông tin theo thuộc tính giá trị một cách hiệu quả
- Co k h á năng kháng lồi khi node rời m ạng
- Cíp nhật và tìm kiếm thông tin một cách nhanh chóng
- G ao diện tiện lợi, dề dùng, dễ m ờ rộng các chức năng
- Co k h ả năng vượt tường lửa, có chức năng xác thực người dùng
- D: d àng tích hợp vào các hệ thống lưu trữ dữ liệu đâ có sẵn
Do h ờ i gian và kinh phí thực hiện, đề tài chi xây dựng phần mềm để thực hiện ba yêu cầu
đáu tiên. Các yêu cầu khác sẽ được bổ xung vào phần mềm trong các đề tài nghiên cứu tiếp
thct h<oặc khi phát triển phần mềm trên thực tế.
Mặc khác, trong các mạng ngang hàng có cấu trúc các node liên kết với nhau dựa trên định
đani của node theo thuật toán bàng bãm phân tán mà không phụ thuộc vào topology ở tầng
mạrg. Tuy nhiên, khi triển khai m ạng ngang hàng có cấu trúc trên thực tế, việc tối ưu hóa
topdo’gy cho phù họp với topology ở tầng m ạng là quan trọng. Nó giúp cho việc cải thiện
thờigiian trễ khi định tuyến các thông báo và giúp giảm thời gian tìm kiếm. Trong đề tài này,
chủig tôi cũng đưa ra giải pháp tổi ưu hóa topology m ạng khi một node gia nhập m ạng đề

giàiquyết vấn đề này.
3.2Ỷ tưởng của thuật toán tìm kiếm thông tin
Troig hệ thống tìm kiếm cùa chủng tôi, các máy tính chứa dữ liệu sẽ trở thành các node
than g ia vào một mạng ngang hàng với cấu trúc không gian khóa ào. Mỗi node sẽ phụ trách
mộiplhần không gian khóa ào và tạo các liên kết với nhau theo giải thuật Bảng băm phân tán
(D I T ). Thông báo sẽ được định tuyến theo khóa đến node phụ trách khỏa dựa trên giải thuật
DHT.
Troig giải pháp cùa chúng tôi, mỗi nội dung thông tin sẽ được định danh bởi một tên nội
dun> ichứa các cặp thuộc tính/giá trị mô tả nội dung thông tin. Việc sử dụng các cặp thuộc
tínHg:iá trị đám bảo cho khả năng biểu diễn nội dung thông tin được chính xác và dễ dàng
thôig qua khả năng biểu diễn ngữ nghĩa cùa các giá trị thuộc tính trong tên nội dung. Ví dụ
nhi tên nội dung thông tin về m ột cuốn sách có thể được biểu diễn như dưới đây
(têỉ Siách=”A ”, tác giả=”B”,nhà xuất bản=”C \ năm phát h à n h - ’D”, giá = “E”, phân loại =
“F ’l
troig đó các thuộc tính đã được định nghĩa trước.
Tru' v ấn thông tin sẽ dựa trên các cặp thuộc tính/giá trị trong đó câu truy vấn sẽ chứa một
tậpcáic cặp thuộc tính/giá trị cần truy vấn. Kết quả tìm kiếm trả về sẽ là các nội dung thông
tin 'ớ*i tên nội dung có chứa các cặp thuộc tính/giá trị cần truy vẩn. Ví dụ như truy vấn sau:
(tátg:ià=’'B ’\nh à xuất bàn=”C ’)
sỗ trm kiếm nội dung thông tin về sách cùa tác giá B được xuất bản bời nhà xuất bản c , hay
tru; vấn:
13
(nhà xuất bản=”C”,phân loại = "F”)
sẽ tìm kiếm nội dung thông tin về sách thuộc phân loại F cúa nhà xuất bàn c .
Nội dung thông tin sẽ bao gồm các thông tin chi tiết liên quan đến thông tin. N ếu thỏniỉ tim
là file dừ liệu thì nội dung thông tin có thể là đường link đến nơi lưu giữ file dừ liệu đó.
v ề cơ bản. khi có một thông tin được chia sè, thông tin đó sẽ được phân bồ đến một so node
trong m ạna ngang hàng. Để làm được điều đỏ. mỗi cặp thuộc tinh/giá trị trong tên nội dun«
sẽ được ánh xạ vào một khóa bằng cách áp dụng một hàm băm nhất quán như SHA. Nội
dung thông tin sẽ được phân bổ đến các node phụ trách các khóa tương ứng với các cặp AV

trong tên nội dung. Như vậy, một node phụ trách khóa k ứng với một cặp AV nào đó sẽ lưu
trữ tất cả các nội dung thông tin có tên nội dung chứa cặp AV đó. Khi tìm kiếm thông tin
chứa một số cặp AV cần tìm , câu truy vấn sẽ được định tuyến đến một trong các node phụ
trách khóa ứng với một trong các cặp AV cần tim. Node này sỗ tim kiếm trong cơ sờ dừ liệu
của nó và trả về các nội dung thông tin có chứa các cặp AV cần tìm kiếm.
Tuy nhiên m ột vấn đề lớn ở đây là có các cặp AV phồ biến, xuất hiện trong các tên nội dung
khác nhau. Khi đó, các node phụ trách khóa tương ứng với các cặp AV này sẽ phải chịu tài
lớn. Ví dụ như với dừ liệu về các phương tiên giao thông, node phụ trách khóa tương ứng
với cặp AV (màu = “đò") sẽ phái liru toàn bộ các nội dung thông tin về xe m áy có màu đỏ.
Vì vậy, cần có giải pháp tránh tình trạng quá tải cho các node phụ trách các khóa phổ biến.
Giải pháp của chúng tôi là, mỗi node chỉ lưu một số lượng nhất định các nội đung thông tin
tương ứng với một khóa phân bổ bàng việc sử dụng hai hay nhiều hơn cặp AV có trong tên
nội đung để tạo khóa phân bồ. Khóa phân bổ tạo ra từ hai hay nhiều hơn hai cặp AV sẽ được
sừ dụng khi số lượng nội dung thông tin ứng với khóa tạo ra từ 1 cặp AV vượt qua một giá
trị ngưỡng nhất định (gọi là khóa phổ biến và cặp AV phổ biển). Một khóa được gọi là khóa
có bậc n nếu nó được tạo ra từ n cặp AV.
Ngoài ra, khi một khóa có bậc n với n > 2 được sử dụng làm khóa phân bổ thì ánh xạ giữa
khóa phân bồ này với các khóa có bậc 2 tương ứng sẽ được lưu tại node phụ trách khỏa bậc
2. Điều đó đảm bảo các thông báo truy vấn thông tin sẽ được gửi đến tất cả các node có khá
năng chứa thông tin cần tìm một cách nhanh chóng.
Giải pháp này có các ưu điểm:
- Với các cặp AV không phổ biến, do số lượng nội dung thông tin gán vào mỗi cặp AV đó
không lớn nên chúng sẽ được lưu tại một node và truy vấn đến các cặp AV không phổ biển
này sẽ chì cần thực hiện trên một node với mồi truy vấn. Điều này đàm báo cho tính hiệu
quả trong việc tìm kiếm.
- Với các cặp AV phổ biến, mặc dù số lượng nội dung thông tin có tên nội dung chứa mồi
cặp AV đó là lớn nhưng chúng sẽ được lưu tại nhiều node, sổ lượng nội dung thông tin càng
lớn thỉ số node lưu giữ thông tin càng lớn. Điều này đám báo cho tính cân bằng tải của hộ
14
thổig. Ngoài ra, việc sừ dụng ánh xạ giữa các khóa bậc 2 và các khóa bậc cao sỗ giúp thông

bao tìm kiếm dược gừi đến các node chứa thông tin cần tìm kiếm một cách nhanh chóng.
- Vệc sứ dụng giao thức DHT trong việc phần bồ và tìm kiếm thông tin đảm bảo khả năng
mở 'ông (scalability) của hệ thống, tính hiệu quả (efficiency) trong định tuyến gói tin và khả
nảrụ chống chịu lỗi (fault tolerent) cho hệ thống mà chúng tôi đề xuất.
Các mục tiếp theo sẽ trình bày chi tiết cách thức ánh xạ khóa và phân bồ nội dung cũng như
cáci thức tìm kiếm thông tin trong hệ thống của chúng tôi.
3.21 Ánh xạ tên nội dung-khóa và Phân bổ nội dung
Để iàm báo tính cân bằng tải giữa các node và tính hiệu quả và chính xác trong tim kiếm
thôig tin, chúng tôi đề xuất giải thuật ánh xạ tên nội dung-khóa và phân bổ nội dung sao cho
• Số lượng nội dung thông tin lưu tại một node ứng với mồi khóa phân bổ nhỏ hơn một số
lịnh trước.
• Vlồi node sẽ lưu giữ thông tin về ánh xạ giữa các khóa phân bồ để đàm bảo cho việc tìm
ũếm được nhanh chóng và chính xác.
Để đàm bảo các yêu cầu trên, giải thuật ánh xạ tên m iền-khóa và phân bổ nội dung cùa
chúig tôi được thực hiện theo các bước như sau.
Bai đầu, tên nội dung thông tin được ánh xạ thành các khóa bậc 1, sử dụng hàm băm nhất
quái như SHA-1, MD5 trên các cặp AV trong tên nội dung thông tin. Việc sử dụng hàm
băn nhất quán như SHA-1, M D5 sẽ đàm bào các khóa được phân bố đều trong toàn m iền
khcng gian khóa.
Tiế) theo, node phân bố nội dung sẽ gừi thông báo tới các node phụ trách các khóa bậc ỉ
dựí trên giao thức DHT để kiểm tra xem mỗi khóa bậc 1 này có phải là khóa phổ biến hay •
khớig. Với một khóa bậc 1 không phài là khóa phồ biến, node phân bổ sẽ gửi nội dung
thôig tin đến node phụ trách khóa đó. Với các khóa bậc 1 là khóa phổ biến, node phân bổ sẽ
tạo ra các khóa có bậc lớn hơn 1 và gửi nội dung thông tin đến node phụ trách các khóa cỏ
bậtcao và không phải là khóa phổ biến.
V iệ xác định các khóa phân bổ có bậc cao được thực hiện như sau. Giả sử khóa bậc (m-1)
là Ihóa phổ biến được tạo ra từ (m -1) cặp AV phổ biến.
- Brớc 1. Node phân bổ sẽ tạo các khóa có bậc m lừ (m-1) cặp AV phổ biến tương ứng với
kh<a bậc (m -1) và một cặp A V phổ biến trong tên nội dung.
- Brớc 2. Node phân bổ sẽ gửi thông báo đến các node phụ trách các khóa bậc m xem các

kh«a này là các khóa phổ biến hay không. Các khóa là không phổ biến sẽ trở thành khóa
phai bồ cùa nội dung thông tin. Với các khóa bậc m là khóa phổ biến, nếu sổ cặp AV phồ
biếi trong tên nội dung lớn hơn m thì Bước 1 lại được lặp lại với các khóa này.
Trmg giài pháp của chủng tôi, các cặp AV không phổ biến không được sừ dụng dể tạo khóa
phai bổ bậc cao. Đó là bời vì nếu trong câu truy vấn có cặp AV không phổ biến thì thông
15
báo truy vấn sẽ được gừi đến node phụ trách khóa tương ứng với cặp AV này mà không cần
sử dụng đến khóa bậc cao tạo ra từ nhiều cặp AV.
Khi truy vấn thông tin với các cặp AV phổ biến, các node truy vấn sẽ phải tìm các khóa
phân bổ bậc cao được tạo ra từ nhiều cặp AV phố biến để gửi thông báo truy vẩn. ĐC' có thô
tìm các khóa phân bổ bậc cao một cách nhanh chóng, khi phân bồ thông tin. node phân bồ sẽ
gứi yêu cầu lưu thông tin về ánh xạ giữa khóa phân bổ bậc m và các khóa bậc 2 tạo thành từ
2 trong m cặp AV tương ứng tới các node phụ trách các khóa bậc 2.
Hình 1 m ô tả m ột ví dụ về một nội dung thông tin có tên nội dung chứa 4 cặp AV phổ biến
(ai,Vi),(a2,V2 ),(a3 ,V3 ), (a4 ,V4 ) và 1 cặp AV không phổ biến (as.vs). Trong các khóa bậc 2 đưực
tạo ra, ki4 , k23 , k2 4 , k34 là các khóa không phổ biến và ki2 , ki3 là các khóa phổ biến. Trong
các khóa bậc 3 được tạo ra từ k )2 và k i3 , ki24 và ki34 là các khóa không phổ biến và khóa ki2.í
là khóa phổ biến. Cuối cùng, khóa bậc 4 k 1234 tạo ra từ khóa k 123 là khóa không phô biến.
Như vậy, nội dung thông tin được phân bổ cho các node phụ trách các khóa ks, k |4, k.2Ị, ki4,
ỈÍ3 4, ki2 4, k234 and k |234 . Ánh xạ giữa khóa k i2 và k |2 4, ki2 và k i234 được lưu tại node phụ trách
khóa ki2 - Ánh xạ giữa khóa k |3 và k)3 4, ki3 và k i234 được lưu tại node phụ trách khóa ki3-
k,
H<ai,v0
k2
H(a2,v2)
k3
H(a3,v3)
k4
H(a4,v4)
r '. "

1 ' s. +
í * »
• * * ' s N +*
\vr-V-
/ — — ^
/

**

ki2
H(a,,V|,
a2,v2)
k,3 ■
H(a,,v,,
33,v3)
: k,4 -
aì,ỴÌ)
H(aí,Vi,
' a3,v3).
1
" ó '
f
" /
k5
u/o .
k24 ^34
H(a2,v2,
H(a3,v3,
r ị
B4,v4)

H ình 3. K h óa phân b ổ và án h xạ giữ a khóa phân hồ và khóa bậc 2
3.2.2 Truy vấn thông tin
Hệ thống của chúng tôi sè tìm kiếm các nội dung thông tin có tên nội dung chửa các cặp AV
trong câu truy vẩn bằng cách tạo ra các khóa truy vấn và gùi thông báo truy vấn đến các
node phụ trách các khóa này.
Đe làm được điều đó, node truy vấn sẽ tạo ra các khóa từ các cặp AV trong câu truy vấn sử
dụng cùng m ột hàm băm nhất quán như khi phân bổ thông tin. Sau đó, node truy vấn sẽ gửi
16
thôig báo đến các node phụ trách các khóa đề xác định khóa nào là khóa phổ biến. Trong
trưcng hợp tồn tại khóa không phổ biến, một thông báo truy vấn sẽ được gửi trực tiếp đến
note phụ trách khóa không phổ biến đó và node này sẽ tìm kiếm trong dữ liệu nội dung
thôig tin và trả về các nội dung thông tin có tên nội dung chứa các cặp AV truy vấn.
Troig trường hợp lất cà các khóa là khóa phổ biến, node truy vấn sẽ chọn một trong các cặp
A V phổ biến trong câu truy vấn và gửi thông báo truy vấn đến node phụ trách khỏa đó đề
nhậi các nội dung thôrm tin cần tìm kiếm từ node này. Node truy vấn cũng tạo ra khóa cấp 2
bảrụ cách kết hợp cặp AV vừa chọn và một cặp AV phổ biến khác và gứi thông báo truy
v ấ rđến node phụ trách khóa cấp 2 này.
The query node
Node responsible
for the kev KI
1 ị
Create K,=H(AiVi)
: 1
Return RIs which
A query nam e Q ;

H
II
Ị '
resource name

Q-{A,VJ, i=l m j *
check if each key is
Query Kj ‘
matches Q
Node :
overlo aded or not
* - w * -
responsible
Return RIs which
resource name
matches Q
Query L2K
Node responsible
for the key L2K
Return RIs which
resource name
matches Q
Node responsible
fo r each o f UK (i>2)
Return RIs which
resource name
matches Q
Q uery keys UK
(i>2)
Look up keys LiK
which maps to
L2K and match Q
H ìn h 4. S ơ đồ tru y vấn th ô n g tin
M cie phụ trách khóa cấp 2 sẽ gừi trả về các nội dung thông tin càn tìm, đồng thời kiểm tra
X(en khóa cấp 2 có phải là khóa phổ biến hay không. Nếu đó là khóa phổ biến, điều đó có

mglìa là một phần thông tin cần tìm kiếm có thể sẽ nằm ở các node phụ trách khóa cấp cao
htưi. Khi đó, node phụ trách khóa cấp 2 sẽ tìm kiếm các khóa có cấp lớn hom 2 (tạo ra từ
nihều hơn 2 cặp AV) ánh xạ từ khóa cấp 2, đồng thời tương ứng với các cặp AV có chứa
trroig câu truy vấn. Tiếp theo, các thông báo truy vấn sẽ được gửi đến các node phụ trách các
kchia cấp cao này để tìm kiếm các nội dung thông tin còn thiếu.
3 3 Vấn đề tối ưu hóa topology
M aig ngang hàng có cấu trúc sừ dụng giải thuật bàng băm phân tán (DHT - D istributed
H ỉsh Table) tạo nên một m ạng phù trên mạng liên kết vật lý. Giài thuật này định nghĩa liên
kíế giữa các node m ạng trong m ạng phủ theo m ột cấu trúc cụ thể, đồng thời xác định chặt
17
_/Ai H Ọ C Q U Ố C G iA HÀ N Ô I
TQUNG ĨẦM TH ÒNG TIN THỰ VIÊN
000600000ẮS
chỗ mồi node m ạng sẽ chịu trách nhiệm đối với m ột phần dừ liệu chia sè trong mạng. Mồii
node đều được kết nối với một tập các node khác gọi là tập node láng giềng.
Chord là một giao thức của mạng ngang hàng có cấu trúc với khòng gian địa chi m ột chiều
dạng vòng. Mạng ngang hàng cấu trúc Chord ngày càng thể hiện nhiều ưu điểm như khả
năng mở rộng, cân bàng tải, định tuyến, Giống như những giao thức trên mạng có cấu trúc
khác, mỗi node trong Chord xây dựng một bảng định tuyến giúp cho việc tìm kiếm thông tin
giàm từ 0 (N ) với N là số lượng tối đa node trong m ạng, xuốrm còn 0(1oíỉ2N). Ngoài ra.
giao thức Chord có nhiều ưu điểm như hiệu quà trong định luyến, có khả năng chong lồi tốt
khi có node rời mạng [22].
Tuy nhiên, trong mạng ngang hàng có cấu trúc nói chung và Chord nói riêng, quan hệ hàng
xóm của các node được thiết lập mà không xem xét đến topo (topology) tầng dưới. Dó chính
là nguyên nhân gây ra sự sai khác giữa topo của mạng DHT và topo mạng liên kết vật lý
(topology mismatch). Đ iều này làm cho thời gian trễ khi truyền thông báo giữa các node và
chi phí truyền thông trong mạng P2P tăng. Yêu cầu đặt ra là làm sao để tối ưu m ạng phù.
khẳc phục sự khác biệt đó.
Đề tài cùa chúng tôi đã đề xuất một phương pháp mới đê giài quyết vấn đề nêu trên. D ựa
trên cấu trúc và định tuyến của Chord truyền thống, các node tham gia vào mạng sẽ lựa chọn

vị trí theo tiêu chí mà lại đó, node được chọn có thời gian trễ tới các node liền trước và liền
sau là nhỏ nhất. Ngoài ra, các enlry trong bảng định tuyến cùa node sẽ được lựa chọn từ m ột
tập node là lân cận của node được chọn theo giao thức Chord truyền thống. Việc lựa chọn
này cũng dựa trên tiêu chí thời gian trề nhỏ nhất, nhàm tiết kiệm chi phí đường đi cùa các
thông báo.
Giải pháp sẽ được chia thành hai giai đoạn. Đầu tiền, thực hiện lựa chọn vị trí gia nhập
mạng cho node mới từ một tập các định danh, tiêu chí lựa chọn là thời gian trễ thấp nhất dếti
các node hàng xóm. Thứ hai, sau quá trình vào ra (chum) cùa một số node, bảng định tuyến
của node bị lỗi thời và cần được cập nhật lại, tiếp tục lựa chọn node đích trong lập chứa
successor cùa khóa mục tiêu tại liên kết i và các lân cận của successor đó. Thời gian trễ tír
node đang xét tới các node trong tập lựa chọn nhỏ nhất là tiêu chí lựa chọn. Chi tiết hai giai
đoạn tối ưu như sau:
Lựa chọn vị trí tham gia mạng
Khi node muốn tham gia vào mạng, thay vi cung cấp một dịnh danh duy nhất, chúng ta sè
cho phép một node chọn một trong một tập định danh. Tập định danh này được sinh từ ham
băm với đầu vào là thông tin node và tham số ngẫu nhiên do ứng dụng sinh ra. Với mỗi giá
trị địa chì, tìm successor và predeccessor cho địa chi đó. Thực hiện đo thời gian trề từ node
đang xét đến hai node này, lấy giá trị thời gian nhò nhất đại diện cho địa chỉ đó được gọi là
thời gian trễ đến hàng xóm. Định danh được chọn sẽ có khoảng thời gian trề đến hàng xóm
là nhỏ nhất.
18
• Thay đổi bảng định tuyến
Sau khí cho phép node tham gia vào mạng, việc tiếp theo là xây dựng bảng định tuyến cho
node đó, dồng thời cập nhật bàng định tuyến cho các node khác. Neu trong giao thức Chord
truyền thống, một node trong bàng định tuyến được xác định là node successor cùa định
danh (k + 2 i-l) mod 2m thì trong giải pháp của chúnií tôi, node trong bàng định tuyến được
chọn là m ột trong các node lân cận cùa node successor cùa định danh (k + 2 i-l) mod 2m và
là node có thời gian trễ đến node mới tham gia mạng là nhỏ nhất. Việc lựa chọn này sẽ làm
gảảm độ trễ trong việc chuyển tiếp một truy vấn, thông báo.
Ư u điểm của giải pháp của chúng tôi là đơn giàn, dễ thực hiện và mềm dèo. Giải pháp này

klhông cẩn đến thông tin toàn cục cùa hệ thống mà chi dựa trên độ trễ giữa các node m à vẫn
in ang lại hiệu quà khá tốt, thể hiện trong các kết quả đánh giá bàng mô phòng.
■ Cài tiến
■Truyền th ố n g
2000
4 0 0 0 6 0 0 0 8 0 0 0 10000
H ình 5: B iể u đồ thời gian trễ tru n g bình thay đổi th eo số lượ ng node
3i.4 Thiết kế chương trình phần mềm
31.4.1. Cấu trúc chương trình
C h ú n g tôi xây dựng khung chương trình với mục tiêu đam bào tính hiệu quả, kháng lồi và
rmềm dẻo cho các m ở rộng sau này của chương trình, Vì vậy, chúng tôi xây dựng chương
trrình với 3 module: DataStore, M essageHandler và Node (Hình 4). Ba modole này làm việc
v<ới ĩihau thông qua interface được định nghĩa m ột cách rỏ ràng. Điều đó sẽ giúp cho việc
tỉhay đỏi các m odule được thực hiện một cách dễ dàng mà không ảnh hưởng nhiều đến các
rmodultí khác.
19
CLIENT APPLICATION
i f
H ìn h 6. C ẩu trúc khung chương trình
Các chức năng của các module được định nghĩa như sau:
• DataStore:
DataStore
-store : string
-maps : string
+lmportValue(): void
+GetValue(): string
+RemoveValue(): void
+lmportMap(): void
+GetMap(): string
+RemoveMap(): void

H ình 7. M odule D ataStore
Module này có nhiệm vụ lưu trữ, tìm kiếm và phân loại dừ liệu. Nó giao tiếp với rr.ộtí cơ sở
dữ liệu và có các chức năng nhập khóa/tên dữ liệu-dữ liệu, lấy dữ liệu theo khóa/tèn dãr liệu,
xóa dữ liệu, nhập ánh xạ giữa khóa bậc 2 - khóa bậc cao hơn 2, xóa ánh xạ giữa khoa- khóa
(Hình 5).
• Module MessageHandler
Module M essageH andler đóng vai trò quản lý việc gửi và nhận gói tin giữa các m oiuile của
các node trong mạng ngang hàng. Khi một module muốn gửi thône báo cho m ột module cùa
một node khác, nó sẽ gừi yêu cầu có chứa địa chỉ IP, cồng và dừ liệu cần gửi cho nnodule
M essageHandler. Module M essageHandler sẽ có nhiệm vụ gửi gỏi tin một cách tin ttin cậy
20
đèn node đích. Khi m odule M essage! ỉandler nhận được thông báo gửi đến, nó sẽ kiểm tra và
xác định module nhận là gì. Sau đó. nó sẽ chuyển thông báo này cho m odule nhận.
Chúng tôi lựa chọn giao thức UDP đề đàm bào không phái tạo nhiều kết nổi giữa các node.
Tuy nhiên, trong các phiên bản tiếp theo cùa chương trình, chúng tôi sẽ nghiên cứu để thực
thi việc truyền tin giữa các node bằng giao thức TCP.
Đề đàm bào việc truyền tin tin cậy, chủng tôi sừ dụng kỹ thuật tính check sum kết hợp với
gừi lại gói tin trong trường hợp gói tin bị mất, không nhận được (Hình 6). Khi m odule
M essageUandler nhận được gói tin từ các module khác yêu cầu gừi gói tin, nó sẽ tạo ra
header riêng có chứa trường số thứ tự gói tin (message ID) và trường checksum. Khi module
M essageH andler của bôn nhận nhận được gói tin, nó sỗ kiểm tra checksum và số thứ tự cùa
gói tin. Nếu đúng bên nhận sẽ gửi trả lại gói tin ACK. Nếu sai. bên nhận sẽ gừi trà lại gói tin
NACK. N ếu m odule M essageHandler của bên gửi nhận duợc gói tin N A CK hoặc hết thời
gian timeout, module này sè gửi lại gói tin trong trường hợp số lần gừi lại chưa vượt quá giá
trị ngưỡng nhất định.
Các chức năng cùa module M essageHanđler được thực thi bởi một luồng riêng. Khi có các
thông báo nhận được từ các node khác hay có kết quả gừi thông báo cho các node khác, các
thông tin này sẽ được gừi cho các m odule khác dưới dạng sự kiện. Điều đó giúp cho các
chức nàng khác cùa chương trình được hoạt động bình thường mà không cần phải chờ việc
gửi nhận thông báo kết thúc.

21
RECEIVE SENDING REQUEST
(ct
Ì)
CALCULATE CHECKSUM
GENERATE MESSAGE ID
fO
' SEND DATA h
$
RECEIVE REPLY
(*
ACK * 4 CO RRECT CHECKSUM ? )
______________
/NU MBER OF RETRIES
V EXCEEDED ?
')
YES
■'r e c e i v e d a t a ')
/ PASS MESSAGE \
I TO UPPER L A YER /
DERATE ACK )
/ GENERATE >
COMPARE CHECKSUM )
NO
J - — S
( g e n e r a t e n a k )
REPLY ' )
VES

{ CLEAR TEMP INFO )

V

.

/
A
CALL FAIL-HANDLE DELEGATE
i y
H inh 8. Q uá trìn h gửi và nhận thôn g báo của m odule M essag el lan d ler
• Module Node
Là module quan trọng nhất, thực thi giao thức Chord để liên kết các node tạo thành mạng
ngang hàng có cấu trúc và thực thi giao thức tìm kiếm mà chúng tôi đề xuất.
Các chức năng thực thi giao thức Chord mà module này thực hiện bao gồm:
• Khời tạo m ộl m ạng mới
• Gia nhập m ột mạng đã có sẵn bằng cách sử dụng địa chi IP và cổng cho Irước đề liên lạc
với một node trong mạng
• Khởi tạo và duy trì bảng định tuyến sau khi gia nhập mạng hoặc sau m ột chu kỳ thời
gian nhất định
• Kiểm tra sự tồn tại của node liền kề đề phát hiện node rời mạng một cách hat thtrorne và
cập nhật danh sách các node liền kề
• Rời mạng đang tham gia một cách chủ động
Các chức năng thực thi giao thức tìm kiếm bao gồm:
22
• Tạo khóa phân bổ từ các cặp AV trong tên nội dung và phân phối nội dung thông tin
theo các khóa phân bô
• Tìm kiếm thông tin bàng các truy vấn chứa các cặp AV
Đ ịrh danh của các node được khởi tạo bàng cách áp dụng hàm băm nhất quán SHA vào cặp
địa chi ( IP, cổng) của chương trình. Muốn tham gia vào một mạng Chord cho trước, node
th a n gia sẽ liên lạc với một bootstrap node và yêu cầu gửi lại định danh cùa node liền kề với
địm danh của nó (succesor node). Bootstrap node sẽ lấy được thông tin định danh này dựa

trêr các bảng định tuyến đã được thiết lập theo giao thức Chord tại các node đã có trên mạng.
Node tham gia vào mạng sẽ gửi yêu cầu gia nhập mạng tới succesor node của nó. Succesor
noce này sẽ cập nhật thông tin của node mới gia nhập như là một node liền kề của nó.
H ình 9. C ác bước gia nhập m ột m ạng đã có của m ộ t node m ới
Sìai khi một node gia nhập mạng, nó sỗ cập nhậí thông tin về bảng định tuyến của nó. Sau
đló nó sẽ cập nhật lại bảng định tuyến theo chu kỳ nhất định. Việc cập nhật bảng định tuyến
dlưrc thực hiện đơn giản bằng cách các node sẽ tìm các node có định danh liền kề với các
điịih danh cách định danh của mồi node một khoảng 2k (k = 1 n: độ dài bit của định
dlaih) và cập nhật thông tin của các node này vào bảng định tuyến (Hình 8).
23
NQPE
INTERMEDIATE NODES
{SELECT AN ENTRY}
FIND ENTRY ID SUCCESSOR
{UPDATE THE ENTRY SUCCESSOR INFO}
H ình 10. C ập n hật bản g định tuyến
Phân bồ và tim kiếm thông tin được module Node thực hiện theo thuật toán tìm kiếm mà
chúng tôi đã đề xuất. Khi cỏ nội dung thông tin cần phân phối cho các node khác, m odule
Node sẽ tạo các thông báo và gừi cho module M essageH andler để yêu cầu chuyển cho node
đích. Tại node nhận được thông báo, căn cứ vào kiểu thông báo và nội dung thông báo mà
module Node sẽ gìri các yêu cầu truy vẩn hoặc yêu cầu lưu trữ dừ liệu đến module
DataStore.
3.4.2 Thiết kế giao thức
Trong chương trình của chúng tôi, mỗi node chì mở một cồng UDP để lắng nghe các thông
bảo gừi đến từ các node khác. Do có nhiều kiểu thông báo được gửi giữa các node nên các
thòng báo sẽ cỏ định dạng chung là
<Type> value </T vpe> <Data> value </D ata>
với các tag sẽ mô tả ý nghĩa của dừ liệu bên trong. Việc dùng các tag sẽ làm tăng khá năng
mờ rộng của bộ giao thức.
Để đảm bảo thực thi các chức năng như trong yêu cầu thiết kế, chúng tôi đâ thiết kế nhiều

kiểu thông báo khác nhau như sau:
• Các thông báo liên quan đến giao thức Chord
- requestJoinSuccessor: Tìm thông tin cùa sucessor node của định danh của node mới
- replyJoinSucccssor: Trà lời về thông tin của sucessor node của định danh
24
- requestStablizeNodePredecessor: Tìm thông tin cùa node liền kề trước (Predecessor
node), sử dụng trong quá trình ồn dịnh mạng
- replyStablizeNodePredecessor: Trả lời về thông tin cùa node liền kề trước (Predecessor
node)
- requestNotify: yêu cầu làm node liền kề trước
- requestFingerSuccessor: Tìm thông tin của node trong báng định tuyến
- replyFingerSuccessor: Trả lời về thông tin của node trong bàng định tuyến
- recỊuestKeyMoving: Yêu cầu chuyển các khóa sang node mới gia nhập mạng
- repIyK-eyMoving: Trả lời yêu cầu chuyển các khóa sang node mới gia nhập mạng
- requestKeySuccessor: Yêu cầu tìm successor node của một khóa
- replyK eySuccessor: Trả lời yêu cầu tìm successor node của một khóa
- requestN otiíySuccessorLeave: Yêu cầu successor node cập nhật thông tin của node đó
- replyNotifyPredecessor: Trà lời yêu cầu successor node cập nhật thông tin của node đó
- requestCheckPredecessor: Yêu cầu predecessor node trà lời để kiểm tra sự tồn tại của
predecessor node
- replyCheckPredecessor: Trả lời yêu cầu predecessor node trả lời để kiểm tra sự tồn tại
của predecessor node
• Các thông báo phân bổ và tìm kiếm dữ liệu
- requestCheckK ey Property: Kiểm tra xem khóa có bị quá tải hay không
- replyCheckKevProperty: Trả lời yêu cầu kiểm tra khóa có bị quá tải hay không
- requestlnsertContent: Yêu cầu lưu nội dung thông tin
- replylnsertC ontent: Trả lời yêu cầu lưu nội dung thông tin
- requestlnsertM ap: Yêu cầu lưu ánh xạ khóa khốa
- repỉylnsertM ap: Trà lời yêu cầu lưu ánh xạ khóa khóa
3.5. Triển khai và đánh giá

C hư ơ ng trình đã được xây dựng trên ngôn ngữ c # , với công cụ lập trình Visual Studio.
C á c chức năng đã thực hiện được bao gồm:
- Khởi tạo/gia nhập m ạng ngang hàng Chord, cập nhất bảng định tuyến
- Duy trì m ạng ngang hàng Chord: tự động phát hiện node rời mạng, cập nhật bảng định
tuyến
- Phân bổ nội dung thông tin theo thuộc tính giá trị trong tên nội dung, đúng với thuật
toán tìm kiếm đã đề ra
- Tìm kiếm thông tin theo thuộc tính giá trị, đúng với thuật toán tim kiếm đã đề ra
Hiệ thống tìm kiếm thông tin được thực thi bởi chương trình này đã được kiểm nghiệm trên 8
ntode, 16 node thực, cho kết quà tốt.
D ư ớ i dây là một số giao diện cùa chương trình. Nhìn chung, các giao diện này còn đơn giàn,
c:hưa tiện lợi với người dùng và chưa tích hợp với các kiểu giao diện truyền thống như giao
25

×