Giải pháp sử dụng P2P như công cụ truyền thông cho các ứng dụng clientserver Giải pháp sử dụng P2P như công cụ truyền thông cho các ứng dụng clientserver Giải pháp sử dụng P2P như công cụ truyền thông cho các ứng dụng clientserver luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LƯƠNG QUY THỌ GIẢI PHÁP SỬ DỤNG P2P NHƯ CÔNG CỤ TRUYỀN THÔNG CHO CÁC ỨNG DỤNG CLIENT-SERVER Chuyên ngành : Công nghệ thông tin LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS HÀ QUỐC TRUNG Hà Nội – 2013 LỜI CAM ĐOAN Tôi Lương Quy Thọ, học viên cao học lớp 11BCNTT khóa 2011B giáo viên hướng dẫn PGS.TS Hà Quốc Trung hướng dẫn Tôi xin cam đoan tồn nội dung trình bày luận văn “Giải pháp sử dụng P2P công cụ truyền thông cho ứng dụng Client-Server” kết tìm hiểu nghiên cứu riêng tơi hướng dẫn PGS.TS Hà Quốc Trung Các kết liệu nêu luận văn hoàn tồn trung thực rõ ràng Mọi thơng tin trích dẫn tuân theo luật sở hữu trí tuệ, liệt kê rõ ràng tài liệu tham khảo Tôi xin chịu hoàn toàn trách nhiệm với nội dung viết luận văn Hà nội, ngày 18 tháng 12 năm 2013 Học viên Lương Quy Thọ LỜI CẢM ƠN Tôi xin gửi lời cám ơn sâu sắc tới PGS.TS Hà Quốc Trung, người tận tình hướng dẫn để tơi hồn thành luận văn Tôi xin gửi lời cám ơn chân thành tới quý thầy cô viện Công nghệ thông tin truyền thông, viện Đào tạo sau đại học truyền dạy kiến thức q báu khố học Tơi xin gửi lời cám ơn tới ban tổ chức hội nghị khoa học ACM-SoICT 2013 cho hội hồn thiện nghiên cứu Cuối cùng, tơi xin gửi lời cám ơn tới gia đình, bạn bè, quan công tác giúp đỡ trình thực luận văn Hà nội, ngày 18 tháng 12 năm 2013 Học viên Lương Quy Thọ MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC HÌNH VẼ, ĐỒ THỊ CHƯƠNG I: TỔNG QUAN CHƯƠNG II: CƠ SỞ LÝ THUYẾT 10 2.1 Mơ hình Client-Server 10 2.2.1 Phân loại server 15 2.2.2 Phân loại client 16 2.2.4 Ưu điểm nhược điểm mô hình client-server 21 2.2.1 Mạng P2P 24 2.2.3 2.2 Kiến trúc client-server 17 Mơ hình peer-to-peer 23 2.2.2 Định tuyến dò tìm tài nguyên 24 2.2.4 Ứng dụng P2P thực tế 28 2.2.3 2.3 Phân loại mạng P2P 24 Thuật toán thay trang 39 2.3.1 Tổng quan 39 2.3.3 Quản lý trang trước kỳ hạn 41 2.3.2 2.3.4 2.3.5 2.4 Quá trình tiền dọn 40 Thuật toán đánh dấu 41 Thuật toán thay trang 42 Công nghệ triển khai ứng dụng P2P 53 2.4.1 2.4.2 Công nghệ JXTA 53 Công nghệ WebRTC 56 CHƯƠNG III: MƠ HÌNH CHIA SẺ CACHE SỬ DỤNG P2P 60 3.1 Caching model 60 3.2 3.3 Local proxy model 64 Shared-caching model 65 CHƯƠNG IV: THIẾT KẾ ỨNG DỤNG CHIA SẺ FILE SỬ DỤNG MƠ HÌNH CHIA SẺ CACHE 69 4.1 4.2 Giới thiệu ứng dụng 69 Thiết kế ứng dụng 70 4.2.1 4.2.2 4.2.3 4.3 4.4 Thiết kế chức 70 Thiết kế module 71 Tổ chức liệu 74 Công nghệ sử dụng 78 Thử nghiệm 80 CHƯƠNG V: KẾT LUẬN 84 DANH MỤC HÌNH VẼ, ĐỒ THỊ Hình 2.1: Mơ hình Client-Server 10 Hình 2.2: Trao đổi liệu Client Server chế độ bị phong tỏa 12 Hình 2.3: Năng lực xử lý Nginx so với Apache web server 13 Hình 2.4: So sánh khả quản lý nhớ Nginx Apache web server 14 Hình 2.5: Cơ chế hoạt động blocking-server 14 Hình 2.6: chế hoạt động non-blocking server [ref] 15 Hình 2.7: Phân loại client 17 Hình 2.8: Phân loại Client-Server theo kiến trúc logic 18 Hình 2.9: Kiến trúc Client-Server tầng 19 Hình 2.10: Kiến trúc Client-Server tầng 20 Hình 2.11: Kiến trúc Client-Server n tầng 21 Hình 2.12: Mạng phi cấu trúc 25 Hình 2.13: Mơ hình mạng có cấu trúc 26 Hình 2.14: Cơ chế bàng băm phân tán DHT 26 Hình 2.15: Mơ hình ứng dụng Spotify 31 Hình 2.16: Mơ hình mạng Napster 35 Hình 2.17: Mơ hình mạng Gnutella 37 Hình 2.18: Kiến trúc JXTA 55 Hình 2.19: Kiến trúc WebRTC 58 Hình 3.1: Caching model 60 Hình 3.2: Cơ chế hoạt động mơ hình Caching model 62 Hình 3.3: Mơ hình Local-Proxy 65 Hình 3.4: Shared-caching Model 66 Hình 3.5: Cơ chế hoạt động mơ hình Shared-caching model 68 Hình 4.1: Mơ hình hoạt động ứng dụng Quicknode 69 Hình 4.2: Các module ứng dụng Quicknode 74 Hình 4.3: Tốc độ download P2P Client-Server 82 Hình 4.4: Đồ thị thời gian tốc độ download file (kích thước 48,11MB) 83 CHƯƠNG I: TỔNG QUAN Mơ hình client-server mơ hình triển khai ứng dụng phân tán phổ biến khả phát triển triển khai ứng dụng dễ dàng Trong mơ hình này, thành phần cung cấp dịch vụ hay tài nguyên gọi server, thành phần gọi service cung cấp server gọi client Thông thường client server đặt máy vật lý khác giao tiếp với thông qua hệ thống mạng Một máy server chạy nhiều ứng dụng server, ứng dụng server chia sẻ tài nguyên với client Một client không chia sẻ tài nguyên với client khác ngoại trừ việc gửi truy vấn tới dịch vụ máy server Mơ hình client-server phát triển Xerox PARC vào năm 1970 Các ứng dụng Email, WWW ví dụ điển hình mơ hình client-server Đặc điểm bật kiến trúc client-server gồm: • Quản lý tập trung: liệu lưu trữ tập trung server thay nằm rải rác nhiều máy, giúp đơn giản hóa việc truy xuất cập nhật liệu • Dễ bảo trì: nhờ khả quản lý tập trung mà cơng việc bảo trì trở nên dễ dàng phần lớn việc bảo trì cần thực server Trong trường hợp hệ thống có nhiều server với thiết bị dự phịng, q trình bảo trì (như sửa chữa, thay server) diễn hồn tồn suốt với client • Bảo mật: liệu tập trung server đồng nghĩa với việc kiểm sốt dễ dàng an tồn Các ưu điểm khiến ứng dụng phát triển theo mơ hình Client-Server trở nên dễ dàng linh hoạt: • Ứng dụng sau phân tích nghiệp vụ thiết kế protocol chuẩn giao tiếp client server • Tuân theo protocol, ứng dụng client server phát triển độc lập, sử dụng công nghệ khác với nhiều tùy chọn linh hoạt (server: Java, Python, Ruby; client: Java Swing, C# Winform, HTML5, Mobile) Các ứng dụng client-server phát triển độc lập đảm bảo khả dễ nâng cấp, bảo trì • Ứng dụng client-server cịn dễ dàng phát triển chỗ: có nhiều tùy chọn giao thức kết nối client-server tùy chọn hỗ trợ mặc định ngôn ngữ phát triển Các giao thức phổ biến kể đến như: TCP/IP, UDP, HTTP • Việc triển khai ứng dụng dễ dàng: cài đặt server máy chủ vật lý Các ứng dụng client phân phối qua mạng người dùng cài đặt vào máy Các công nghệ: web application, Java Webstart, NET Oneclick cho phép ứng dụng tự động nâng cấp có thay đổi server Bên cạnh ưu điểm mô hình client-server, đặc điểm mơ hình tạo yếu điểm server bottleneck Server bottleneck xử lý giải pháp scale-up ứng dụng như: nâng cấp server, sử dụng load balancing[1] để phân tải nhiều máy chủ vật lý Tuy nhiên giải pháp thường có chi phí cao Với ứng dụng chia sẻ giao tiếp thời gian thực (Audio, Video) hay ứng dụng chia sẻ file cần server có băng thơng lớn Bên cạnh giải pháp scale-up hệ thống, giải pháp sử dụng cache client giải pháp thường sử dụng Dữ liệu chuyển qua client cache lại phục vụ cho lần sử dụng tiếp theo, chế cache hiệu cải thiện đáng kể hiệu truy cập service từ server Các thuật toán cache gọi là: “page replacement algorithm”[5] Tuy nhiên cache miss xảy ra, client phải liên lạc với server để lấy liệu Như tính co giãn hệ thống khơng đảm bảo Ngồi sử dụng cache khơng giải tốn chia sẻ liệu realtime, có nhiều client đăng ký nhận thông tin broadcast từ server Giải pháp khác giải bottleneck server triển khai ứng dụng theo mơ hình Peer-to-peer (P2P) P2P mơ hình triển khai ứng dụng phân tán, node mạng (được gọi “peer”) vừa đóng vai trị node cung cấp lẫn node sử dụng dịch vụ, khác với mơ hình client-server client sử dụng dịch vụ cung cấp server Việc node mơ hình P2P vừa đóng vai trị node sử dụng lẫn cung cấp dịch vụ dẫn đến xử lý toàn hệ thống phân chia node mạng giải vấn đề bottleneck mơ hình client-server, đặc biệt ứng dụng chia sẻ liệu lớn, băng thông hệ thống chia máy, đảm bảo khả mở rộng hệ thống với chi phí tối ưu Tuy nhiên mơ hình P2P có yếu điểm là: triển khai phức tạp thao tác: tìm kiếm liệu, lưu trữ phân tán liệu node chế đảm bảo liệu sẵn sàng có số lượng node định rời khỏi hệ thống Mặt khác mơ hình P2P khó khăn việc bảo trì nâng cấp hệ thống so với ứng dụng client-server xử lý tập trung server Ngoài điểm khác làm cho P2P lựa chọn số cho ứng dụng phân tán tính an toàn liệu lưu trữ phân tán nhiều node Một số ứng dụng chí khơng thể triển khai theo mơ hình P2P u cầu an toàn lưu trữ tập trung liệu: ứng dụng có liệu nhạy cảm: ứng dụng ngân hàng core-banking, ứng dụng chứng khoán, ứng dụng mail… Qua tìm hiểu ta rút ra: • Ứng dụng dựa mơ hình Client-Server dễ phát triển gặp server bottleneck giới hạn băng thơng • Ứng dụng dựa mơ hình P2P làm hệ thống có tính co dãn cao khó triển khai do: lookup service, protocol phức tạp,cơ chế phân tán liệu node đảm bảo tính liệu sẵn sàng cao phức tạp Đề tài chọn nghiên cứu luận văn “Giải pháp sử dụng P2P công cụ truyền thông cho ứng dụng Client-Server” Mơ hình tơi nghiên cứu luận văn sử dụng mơ hình P2P kết hợp với Client-Server Cache để scale-out hệ thống, giải bottleneck server phức tạp triển khai ứng dụng P2P đồng thời tận dụng tính đơn giản mơ hình Client-Server khả co giãn cao hệ thống dựa P2P Ngoài hướng tiếp cận đề xuất luận văn hướng tới việc nâng cấp ứng dụng Client-Server có sẵn để sử dụng thêm kết nối P2P Cache Trong phần thử nghiệm, tơi tiến hành áp dụng mơ hình đề xuất vào ứng dụng chia sẻ file để đưa số liệu hiệu mơ khả ứng dụng mơ hình vào hệ thống sử dụng mơ hình Client-Server có • Console Engine: chịu trách nhiệm phân tích, xử lý trả kết thực lệnh người dùng truyền vào Console Engine giao tiếp trực tiếp với tầng Task Manager để gửi yêu cầu thực công việc, service để xử lý truy vấn liệu phục vụ tính tốn kết câu lệnh UI để hiển thị kết cho người sử dụng Ví dụ người dùng muốn xem chi tiết log hệ thống (ví dụ: log 1), Console Engine phân tích câu lệnh, gọi service tương ứng LogService, nhận kết in UI • Task Manager: quản lý tất task hệ thống Task nhiệm vụ xác định yêu cầu thực độc lập liên tiếp với task khác, task có đầu vào tham số cấu hình, đầu kết thực Cụ thể task hệ thống sử dụng bao gồm: download o Download: thực download nhiều đoạn liệu xác định từ nguồn cho trước Task thực có kết nối tới nguồn liệu kích hoạt Task download thường thực sau task Open Connection o Open Connection: thực mở kết nối tới node xác định Kết nối Quicknode client gồm loại: P2P connection: sử dụng WebRTC (để thực mở kết nối P2P cần thực bước bắt tay theo giao thức định sẵn) Client-Server: sử dụng kết nối WebSocket Kết nối sau tạo thành công lưu lại chia sẻ sử dụng service ConnectionService o Cache Read Cache Write: thực đọc ghi giữ liệu vào cache Dữ liệu cache Quicknode tổ chức lưu trữ dạng file sử dụng công nghệ HTML5 filesystem Dữ liệu file browser lưu trữ sandbox lý bảo mật, liệu khơng thể truy cập từ ứng dụng khác ngồi ứng dụng chạy domain • Service: nhận lời gọi từ Task Manager Console Engine thực xử lý nghiệp vụ hệ thống Các service Quicknode bao gồm: 72 o Connection Service: quản lý tất kết nối từ client tới node khác (server peer) Cho phép lưu trữ truy vấn kết nối dựa id node ConnectionService sử dụng task OpenConnection (khi mở kết nối thành công) Download (khi cần thực download truy vấn thông tin từ node xác định o Cache Service: thực thao tác cache như: tìm kiếm cache file cho trước, lấy nhiều đoạn liệu cache file client, xóa tất phần liệu cache o Log Service: lưu trữ log trình chạy ứng dụng Log chia làm loại: log tổng thể trình download file, log trình download đoạn liệu từ đích, log q trình client thực mở kết nối tới node xác định log trình client gửi yêu cầu dẫn download chờ nhận kết Log Quicknode truy vấn Console Engine cho phép người dùng xem lại tất kết thực thông kê cần thiết hiệu mơ hình ứng dụng o Set Processor: thao tác xử lý với tập hợp bao gồm phép xử lý như: giao tập hợp, hợp tập hợp, trừ tập hợp Các phép toán sử dụng với liệu đầu vào range Ví dụ: cần xác định đoạn liệu cần download từ node khác, ứng dụng sử dụng phép trừ tập hợp: {tất đoạn liệu file} – {các đoạn liệu có cache} • Thư viện browser: o HTML5 filesystem: lưu trữ file sandbox browser, sử dụng để lưu trữ cache o HTML5 localstorage: lưu trữ trạng thái cache client Dữ liệu localstorage lưu trữ dạng key-value 73 o WebRTC[4]: cho phép mở kết nối P2P node client tạo stream để truyền liệu node Hình 4.2: Các module ứng dụng Quicknode 4.2.3 Tổ chức liệu Dữ liệu Quicknode cần tổ chức hợp lý phép ứng dụng client thực chế download, cache chia sẻ phần liệu dễ dàng Trên client server, file chia thành phần nhỏ đánh số cho phép client server xác định xác phần liệu tham chiếu 4.2.3.1 Lưu trữ giữ liệu server Dữ liệu tổ chức server dạng file thư mục Thông tin file/ thư mục đánh mục lưu trữ database với trường tương ứng với file thư mục là: 74 Tên trường Kiểu liệu Mô tả id int Id thư mục file liệu type varchar Loại liệu: file/ thư mục parent_id int Id thư mục cha name varchar Tên file thư mục path varchar Đường dẫn tới file thư mục size int Kich thước file (byte) lines_count int Số line file liệu create_time datetime Thời gian upload Khi thực upload thư mục file lên server, hệ thống đồng thời copy nội dung thư mục tương ứng (bao gồm file thư mục con) lên server tạo ghi database để ghi nhận file/ thư mục Dữ liệu database truy vấn server client để hiển thị thông tin chi tiết file/ thư mục tính tốn phần liệu thiếu cần phải download Khi client gửi yêu cầu download đoạn liệu file dựa vào file id số đoạn liệu, server tìm kiếm bảng đánh mục file, tìm đường dẫn tới file ổ cứng load đoạn liệu yêu cầu ghi xuống socket để trả client Hệ thống cho phép client tải nhiều phần xác định file liệu tương ứng Để thực khả này, ta sử dụng khái niệm lý thuyết cache là: line range • line đơn vị liệu nhỏ truyền hệ thống, kích thước liệu line định sẵn tồn hệ thống (có thể trừ line cuối chứa byte lẻ lại file) Trong ứng dụng Quicknode, kích thước line chọn 8196 byte Định danh line xác định dựa id file liệu vị trí (bắt đầu từ giá trị 0) line file liệu 75 • range: tập line liên tục file Range sử dụng để định đoạn liệu liên tục file (chunk data) Để biểu diễn nhiều đoạn liệu file ta mô tả danh sách range Trong ví dụ đây, line file có số “0”, line cuối file “N-1” Range chứa lien từ tới biểu diễn rút gọn là: “2-6” Một số ví dụ range: • Biểu diễn range tồn liệu file trống (size = 0): “” • Biểu diễn range liệu toàn file không trống (size > 0): “0-“ 4.2.3.2 Lưu trữ giữ liệu cache client Dữ liệu cache client lưu trữ thành file tương ứng với line file liệu Tên file đặt theo định dạng: “${fileId}-${lineIndex}.part” Ví dụ line có số 10 file có id cache client với tên tương ứng là: “3-10.part” Để thực download đoạn liệu (chunk data) file, client cần gửi request tới server client khác Request bao gồm tham số: • File id: xác định file liệu cần download • Danh sách range: xác định đoạn liệu cần download từ node khác Trong ứng dụng Quicknode, tham số lưu định dạng JSON Ví dụ, để download line liệu: 1,2,3,8,9,10 file có id 1, client gửi yêu cầu tới server có nội dụng {fileId: 1, ranges:[“1-3”,”8-10”]} Dữ liệu node đích trả lại dạng binary gồm phần: header chứa thông tin range liệu, phần nội dung chứa liệu binary mô tả header 76 Thuật toán client sử dụng để thực lấy liệu cần thiệt server client khác thể Algorithm Algorithm 1: client downloads file from server and other clients Input: fileId: id of the downloaded file, environmentParams: client’s information, webSocket: connection to server callback: this function will be invoked when receiving all data 1: buffer new DataBuffer() 2: missingRanges [“0-“] /*Contain list of ranges that must download */ // Callback function when receiving data 3: function onReceivedData(ranges, data) 4: missingRanges missingRanges – ranges 5: buffer.save (ranges,data ) 6: cache(ranges,data) 7: 8: if missingRanges = ∅ then 9: end if callback (fileId, buffer) 10: end function // Main business logic 11: cachedFile getCachedData ( fileId ) 12: onReceivedData(cachedFile.ranges, cachedFile.data) 13: if missingRanges ∅ then 14: 15: 16: begin request { fileId, missingRanges, environmentParams} 17: instructions webSocket.requestInstructions(request) 18: for instruction in instructions 77 19: begin 20: if instruction.type = “webrtc_p2p” then connection openWebRTCConnection 21: 22: (instruction.node_id) 23: else if instruction.type = “xhr” then connection openXHRConnection 24: 25: (instruction.node_id) 26: end if 27: connection.download( fileId, instruction.ranges, 28: 29: 30: onReceivedData) end for end 31: end if 4.3 Cơng nghệ sử dụng Để ứng dụng dễ dàng thử nghiệm với nhiều client tham gia dễ dàng triển khai, lựa chọn công nghệ web để cài đặt ứng dụng thử nghiệm Đặc biệt để thực mở kết nối P2P, sử dụng công nghệ WebRTC cho phép browser kết nối trực tiếp tới Ứng dụng client server phát triển chủ yếu sử dụng ngôn ngữ Javascript platform Nodejs[2] Chi tiết công nghệ sử dụng mô tả đây: Công nghệ Nodejs platform[2] Mô tả Nền tảng cho phép phát triển ứng dụng server non-blocking sử dụng ngơn ngữ lập trình Javascript Nodejs tảng nguồn mở sử dụng để phát triển ứng dụng mạng lớn Ứng dụng phát triển tảng Nodejs sử dụng ngôn ngữ Javascript với hiệu cao thông qua sử dụng chế non-blocking I/O với thread lơn 78 vòng lặp xử lý Nodejs chứa sẵn thư viện HTTP server, cho phép ứng dụng chạy webserver mà không cần thêm phần mềm thư viện như: Apache Lightpd, cho phép can thiệp trực tiếp vào hoạt động webserver WebRTC[4] WebRTC (Web Real-Time Communication) tập API soạn W3C cho phép ứng dụng browser giao tiếp với với khả năng: voice call, video chat trao đổi liệu P2P mà không cần sử dụng thêm plugin cài đặt thêm vào browser Dự án WebRTC dự án nguồn mở, phát triển Google vào năm 2011 dần trở thành chuẩn browser Hiện có Chrome, Firefox Opera hỗ trợ chuẩn SocketIO[3] Thư viện nguồn mở cho phép tạo kết nối client (browser) server (Nodejs) Thư viên cho phép tạo kết nối phù hợp danh sách sau: websocket, flash-socket, ajax long polling HTML5 filesystem HTML5 Sử dụng lưu trữ file browser Trong quicknode, HTML5 filesystem sử dụng để lưu trữ cache client Cho phép lưu trữ liệu dạng key-value browser localstorage Angularjs Thư viện hỗ trợ phát triển ứng dụng MVC sử dụng HTML 79 Javascript Trong ứng dụng Quicknode • Nodejs platform: sử dụng phát triển module “Data Instruction suggestor” làm trung gian thực thao tác bắt tay để kết nối browser • WebRTC: mở kết nối chia sẻ liệu cache thông qua kết nối P2P ứng dụng Quicknode client • SocketIO: cho phép ứng dụng Quicknode client kết nối tới server để thực hiện: o Thao tác bắt tay để mở kết nối WebRTC P2P o Gửi nhận dẫn download liệu từ server o Download liệu file o Truy vấn thông tin chi tiết file server • HTML5 filesystem: sử dụng browser cho phép Quicknode client lưu trữ • HTML5 localstorage: lưu trữ trạng thái cache file browser Định dạng lưu trữ với: o key: id file o value: range cache client Ví dụ file có id 31 với line cache 0, 6, 10 23 lưu trữ với: key: 31 value: {“31”,ranges:[“0-0”, “2-6”, “10-23”] } • Angularjs: xây dựng giao diện front-end ứng dụng 4.4 Thử nghiệm Để thử nghiệm ứng dụng quicknode, chuẩn bị tập file liệu lưu trữ server với kích thước: 10,39KB; 50,04KB; 100,54KB; 192KB; 504,54KB; 994,27KB; 80 1,89MB; 3,99MB; 10,45MB; 19,28MB; 48,11MB tiến hành thử nghiệm download từ client với 12 kịch thử nghiệm: Dữ liệu thiếu lấy từ P2P Subsystem với tỷ lệ (*) 0% 20% 40% 60% 80% 100% Không sử dụng cache (1) (2) (3) (4) (5) (6) Cache 50% dung lượng file client (7) (8) (9) (10) (11) (12) (*) tỷ lệ liệu lấy từ P2P tổng (P2P Server) Với trường hợp thử nghiệm trên, ứng với: • Thử nghiệm (1): liệu download hoàn toàn từ server Tức kết tướng ứng với kết ứng dụng triển khai mơ hình Client-Server • Thử nghiệm (6): liệu download hoàn toàn từ P2P Subsystem Tức kết tương ứng với kết ứng dụng triển khai mơ hình Local proxy • Thử nghiệm (7): liệu file lấy từ cache download phần lại từ server Tức kết tương ứng với kết ứng dụng triển khai mô hình Caching model Các thử nghiệm tiến hành điều kiện: • Server: o Sử dụng hệ điều hành: Windows Server 2003 o CPU: Intel Xeon 2.40 Ghz • Client o Sử dụng hệ điều hành: Windows o CPU: Core i3 2.40 Ghz o Browser: Google Chrome v.31 • Network 81 o Các máy client chạy LAN o Máy client kết nối với server thông qua kết nối WAN Tôi thực đo kết download trung bình thực download từ server node client khác (qua kết nối P2P, mạng LAN), tốc độ truy cập liệu cache Các kết tơi đo là: • Download liệu từ Server: 353KB/s • Download liệu từ node Client: 721KB/s • Truy cập liệu cache browser: 6,08MB/s Hình 4.3: Tốc độ download P2P Client-Server Kết hợp 12 thử nghiệm download file kích thước 48,11MB tơi có đồ thị so sánh kết quả: 82 Hình 4.4: Đồ thị thời gian tốc độ download file (kích thước 48,11MB) tỉ lệ download liệu qua kết nối P2P thay đổi Từ đồ thị ta có nhận xét: • Tốc độ download trung bình file tăng lên liệu lấy từ P2P Subsystem tăng lên Đồ thị tốc độ trung bình có dạng xấp xỉ tuyến tính cho thấy tốc độ download file từ server P2P ổn định • Thời gian download file giảm đáng kể thực liệu cache 50%, từ 1,8 tới 2,1 lần tỉ lệ liệu lấy từ P2P tăng lên Thời gian thực download file giảm số lần xấp xỉ tỉ lệ liệu file/ liệu cache (2 lần) cho thấy hệ thống cache hiệu làm thay đổi lớn tới toàn hệ thống 83 CHƯƠNG V: KẾT LUẬN Sau thời gian tìm hiểu nghiên cứu, đề tài luận văn “Giải pháp sử dụng P2P công cụ truyền thông cho ứng dụng Client-Server” hoàn thành đạt kết sau: • Nghiên cứu mơ hình cải thiện hiệu ứng dụng Client-Server bao gồm: Caching-model Local Proxy Model • Đề xuất mơ hình chia sẻ cache: Shared-caching model kết hợp mơ hình: Caching Model Local Proxy Model Mơ hình tơi đề xuất có ưu điểm: tận dụng tính chất dễ phát triển mơ hình Client-Server truyền thống, đồng thời có khả mở rộng ứng dụng sử dụng mơ hình P2P Ưu điểm khác Shared-caching model cho phép nâng cấp từ ứng dụng Client-Server với thay đổi • Thiết kế chi tiết phát triển ứng dụng thử nghiệm triển khai theo mơ hình Shared-caching model thực thử nghiệm download liệu file từ server chia sẻ liệu cache client Kết thử nghiệm cho thấy phát triển dễ dàng ứng dụng P2P có hiệu tốt với giao thức không thay đổi nhiều so với ứng dụng Client-Server truyền thống Các kết nghiên cứu công bố hội nghị khoa học ACM-SoICT 2013 với báo có tiêu đề “P2P Shared-Caching Model: Using P2P to Improve ClientServer Application Performance” Hướng phát triển đề tài là: thêm khả phân tích sâu cho module “Data Instruction Suggestor” Đây module quan trọng ảnh hưởng tới hiệu tồn hệ thống, mục đích module thực tính tốn đưa nguồn lấy liệu hiệu cho client Để đưa kết tốt nhất, module cần lưu trữ liệu thống kê chất lượng kết nối tình trạng node liên kết node với (nếu có) Thuật tốn liên quan đến hướng phát triển là: heuristic, lý 84 thuyết mờ (giải toán phức tạp, nhiều tham số đầu vào với kết có sai số chấp nhận được) Bên cạnh kết đạt được, đề tài tơi cịn có số điểm chưa hồn thiện như: • Kết thử nghiệm thực với node client mạng LAN điều kiện lý tưởng: khơng có đứt kết nối, khơng có ứng dụng khác chiếm băng thơng ứng dụng Quicknode • Ứng dụng thử nghiệm chưa đưa mức độ phức tạp hiệu đạt chuyển từ mơ hình Client-Server sang mơ hình Shared-caching Các điểm chưa hồn thiện tơi hồn thiện nghiên cứu tương lai để có đánh giá từ môi trường thức tế ứng dụng sử dụng mơ hình Shared-caching model 85 TÀI LIỆU THAM KHẢO [1] Hiroshi YAMAMOTO, Daisuke MARUTA and Yuji OIE: Replication Methods for Load Balancing on Distributed Storages in P2P Networks IEICE Transactions 89D(1): 171-180(2006) [2] Nodejs Available at http://nodejs.org/ [3] SocketIO Available at http://socket.io/ [4] WebRTC Available at http://webrtc.org [5] Page Replacement Algorithms http://en.wikipedia.org/wiki/Page_replacement_algorithm [6] Theodore Johnson and Dennis Shasha: 2Q: A Low Overhead High Performance Buffer Management Replacement Algorithm http://www.vldb.org/conf/1994/P439.PDF [7] Stoica, R Morris, D Karger, M F Kaashoek, and H Balakrishnan: Chord: A scalable peer-to-peer lookup protocol for internet applications IEEE/ACM Transactions on Networking, vol 11, no 1, pp 17–32, 2003 [8] Ha Quoc Trung (2012): New approach to develop the messenger application: from client server design to p2p implementation ACSIT-2012 [9] Nguyen Quang Thu: Study of distributed replication: design a messenger application using local proxy model Master’s thesis, Hanoi University of Science and Technology, 2013 [10] Jesse Burstyn, Katricia Barleta, Lukas Berk, P Bennett Cole and Tom Franzon: Conceptual Architecture of Google Chrome http://archrometects.files.wordpress.com/2009/10/assignment-01-conceptualarchitecture-of-google-chrome-archrometects.pdf [11] JXSE Available at https://jxse.kenai.com/ 86 ... luận văn ? ?Giải pháp sử dụng P2P công cụ truyền thông cho ứng dụng Client-Server” Mơ hình tơi nghiên cứu luận văn sử dụng mơ hình P2P kết hợp với Client-Server Cache để scale-out hệ thống, giải bottleneck... nội dung trình bày luận văn ? ?Giải pháp sử dụng P2P công cụ truyền thông cho ứng dụng Client-Server” kết tìm hiểu nghiên cứu riêng tơi hướng dẫn PGS.TS Hà Quốc Trung Các kết liệu nêu luận văn hồn... Một số ứng dụng chí khơng thể triển khai theo mơ hình P2P yêu cầu an toàn lưu trữ tập trung liệu: ứng dụng có liệu nhạy cảm: ứng dụng ngân hàng core-banking, ứng dụng chứng khoán, ứng dụng mail…