Tải bản đầy đủ (.doc) (40 trang)

PHÁT TRIỂN ỨNG DỤNG CHIA SẺ FILE NGANG HÀNG

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 (1.38 MB, 40 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Dương Khánh Chương

PHÁT TRIỂN ỨNG DỤNG CHIA SẺ FILE
NGANG HÀNG

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin

Hà Nội - 2006


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Dương Khánh Chương

PHÁT TRIỂN ỨNG DỤNG CHIA SẺ FILE
NGANG HÀNG

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: T.S Nguyễn Đại Thọ

HÀ NỘI - 2006


Tóm tắt
Các hệ thống chia sẻ file ngang hàng đang có những bước phát triển mạnh mẽ trong


những năm gần đây. Trong kiến trúc client/server, tất cả các tài nguyên đều tập trung
vào một chỗ, các điểm nút chỉ truy nhập vào đó chứ hầu như không bao giờ giao tiếp
với nhau. Ngược lại, các điểm nút tham gia vào mạng ngang hàng đều có thể chứa tài
nguyên và khi phát hiện ra nhau là trao đổi trực tiếp với nhau không thông qua server.
Các hệ thống ngang hàng hiện nay được tổ chức theo một trong hai mô hình : thuần
túy hoặc lai ghép. Mô hình ngang hàng thuần túy giải quyết vấn đề tìm kiếm tài
nguyên dựa vào một mạng lưới các điểm nút đầu mối. Trong khi đó, mô hình ngang
hàng lai ghép lưu địa chỉ nguồn cung cấp tài nguyên trên các server chỉ mục. Nội
dung khóa luận phát triển, xây dựng thử nghiệm một số hệ thống chia sẻ file ngang
hàng theo phương thức sử dụng nhiều server chỉ mục. Các server được tổ chức liên
kết với nhau theo chuỗi hay bằng cách sao lặp toàn bộ. Trong hệ thống liên kết chuỗi,
mỗi server chỉ lưu lại chỉ mục của các điểm nút do nó quản lý. Trong hệ thống sao lặp
toàn bộ, các server lưu lại chỉ mục của tất cả các điểm nút, bất kể điểm nút đó thuộc
chức năng quản lý của server nào. Ứng dụng được phát triển bằng công nghệ .NET.
Hiệu năng của hai mô hình sẽ được so sánh đánh giá thông qua lý thuyết và thực
nghiệm.


Mục lục
Chương 1. Giới thiệu..................................................................................................1
Chương 2. Các mô hình mạng chia sẻ file ngang hàng............................................4
Chương 3. Xây dựng hệ thống...................................................................................8
Chương 4. Minh họa hệ thống.................................................................................16
Chương 5. Thử nghiệm và đánh giá........................................................................25
Chương 6. Kết luận và hướng phát triển................................................................35
Tài liệu tham khảo....................................................................................................36


Chương 1. Giới thiệu
1.1


Bối cảnh chung
Bạn hãy tưởng tượng về một hệ thống lưu trữ thông tin lý tưởng dành cho toàn
cầu. Hệ thống có thể nhanh chóng xác định và gửi đi một tệp tin (có thể dung lượng rất
lớn) trong số hàng triệu tệp tin tới bất cứ đâu trên thế giới. Để đảm bảo được tính năng
này, hệ thống có thể có khả năng tự cài đặt cấu hình, tự hồi phục sau sự cố chứ không
theo cơ chế “kiểm soát từ trung tâm” như các hệ thống lưu trữ hiện đang phổ dụng. Ngoài
ra, hệ thống còn phải bảo mật, hỗ trợ đồng thời hàng triệu người sử dụng, có khả năng
“miễn dịch” trước các cuộc tấn công- cả tấn công vật lý và tấn công thông qua các phần
mềm, đoạn mã nguy hại.
Đương nhiên, các nhà quản trị luôn “mơ” về một hệ thống như vậy, đặc biệt là khi
mạng Internet ngày càng trở thành một nhân tố quan trọng quyết định thành công trong
kinh doanh. Trên thực thế, hệ thống lý tưởng ấy thực chất đã và đang tồn tại dưới dạng
các mạng chia sẻ ngang hàng (ví dụ eDonkey, KaZaA).
Nhìn từ góc độ kỹ thuật, “peer-to-peer” hay mạng ngang hàng chỉ khả năng
tương tác trực tiếp giữa hai máy tính cùng cài đặt một phần mềm ứng dụng mà không
phải thông qua các máy tính trung gian. Mô hình kết nối có thể khiến nhiều người liên
tưởng tới mạng Internet, tuy nhiên mạng ngang hàng mang các đặc thù riêng.
Ngược dòng thời gian, ban đầu mạng Internet được thiết kế theo mô hình phi tập
trung. Tuy nhiên càng ngày Internet càng biến đối theo hướng “một trục- nhiều que”
(hub-and-spoke). Các máy tính cá nhân trong mạng lưới kết nối với server ở trung tâm để
tiến hành các tác vụ như gửi/nhận email, duyệt web v.v… Mạng từng bao gồm nhiều máy
tính ngang hàng, vừa sản xuất vừa tiêu thụ nội dung, nay không khác gì những chiếc tivi
đón chờ tín hiệu từ trạm thu phát.
Mạng ngang hàng kết nối trực tiếp các máy tính với nhau, và ngay sau khi kết
nối, các máy tính cá nhân có thể thực thi những tác vụ mà chúng không thể thực hiện
được khi đứng một mình. Hầu hết các hệ thống mạng ngang hàng cho phép người sử
dụng chia sẻ tài nguyên, bao gồm cả khả năng xử lý, khả năng lưu trữ và băng thông.
Trong trường hợp chia sẻ tệp tin âm nhạc, người sử dụng thực tế đã chia sẻ hệ thống các
tệp tin mà qua đó, mọi đối tượng tham gia mạng đều có thể tải về các tệp tin âm nhạc mà


1


mình yêu thích. Theo thống kê của CacheLogic (công ty dịch vụ P2P có trụ sở tại Anh),
hơn 50% giao thông mạng xuất phát từ các ứng dụng chia sẻ ngang hàng.
“P2P là bước tiến hoá hoàn toàn tự nhiên và hoàn hảo của mạng Internet. Thực
tế, P2P đã mang Internet trở lại nguyên bản- theo đúng ý tưởng của những người đầu
tiên sáng lập ra Internet”, Ian Clarke- sáng lập viên mạng FreeNet khẳng định.
Hiện nay mạng ngang hàng đang ngày càng phát triển và những tài nguyên mới
nhất thường được chia sẻ đầu tiên tại các mạng ngang hàng. Một ví dụ nhỏ, phần lớn các
công ty kinh doanh trò chơi trực tuyến hiện nay khi cung cấp trò chơi đến khách hàng bên
cạnh đường dẫn download trực tiếp từ server của công ty đều cung cấp khả năng cho phép
khách hàng download từ mạng ngang hàng nhằm tránh sự tắc nghẽn tại server.
1.2

Mục đích của khóa luận

Mục đích khóa luận này là xây dựng một số hệ thống chia sẻ file ngang hàng dựa
trên nhiều server chỉ mục. Phần xây dựng tại server và chương trình tại điểm nút được
xây dựng trên nền .Net của Microsoft, các thành phần giao tiếp với nhau qua các
webservice. Sau khi xây dựng thành công hệ thống, chúng tôi đề xuất một số công thức lý
thuyết nhằm so sánh hiệu năng của các mô hình. Tiếp theo chúng tôi xây dựng và chạy
chương trình thử nghiệm để đánh giá kết quả thực hiện trên thực tế rồi so sánh và đánh
giá các kết quả lý thuyết đã trình bày trước đó.
Tài liệu [5] cung cấp một bức tranh toàn cảnh về những nền tảng công nghệ và
các lĩnh vực ứng dụng của kiến trúc mạng ngang hàng. Bài báo [6] đi sâu khảo sát các kết
quả nghiên cứu và triển khai trong lĩnh vực chia sẻ file ngang hàng. Các hệ thống chia sẻ
file ngang hàng sử dụng server chỉ mục được phân tích đánh giá chi tiết trong [1]. Báo
cáo [4] thảo luận các phương pháp tạo chỉ mục tìm kiếm trong một bối cảnh rộng hơn,

bao gồm cả những hệ thống ngang hàng hoàn toàn phi tập trung, không dựa trên server
tạo chỉ mục tập trung.
1.3

Bố cục khóa luận
Phần tiếp theo của khóa luận được tổ chức như sau:

Chương 2 giới thiệu các mô hình chia sẻ mạng ngang hàng và giới thiệu Napstermột phần mềm chia sẻ mạng ngang hàng tiêu biểu.
Chương 3 trình bày nguồn gốc ý tưởng và cấu trúc các hệ thống chia sẻ ngang

2


hàng sử dụng nhiều server chỉ mục, bao gồm phần xây dựng server và xây dựng chương
trình tại điểm nút.
Chương 4 minh họa 2 mô hình tổ chức sử dụng nhiều server chỉ mục đã xây
dựng ở trên.
Chương 5 trình bày phương pháp đánh giá về mặt lý thuyết và chương trình thử
nghiệm thực tế.
Cuối cùng là kết luận và phương hướng phát triển tiếp theo.

3


Chương 2. Các mô hình mạng chia sẻ file ngang hàng
2.1

Mô hình mạng ngang hàng thuần túy
Mô hình mạng ngang hàng thuần túy hoàn toàn không phụ thuộc vào server. Một
ứng dụng mạng ngang hàng thuần túy có khả năng tự động tìm các nút khác một cách linh

hoạt, ko cần sự giúp đỡ của server. Việc liên lạc giữa các nút bao gồm download và
upload các file, các hoạt động trực tuyến, gửi yêu cầu – đáp trả yêu cầu,… Tính năng này
của mô hình mạng ngang hàng phá vỡ các phương thức truyền thống trong mô hình
client/server. Mạng ngang hàng thuần túy cho phép người dùng thiết lập những quy tắc
cho chính họ, thiết lập môi trường mạng cho chính họ.
Mạng ngang hàng thuần túy cung cấp các tính năng “nối và chạy” khi làm việc
với internet, bạn chỉ cần kết nối với internet là có thể sử dụng các tiện ích mạng ngang
hàng. Một lợi thế khác của thuần mạng ngang hàng là mô hình không chỉ hoạt động hiệu
quả trên internet mà còn hoạt động hiệu quả trên mạng cục bộ Lan, intranet. Tuy nhiên,
vấn đề khó khăn nhất với mô hình mạng ngang hàng thuần túy là việc tìm các nút trong
mạng. Do không có bất kỳ trung tâm quản trị quản lý các nút khi các nút đăng nhập,
người dùng buộc phải tự mình xác định các nút khác.

Hình 1. Mô hình mạng ngang hàng thuần túy

4


2.2

Mô hình lai ghép
Trong mô hình mạng ngang hàng lai ghép, một hay nhiều server được bổ sung.
Tuy nhiên server chỉ đóng vai trò giúp các nút tìm kiếm nhau được dễ dàng, giải quyết
khó khăn mô hình thuần túy gặp phải. Mỗi khi một nút đăng nhập/thoát khỏi hệ thống, nút
đó sẽ kết nối với máy chủ và đăng ký, server sẽ lưu lại chỉ mục về nút đó. Khi một nút
cần tìm các dịch vụ/tài nguyên tại các nút khác, người dùng sẽ hỏi server, server dựa trên
chỉ mục đã lưu để trả về địa chỉ các nút thỏa mãn yêu cầu. Sau đó, các nút sẽ kết nối với
nhau và lúc này máy chủ sẽ không đóng bất kỳ vai trò nào, việc cung cấp/sử dụng tài
nguyên/dịch vụ hoàn toàn giữa các nút với nhau.


Hình 2. Mô hình mạng ngang hàng lai ghép
Trong mô hình chia sẻ mạng ngang hàng lai ghép, nhằm tăng tối đa số người
dùng, người ta thường sử dụng nhiều server chỉ mục. Tùy theo vai trò cũng như sự liên
kết giữa các serve, người ta chia thành nhiều kiến trúc, trong báo cáo này, chúng tôi tập
trung nghiên cứu về 2 kiến trúc sau:

Kiến trúc liên kết chuỗi: Các server liên kết với nhau thành chuỗi để trả lời
các truy vấn của điểm nút. Khi một điểm nút đăng nhập, chỉ có một server cập nhật chỉ

5


mục thông tin về nút đó. Khi 1 điểm nút yêu cầu tìm kiếm tài nguyên, nếu máy chủ cục bộ
không tìm thấy số lượng tài nguyên đáp ứng đủ yêu cầu, nó sẽ chuyển yêu cầu đó đến các
server khác trong chuỗi. Các server khác sẽ tìm kiếm trong chỉ mục của chính nó và trả lại
kết quả cho server đầu tiên. Việc tìm kiếm được chuyển đi giữa các server cho đến khi
nào kết quả thỏa mãn yêu cầu (về số lượng kết quả) hoặc các server đều đã tham gia tìm
kiếm. Trong mô hình này, việc đăng nhập thực hiện nhanh do chỉ diễn ra ở trên một
server nhưng việc tìm kiếm tốn nhiều thời gian do các server trong chuỗi đều thực hiện.
Khi xác suất tìm thấy tài liệu tại các server là thấp, thời gian tìm kiếm trung bình tăng lên
do việc tìm kiếm phải thực hiện ở nhiều server.

Kiến trúc sao lặp chỉ mục toàn bộ: Trong kiến trúc này, mỗi khi một điểm
nút thuộc một server đăng nhập, thông tin chỉ mục của nó sẽ được cập nhật tại server đó,
đồng thời server này sẽ chuyển thông tin chỉ mục tới toàn bộ các server khác để tất cả các
server đều cập nhật thông tin về điểm nút. Vì vậy mỗi khi 1 điểm nút đăng nhập, tất cả
các server đều câp nhật chỉ mục và tốn nhiều thời gian, chi phí. Bù lại, khi 1 điểm nút yêu
cầu tìm kiếm tài nguyên, thời gian tìm kiếm sẽ nhanh do chỉ phải thực hiện tại 1 server (vì
tất cả các server đều có đầy đủ thông tin, không cần thiết phải hỏi lẫn nhau). Thời gian
tìm kiếm không phụ thuộc vào xác suất có tìm thấy tài liệu hay không. Mô hình này hiệu

quả khi thông tin chỉ mục ít, khối lượng lưu trữ không lớn
2.3

Phần mềm chia sẻ file ngang hàng tiêu biểu – Napster
Napster [7] được Shawn Fanning (19 tuổi) viết ra vào năm 1999. Mô hình
Napster tập trung vào việc chia sẻ các file nhạc MP3. Khi bạn cần tìm kiếm 1 bài hát, bạn
mở ứng dụng Napster, ứng dụng đăng nhập vào server trung tâm qua internet. Server lưu
giữ chỉ mục của tất cả các người dùng khác, lưu trữ cấu trúc thư mục chứa các file MP3
của người dùng. Các thông tin này được tự động cập nhật lại mỗi khi người dùng đăng
nhập vào hệ thống. Khi bạn gửi yêu cầu tìm kiếm, server của Napster sẽ tìm kiếm trong
chỉ mục của các người dùng đang online và liệt kê các người dùng có chứa bài hát bạn
yêu cầu. Sau đó bạn có thể chọn bất kỳ kết quả nào trong danh sách và liên kết trực tiếp
tới người dùng đó, kể từ đây máy chủ không còn vai trò nữa, việc download file là giữa 2
người dùng. Chính vì vậy không có bất kỳ một file nhạc nào được lưu trực tiếp trên máy
phục vụ. Napster không bán, không lưu trữ, không chuyển các file nhạc, máy phục vụ
Napster chỉ giúp bạn tìm file nhạc trong máy của người khác và giúp bạn kết nối với điểm
nút khác.

6


Napster chính là một ví dụ điển hình của hệ thống chia sẻ file lai ghép sử dụng
server chỉ mục. Napster sử dụng nhiều server chỉ mục để tăng hiệu quả nhưng mỗi server
chỉ quản lý những điểm nút của mình và các server không “giao tiếp” với nhau. Chính vì
vậy 2 người dùng thuộc 2 server khác nhau sẽ không kết nối được với nhau.

7


Chương 3. Xây dựng hệ thống

3.1

Nguồn gốc ý tưởng
Ý tưởng thực hiện hệ thống chia sẻ file ngang hàng với nhiều server chỉ mục
được chúng tôi bắt đầu từ việc nghiên cứu cuốn sách [3]. Cuốn sách đề cập đến việc xây
dựng một hệ thống chia sẻ file ngang hàng lai ghép có sử dụng 1 server chỉ mục
Cấu trúc chương trình gồm có:

Server: Được viết bằng ngôn ngữ ASP, cung cấp các dịch vụ: Login, logout,
liệt kê các điểm nút, tìm kiếm tài nguyên trên các điểm nút. Các điểm nút truy vấn máy
chủ qua yêu cầu HTTP (vd:localhost/listuser.asp), server thực thi và trả về dưới dạng
XML.


Điểm nút: gồm 2 thành phần riêng biệt

 Trình duyệt (Browser): Cho phép người dùng login và logout, cho phép
điểm nút khai báo với server các file nó muốn chia sẻ. Nó cũng đảm nhiệm công việc gửi
file đến trình đón nhận của các điểm nút khác..

Hình 3. Kiến trúc hệ thống chia sẻ file ngang hàng lai ghép với 1 server

8


 Trình đón nhận (Listener): chức năng yêu cầu server tìm kiếm địa điểm lưu
các file cần tải về. Sau khi nhận được danh sách các điểm nút chứa file yêu cầu, người
dùng có thể chọn một điểm nút bất kỳ trong danh sách. Trình đón nhận sẽ kết nối với
trình duyệt của điểm nút tương ứng để tải file về.
Việc mở rộng cải tiến chương trình nhắc tới ở trên để hỗ trợ nhiều server là không

khả thi do hạn chế của ngôn ngữ ASP (các server viết bằng ngôn ngữ ASP được ví như
các ốc đảo, không thể giao tiếp được với nhau). Ngoài ra phần chương trình điểm nút
được tách làm 2 phần dẫn đến khó sử dụng và dễ gây hiểu nhầm. Vì vậy, chúng tôi xây
dựng lại hoàn toàn hệ thống chia sẻ file ngang hàng với nhiều server chỉ mục trên nền
công nghệ .NET. Các điểm nút truy vấn server và các server giao tiếp với nhau thông qua
các Webservice. Webservice có khả năng hỗ trợ rất tốt tương tác giữa các máy tính kết
nối với Internet mặc dù các máy tính đó có thể chạy trên những môi trường phần cứng và
phần mềm khác nhau, ở những địa điểm cách biệt nhau. Nhờ sử dụng giao thức HTTP,
Webservice có thể hoạt động thông suốt, vượt qua cả rào cản tường lửa các cơ quan, xí
nghiệp thường dựng lên để bảo vệ mạng cục bộ khỏi sự xâm nhập từ bên ngoài và kẽ hở
từ bên trong.
3.2

Hệ thống chia sẻ ngang hàng lai ghép sử dụng nhiều server chỉ mục

Mục đích: Xây dựng hệ thống chia sẻ file ngang hàng lai ghép sử dụng nhiều
server chỉ mục theo 2 mô hình: Mô hình sao lặp chỉ mục toàn bộ và mô hình liên kết
chuỗi. Phần xây dựng hệ thống tại server được chúng tôi xây dựng hoàn toàn trên asp.net
có tham khảo cách phân tích thiết kế của [3]. Phần xây dựng chương trình tại điểm nút
được chúng tôi xây dựng bằng VB.net, trong đó phần kết nối và lấy tài liệu giữa các điểm
nút được tham khảo từ [2].
Như đã phân tích ở trên, điểm khác nhau cơ bản của hai mô hình là ở phần server:
quá trình cập nhật chỉ mục và quá trình tìm kiếm. Do đó chương trình của cả 2 hệ thống
đều có thành phần chung như sau


Cơ sở dữ liệu: Gồm 2 bảng

Bảng cơ sở dữ liệu “peer” lưu trữ các thông tin về điểm nút: ip của điểm nút, tên
đăng nhập của điểm nút, tình trạng và thời gian đăng nhập của điểm nút


9


Bảng cơ sở dữ liệu “share” lưu trữ các tài nguyên điểm nút chia sẻ: ip của điểm
nút và tên file điểm nút đó chia sẻ.

Như vậy server chỉ lưu các chỉ mục, thông tin về điểm nút, hoàn toàn không lưu
trữ các file chia sẻ.


Đặc tả các webservice server cung cấp
− Webservice Login : Tham số là địa chỉ IP và tên người dùng đăng nhập.
Server trả về kết quả cho biết việc đăng nhập thành công hay không.
Public Function Login(ByVal ip_address As String,
ByVal user_name As String) As Boolean
− Webservice Logout : Tham số là địa chỉ IP của điểm nút muốn đăng
thoát. Server trả về kết quả cho biết việc đăng thoát có thành công hay
không.
Public Function Logout(ByVal ip_address As String)
As Boolean
− Webservice Share : Tham số là địa chỉ IP và danh sách các file điểm nút
muốn chia sẻ. Server trả về kết quả cho biết việc chia sẻ thành công hay
không.

10


Public Function Share(ByVal ip_address As String,
ByVal file_list As Dataset) As Boolean

− Webservice Find : Tham số là từ khóa cần tìm. Server trả về một Dataset
chứa địa chỉ IP và tên người dùng của các điểm nút có chia sẻ file liên quan
tới từ khóa.
Public Function
DataSet

Find(ByVal

key

As

String)

As

Phần xử lý trên server của các webservice phụ thuộc vào các server hoạt động theo
mô hình liên kết chuỗi hay sao lặp toàn bộ. Tuy nhiên kết quả cuối cùng trả về là giống
nhau trong cả hai trường hợp. Các điểm nút không phân biệt được các server vận hành
theo cơ chế nào.


Chương trình tại điểm nút:

Hình 4. Chương trình chia sẻ file ngang hàng tại điểm nút

11


Đối với điểm nút, việc hệ thống xây dựng theo mô hình liên kết chuỗi hay mô

hình sao lặp toàn bộ đều hoàn toàn không hề ảnh hưởng, chương trình điểm nút là như
nhau trong cả 2 trường hợp. Chương trình điểm nút cho phép người dùng chọn server
mình kết nối, thực hiện log in, log out, tìm kiếm và lấy tài nguyên từ điểm nút khác. Việc
kết nối giữa các điểm nút được xây dựng dựa trên thư viện bsfilesdk được đề cập tại [2].
Để sử dụng chương trình, người dùng gõ tên đăng nhập, chọn server và ấn nút
Login (có thể thêm bớt danh sách server bằng cách ấn nút Thay đổi danh sách server).
Sau khi kết nối với server, chương trình tự động gửi lên server danh sách các file điểm nút
đó chia sẻ (là các file có trong thư mục của chương trình). Để tìm kiếm tài nguyên điểm
nút khác, người dùng gõ từ khóa và ấn nút Tìm kiếm. Chương trình yêu cầu server tìm
theo từ khóa và kết quả trả về sẽ được gửi dưới dạng dataset danh sách các điểm nút thỏa
mãn. Khi người dùng chọn một điểm nút trong danh sách các điểm nút thỏa mãn, bảng
bên dưới sẽ hiện ra các file điểm nút đó chia sẻ, người dùng chỉ cần chọn file thích hợp và
ấn nút download để tải file về.
Chương trình tại điểm nút được xây dựng như sau:
• Khi nguời dùng ấn nút Login để đăng nhập, chương trình gọi webservice Login
(do server cũng cấp) với các tham số là tên người dùng và IP của điểm nút.
Private Sub btnConnect_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnConnect.Click
ok = ws.Login(FileSrv.LocalIP, txtUsername.Text)
If ok Then
MessageBox.Show("Đăng nhập thành công",
"Thông tin")
btnConnect.Enabled = False
btnDisconnect.Enabled = True
Else
MessageBox.Show("Đăng nhập thất bại",
"Thông tin")
End If

12



• Sau khi quá trình đăng nhập thành công, chương trình gọi webservice share với
tham số là IP của điểm nút và danh sách các file có trong thư mục chia sẻ.
files = Directory.GetFiles(b)
ws.Share(FileSrv.LocalIP, files)
• Tiếp theo chương trình tại điểm nút thực hiện mở cổng, lắng nghe yêu cầu lấy file
từ điểm nút khác, khởi động vai trò như là server trong việc cung cấp dịch vụ với
điểm nút khác.
FileSrv.Start
• Khi người dùng yêu cầu tìm kiếm, chương trình gọi webservice Find tại server và
nhận được kết quả dưới dạng dataset. Sau khi có kết quả, chương trình tách dữ liệu
từ dataset nhận được và hiển thị danh sách các kết quả.
Private Sub btnSearch_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnSearch.Click
Dim dsUser As New DataSet
dsUser = ws.Find(txtSearch.Text)
lstResult.Items.Clear()
If dsUser.Tables(0).Rows.Count = 0 Then
MessageBox.Show("Không tìm thấy tài liệu
thỏa mãn", "Thông tin")
Else
MessageBox.Show("Tìm kiếm thành công",
"Thông tin")
For i = 1 To dsUser.Tables(0).Rows.Count
lstResult.Items.Add(dsUser.Tables(0).Rows(i).Item(0) & "(" &
dsUser.Tables(0).Rows(i).Item(1) & ")")
Next
End Sub
• Khi người dùng chọn một điểm nút trong danh sách kết quả, chương trình sẽ kết nối

tới điểm nút đó và lấy danh sách các file điểm nút đấy chia sẻ để hiển thị.
Private Sub FileSrv_OnNeedListFolder(ByVal sender As Object,
ByVal e As _

13


AxbsFileServerSDK.IBSFileSrvXEvents_OnNeedListFolderEvent) _
Handles FileSrv.OnNeedListFolder
e.aOkay = True
e.aRoot = App_Path()
LogMsg("list folder " + PreSlash(e.aPath))
End Sub
• Sau khi nguời dùng chọn file mình muốn download từ phía điểm nút khác, chương
trình yêu cầu và nhận file điểm nút kia chia sẻ.
Private Sub FileSrv_OnNeedDownload(ByVal sender As Object,
ByVal e As _
AxbsFileServerSDK.IBSFileSrvXEvents_OnNeedDownloadEvent) _
Handles FileSrv.OnNeedDownload
e.aOkay = True
e.aRoot = App_Path()
LogMsg("start downloading " +
PreSlash(e.aPath))
End Sub
Private Sub FileSrv_OnDownloadDone(ByVal sender As
Object, ByVal e As _
AxbsFileServerSDK.IBSFileSrvXEvents_OnDownloadDoneEvent) _
Handles FileSrv.OnDownloadDone
LogMsg("finish downloading ")
End Sub

• Khi người dùng thoát khỏi hệ thống, chương trình tại điểm nút gọi webservice
logout với tham số là IP của mình, đồng thời kết thúc vai trò chia sẻ tới các điểm
nút khác.
Private Sub btnDisconnect_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnDisconnect.Click

14


ws.Logout(FileSrv.LocalIP)
btnConnect.Enabled = True
btnDisconnect.Enabled = False
FileSrv.Stop()
End Sub
Trên đây là một số chức năng chính của chương trình tại điểm nút. Chương trình được
xây dựng bằng VB.net, phần chương trình các điểm nút kết nối và chia sẻ file cho nhau
được tham khảo từ [2].

15


Chương 4. Minh họa hệ thống
4.1

Tổ chức các server chỉ mục theo mô hình liên kết chuỗi
Trong mô hình tổ chức này, webservice Login đơn giản chỉ lưu vào bảng peer

cục bộ địa chỉ IP, tên người dùng, thời điểm đăng nhập của điểm nút và trả về kết quả cho
biết việc đăng nhập có thành công hay không. Địa chỉ IP và tên người dùng server lấy từ

các tham số ip_address và user_name tương ứng trong lời gọi Login từ điểm nút.
Thời điểm đăng nhập là thời gian hiện tại trên server. Webservice Logout thực hiện
công việc ngược lại với Webservice Login. Nó xóa khỏi bảng peer cục bộ bản ghi
chứa địa chỉ IP trùng với tham số ip_address trong lời gọi tới nó. Webservice Share
cũng chỉ thực hiện công việc đơn giản là lưu vào bảng share cục bộ danh sách các file
do điểm nút thực hiện lời gọi gửi tới. Webservice Find được cài đặt tương đối phức tạp.
Sau khi tìm kiếm cục bộ, nếu kết quả không thỏa mãn yêu cầu về số lượng, server sẽ gọi
dịch vụ Find tại các server khác cho đến khi số lượng kết quả tìm được thỏa mãn hoặc
tất cả các server đều đã tham gia vào quá trình tìm kiếm.
Hình 5 minh họa một hệ thống chia sẻ file ngang hàng tổ chức các server chỉ mục
theo phương thức liên kết chuỗi. Hệ thống gồm có hai server chỉ mục S1 và S2. Server S1
quản lý điểm nút A. Server S2 quản lý điểm nút B. Hai điểm nút đã đăng nhập vào hệ
thống. Điểm nút B đăng ký với server S2 chia sẻ một file có tên là security.pdf.
Điểm nút A yêu cầu server S1 tìm kiếm file theo từ khóa security. Server S1 tìm kiếm
trong cơ sở dữ liệu cục bộ không có kết quả. Nó liền yêu cầu server B tìm kiếm tiếp.
Server S2 tìm thấy điểm nút B có chứa file security.pdf thỏa mãn tiêu chuẩn tìm
kiếm. Nó trả về server S1 tên người dùng và địa chỉ IP của điểm nút B để server S1
chuyển về cho điểm nút A. Sau khi nhận được những thông tin này, nếu thấy
security.pdf đúng là file cần tìm, điểm nút A kết nối trực tiếp với điểm nút B để tải
file về.

16


Username: Chuong
IP: 192.168.1.7

Nút
A


2. Find(“security”)

3. Tìm kiếm
Server S1
4. Không tìm thấy

9. (“Trung”, “192.168.1.8”)

10. Nút A yêu
cầu nhận file
“security.pdf”

8. (“Trung”,
“192.168.1.8”)

CSDL
Server S1

5. Find(“security”)

11. security.pdf

Nút
B

1. Share(192.168.1.8,
"security.pdf")

6. Tìm kiếm


7. Tìm thấy nút B

CSDL
Server S2

Server S2

Username: Trung
IP: 192.168.1.8

Hình 5. Minh họa mô hình tổ chưưc nhiều server liên kết chuỗi
Chi tiết các bước thực hiện:
1. Điểm nút B (username: trung) đăng nhập vào server S2. Việc đăng nhập bao
gồm 3 công việc: điểm nút đăng nhập vào server với username: trung, IP: 192.168.1.8;
điểm nút tiến hành chia sẻ file “security.pdf”; điểm nút mở cổng cho phép các nút khác
kết nối vào lấy tài nguyên.

17


2. Điểm nút A (username:chuong) đăng nhập vào server S1

Database của 2 server sau khi connect

18


Server S1: chứa thông tin về điểm nút A

Server S2: chứa thông tin về điểm nút B


3. Điểm nút A cần tìm kiếm, gọi webservice Find của server S1, server S1 thực
hiện tìm kiếm trong cơ sở dữ liệu cục bộ và thấy kết quả tìm kiếm = 0. Kết quả tìm kiếm
chưa thỏa mãn yêu cầu, do đó server S1 gọi webservice Find của các server khác mà nó
biết (trong trường hợp này là server S2). Server S2 thực hiện yêu cầu và trả về kết quả là
điểm nút B (username: trung, ip=192.168.1.8) có chứa tài liệu liên quan, server S1 gửi kết
quả này đến điểm nút A. Ngay sau đó điểm nút A connect trực tiếp tới điểm nút B và lấy
được danh sách các file điểm nút B chia sẻ, download file cần thiết về máy.

19


4.2

Tổ chức các server chỉ mục theo mô hình sao lặp toàn bộ
Trong mô hình tổ chức này, Webservice Login không chỉ cập nhật các thông tin

cần thiết vào cơ sở dữ liệu cục bộ mà còn gọi Webservice Login của các server khác để
tất cả các server đều cập nhật thông tin giống như nó. Các Webservice Logout và
Share thực hiện theo cùng nguyên tắc. Riêng Webservice Find lại đơn giản, chỉ thực
hiện tìm kiếm trên cơ sở dữ liệu cục bộ, không cần giao tiếp với các server khác.
Hình 6 minh họa một hệ thống chia sẻ file ngang hàng tổ chức các server chỉ mục
theo phương thức sao lặp toàn bộ. Hệ thống cũng bao gồm hai server chỉ mục và có hai
điểm nút đã đăng nhập vào hệ thống giống như ở hình 5. Sau khi hai điểm nút A và B
đăng nhập, cả hai server S1 và S2 đều lưu trữ thông tin về cả hai điểm nút. Khi điểm nút
B yêu cầu server S2 tìm kiếm theo từ khóa network, server S2 sẽ phát hiện ra ngay
điểm nút A có chia sẻ file network.doc thỏa mãn yêu cầu. Nó gửi về cho điểm nút B
thông tin về điểm nút A, hoàn toàn không truy vấn server S1.

20



Username: Chuong
IP: 192.168.1.7

Nút
A

1. Login(“Chuong”,”192.168.1.7”)
Share(“network.doc”)
2. Cập nhật A
Server S1

CSDL
Server
S1

3. Login(“Chuong”,”192.168.1.7”)
Share(“network.doc”)

9. Nút B yêu
cầu
“netword.doc”

10. network.doc

4. Cập nhật A

Nút
B


5. Find(“network”)
8. (“Chuong, “192.168.1.7”)

Server S2

6. Tìm kiếm
7. Tìm thấy A

CSDL
Server
S2

Username: Trung
IP: 192.168.1.8

Hình 6. Minh họa tổ chức nhiều server sao lặp toàn bộ chỉ mục

Chi tiết các bước thực hiện:
1. Điểm nút A (username: chuong) đăng nhập vào server S1

21


×