Mục lục
Chương 1. Giới thiệu 1
1.1 Bối cảnh chung 1
1.2 Mục đích của khóa luận 2
1.3 Bố cục khóa luận 2
Chương 2. Các mô hình mạng chia sẻ file ngang hàng 4
2.1 Mô hình mạng ngang hàng thuần túy 4
2.2 Mô hình lai ghép 5
2.3 Phần mềm chia sẻ file ngang hàng tiêu biểu – Napster 6
Chương 3. Xây dựng hệ thống 8
3.1 Nguồn gốc ý tưởng 8
3.2 Hệ thống chia sẻ ngang hàng lai ghép sử dụng nhiều server chỉ mục 9
Chương 4. Minh họa hệ thống 16
4.1 Tổ chức các server chỉ mục theo mô hình liên kết chuỗi 16
4.2 Tổ chức các server chỉ mục theo mô hình sao lặp toàn bộ 20
Chương 5. Thử nghiệm và đánh giá 25
4.1 Công thức tính 25
4.2 Phương pháp thử nghiệm 27
4.3 Đánh giá 30
Chương 6. Kết luận và hướng phát triển 35
Tài liệu tham khảo 36
40 trang |
Chia sẻ: lethao | Lượt xem: 2173 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khóa luận Phát triển ứng dụng chia sẻ file ngang hàng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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
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ỉ 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
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.
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.
Chương 3. Xây dựng hệ thống
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
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.
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
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.
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 Find(ByVal key As String) As DataSet
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
Đố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
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 _
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
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].
Chương 4. Minh họa hệ thống
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ề.
Username: Chuong
IP: 192.168.1.7
Nút A
CSDL
Server S1
3. Tìm kiếm
4. Không tìm thấy
2. Find(“security”)
9. (“Trung”, “192.168.1.8”)
Server S1
7. Tìm thấy nút B
CSDL Server S2
6. Tìm kiếm
Server S2
Nút B
Username: Trung
IP: 192.168.1.8
1. Share(192.168.1.8, "security.pdf")
8. (“Trung”, “192.168.1.8”)
5. Find(“security”)
10. Nút A yêu cầu nhận file “security.pdf”
11. security.pdf
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:
Đ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.
Điểm nút A (username:chuong) đăng nhập vào server S1
Database của 2 server sau khi connect
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
Đ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.
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.
CSDL Server S2
6. Tìm kiếm
4. Cập nhật A
7. Tìm thấy A
5. Find(“network”)
8. (“Chuong, “192.168.1.7”)
Nút B
Username: Trung
IP: 192.168.1.8
Server S2
Nút A
1. Login(“Chuong”,”192.168.1.7”)
Share(“network.doc”)
Username: Chuong
IP: 192.168.1.7
CSDL
Server S1
2. Cập nhật A
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
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:
Điểm nút A (username: chuong) đăng nhập vào server S1
Điểm nút B (username:trung) đăng nhập vào server S2
Database của 2 server sau khi connect
Server S1:
Server S2:
Như vậy mặc dù điểm nút A chỉ kết nối với server S1, server S2 vẫn lưu trữ các thông tin của điểm nút A. Cơ sở dữ liệu của cả 2 server là như nhau.
Điểm nút B yêu cầu tìm kiếm với từ khóa: network, server S2 có thể trả lại kết quả tìm kiếm là điểm nút A mà không cần gọi webservice của server S1. Sau khi nhận được kết quả, điểm nút B kết nối trực tiếp với điểm nút A và lấy tài liệu cần thiết về, server kết thúc vai trò.
Chương 5. Thử nghiệm và đánh giá
Một cách cảm tính ta có thể thấy mô hình tổ chức nhiều server liên kết chuỗi có thời gian đăng nhập nhanh, thời gian tìm kiếm lâu trong khi tổ chức nhiều server sao lặp toàn bộ chỉ mục đăng nhập chiếm nhiều thời gian nhưng tìm kiếm nhanh.. Để đánh giá hai mô hình đã xây dựng phía trên, chúng tôi đưa ra một số giả thiết và công thức dựa trên suy luận toán học, sau đó xây dựng chương trình thử nghiệm để đánh giá các công thức lý thuyết đã đưa ra.
5.1 Công thức tính
Để đưa ra công thức lý thuyết, chúng tôi đề xuất một số tham biến:
Tổng số file trong tập file ảo để các điểm nút chọn chia sẻ: n
Số lượng server chỉ mục: s
Số lượng file mỗi nút chia sẻ: k
Số điểm nút đăng nhập vào mỗi server chỉ mục: m
Độ trễ truyền thông trên mỗi liên kết: D
Giả sử thời gian xử lý cục bộ tại mỗi server là rất nhỏ, có thể bỏ qua. Ta có thể dễ dàng suy ra các công thức xấp xỉ sau
Đối với mô hình liên kết chuỗi
Thời gian đăng nhập trung bình (bao gồm cả chia sẻ) là 4D. Thật vậy, trong mô hình này, việc đăng nhập chỉ tiến hành tại 1 server gồm 2 bước: đăng nhập vào hệ thống và gửi danh sách các file điểm nút chia sẻ. Tại mỗi bước, thời gian truyền thông là 2D và tổng thời gian quá trình đăng nhập là 4D. (Do bỏ qua thời gian xử lý cục bộ)
Thời gian tìm kiếm trung bình là
nếu k rất nhỏ so với n
Thời gian tìm kiếm trung bình trong mô hình liên kết chuỗi phụ thuộc vào xác suất tìm thấy tài liệu tại mỗi server. Với số file mỗi nút chia sẻ là k, tổng số file trong tập file ảo là n, xác suất KHÔNG tìm thấy tài liệu tại một điểm nút là . Do có m điểm nút đăng nhập vào mỗi server chỉ mục, xác suất KHÔNG tìm thấy tài liệu tại một server là . Nếu việc tìm kiếm không thành công tại server đầu tiên, server đó sẽ phải gửi yêu cầu đến server thứ 2, nếu tài liệu vẫn chưa tìm thấy, yêu cầu sẽ được gửi cho đến khi nào có kết quả hoặc tìm kiếm đủ ở tất cả các server. Khi 1 server được yêu cầu tìm kiếm, thời gian tìm kiếm sẽ tăng thêm 2D là quãng thời gian truyền thông. Như vậy thời gian tìm kiếm trung bình là
Có thể dễ thấy nếu xác suất tìm thấy tài liệu tại mỗi server là 1, thời gian tìm kiếm đạt nhỏ nhất và bằng 2D (do chỉ phải tìm tại 1 server). Trong trường hợp xác suất tìm thấy tài liệu tại mỗi server là 0, thời gian tìm kiếm là lớn nhất và bằng 2Ds (do phải tìm kiếm tại tất cả server).
Như vậy đối với mô hình liên kết chuỗi, thời gian đăng nhập trung bình là hằng số, chỉ phụ thuộc vào độ trễ truyền thông. Tuy nhiên thời gian tìm kiếm phụ thuộc vào: số lượng server và xác suất tìm thấy tài liệu tại mỗi server. Khi càng nhiều điểm nút tham gia chia sẻ và chia sẻ nhiều tài liệu, thời gian tìm kiếm sẽ nhanh vì xác suất tìm thấy tài liệu ngay tại server đầu tiên là lớn. Điều này sẽ được thể hiện qua thử nghiệm thực tế.
Đối với mô hình sao lặp toàn bộ
Thời gian đăng nhập trung bình (bao gồm cả chia sẻ) là 4Ds. Như đã trình bày ở trên, thời gian đăng nhập trung bình (bao gồm cả thời gian chia sẻ) tại một server là 4D, do tất cả các server đều phải tham gia quá trình đăng nhập nên tổng thời gian đăng nhập là 4Ds.
Thời gian tìm kiếm trung bình là 2D. Trong mô hình này, các server đều lưu thông tin về tất cả các điểm nút, do đó việc tìm kiếm chỉ diễn ra tại một server và thời gian tìm kiếm chỉ là 2D. (Giả sử bỏ qua thời gian xử lý cục bộ)
Như vậy trong mô hình sao lặp toàn bộ, thời gian đăng nhập cũng như thời gian tìm kiếm chỉ phụ thuộc vào độ trễ truyền thông và số lượng server. Việc tìm kiếm diễn ra tại một server nên thời gian hoàn toàn không phụ thuộc vào xác suất tìm thấy tài liệu.
4.2 Phương pháp thử nghiệm
Để kiểm nghiệm hiệu quả của hai kiến trúc liên kết chuỗi và sao lặp toàn bộ, chúng tôi đã xây dựng một chương trình mô phỏng hoạt động chia sẻ file của một hệ thống gồm 2 server chỉ mục (s = 2) và nhiều điểm nút. Chương trình sẽ các gọi webservice nhiều lần tương ứng giả lập vai trò của nhiều điểm nút. Chúng tôi tạo một tập file ảo (chỉ có tên không có nội dung) gồm 500 file (n = 500). Mỗi điểm nút ảo chia sẻ 10 file (k = 10), lấy ngẫu nhiên trong số 500 file. Các điểm nút ảo không tồn tại thật, chỉ do chương trình mô phỏng theo tương tác với các server chỉ mục. Để đánh giá thời gian đăng nhập trung bình, chương trình thực hiện 100 lần đăng nhập và lấy tổng thời gian chia cho 100. Mỗi lần đăng nhập sẽ kèm theo với đăng ký chia sẻ 10 file. Để đánh giá thời gian tìm kiếm trung bình, trước tiên chương trình thực hiện đăng nhập cho tất cả các điểm nút ảo, mỗi điểm nút ảo chia sẻ 10 file chọn ngẫu nhiên như đã nói ở trên. Số lượng điểm nút ảo đăng nhập vào mỗi server được chọn thử nghiệm lần lượt là 10, 20, 30, 40, và 50 (m = 10, 20, 30, 40, 50). Sau đó chương trình sẽ gọi server thực hiện 100 yêu cầu tìm kiếm, đo tổng thời gian trả lời và chia cho 100. File yêu cầu tìm kiếm được chọn ngẫu nhiên trong tập 500 file đã cho. Độ trễ truyền thông trên các liên kết là 50 ms (D = 50 ms).
Như vậy có thể hiểu chương trình thử nghiệm được xây dưng như sau: Khi ấn nút thử nghiệm, chương trình sẽ yêu cầu các server xóa toàn bộ cơ sở dữ liệu cũ, sau đó lần lượt gửi các yêu cầu webservice để server cập nhật cơ sở dữ liệu thỏa mãn các tham số đã cho. Tiếp theo chương trình thực hiện 100 lần thử
Các file đính kèm theo tài liệu này:
- Phát triển ứng dụng chia sẻ File ngang hàng.doc