Tôi xin cam đoan toàn bộ nội dung được trình bày trong bản luận văn “Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server” này là kết quả tìm hiểu và nghiên cứu của riêng tôi
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SỸ KHOA HỌC
KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG
NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS HÀ QUỐC TRUNG
Trang 2L ỜI CAM ĐOAN
Tôi là:Dương Hữu Tùng, học viên cao học lớp 11BMTTT.KH khóa 2011 -
2013 Thầy giáo hướng dẫn là PGS.TS Hà Quốc Trung
Tôi xin cam đoan toàn bộ nội dung được trình bày trong bản luận văn
“Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server” này là kết
quả tìm hiểu và nghiên cứu của riêng tôi dưới sự hướng dẫn của PGS.TS Hà Quốc
Trung Các kết quả và dữ liệu được nêu trong luận văn là hoàn toàn trung thực và
rõ ràng Mọi thông tin trích dẫn đều được tuân theo luật sở hữu trí tuệ, liệt kê rõ ràng các tài liệu tham khảo Tôi xin chịu hoàn toàn trách nhiệm với những nội dung được viết trong luận văn này
Hà nội, ngày tháng 4 năm 2014
Trang 3L Ờ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 có thể hoàn thành luận văn này
Tôi cũng 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 và T ruyền thông, Viện Đào tạo sau đại học đã truyền dạy những kiến thức quý báu trong khoá học này
Cuối cùng, tôi xin gửi lời cám ơn tới gia đình, bạn bè, cơ quan công tác đã giúp đỡ trong quá trình thực hiện luận văn này
Hà Nội, ngày tháng 4 năm 2014
Học viên
Dương Hữu Tùng
Trang 4M ỤC LỤC
DANH MỤC HÌNH VẼ 6
CHƯƠNG 1 TỔNG QUAN 9
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 12
2.1 Mô hình client/server 12
2.1.1 Khái niệm 12
2.1.2 Các kiến trúc Client/Server 15
2.2 Mô hình peer to peer 17
2.2.1 Khái niệm 17
2.2.2 Phân loại mạng ngang hàng 19
2.3 So sánh mô hình P2P với mô hình Client/Server 21
2.4 Vấn đề cần giải quyết 22
2.5 Định hương giải pháp 24
2.5.1 Mô hình Local Proxy 24
2.5.2 Mô hình share cache model 25
CHƯƠNG 3 THIẾT KẾ ỨNG DỤNG VIDEO STREAMING SỬ DỤNG LOCAL PROXY 28
3.1 Giới thiệu bài toán 28
Trang 53.2.1 Kiến trúc của server 29
3.2.2 Kiến trúc của client 30
3.3 Mô tả video streaming sử dụng P2P 31
3.4 Chức năng hệ thống video streaming 32
3.5 Thiết kế chi tiết hệ thống video streaming 34
3.5.1 Đăng ký người dùng 34
3.5.2 Đăng nhập 35
3.5.3 Danh sách các đoạn video đang có 37
3.5.4 Gửi video 38
3.5.5 Hiển thị video 40
3.5.6 Thêm một đoạn video 41
3.5.7 Đăng xuất 42
3.6 Cài đặt, thử nghiệm và đánh giá 43
KẾT LUẬN 46
TÀI LIỆU THAM KHẢO 47
Trang 6DANH M ỤC HÌNH VẼ
Hình 2.1 Mô hình client server 13
Hình 2.2 Quá trình gửi một bản tin của mô hình client server 14
Hình 2.3 Kiến trúc client server 2 tầng 16
Hình 2.4 Kiến trúc client server 3 tầng 16
Hình 2.5 Mô hình mạng ngang hàng 17
Hình 2.6 Phân loại mạng ngang hàng 19
Hình 2.7 Mô hình local proxy 24
Hình 2.8 Mô hình share cache model 25
Hình 3.1 Mô hình một client và một server 29
Hình 3.2 Mô hình kiến trúc server-client 30
Hình 3.3 Đăng ký người dùng 34
Hình 3.4 Quy trình đăng nhập 36
Hình 3.5 Qui trình gửi video 38
Hình 3.6 Quy trình hiển thị đoạn video 40
Hình 3.7: Quy trình thêm đoạn video 42
Trang 7DANH MỤC BẢNG
Bảng 3.1 Quy trình đăng kí người dùng 35
Bảng 3.2 Quy trình đăng nhập 37
Bảng 3.3 Quy trình gửi video 39
Bảng 3.4 Quy trình hiển thị một đoạn video 41
Bảng 3.5 Quy trình thêm một video 42
Trang 8BẢNG CHỮ VIẾT TẮT
Trang 9CHƯƠNG 1 T ỔNG QUAN
Các ứng dụng dựa trên nền tảng client-server trên mạng ngày càng phổ biến Tuy nhiên trong một số ứng dụng cần thao tác với dữ liệu lớn hay đòi hỏi nhiều tính toán, xử lí phức tạp như streaming audio, video, thì mô hình client-server gặp nhiều
bất cập, đặc biệt là khi số lượng người dùng đồng thời tăng, biểu hiện dưới dạng như quá tải máy chủ, trễ tín hiệu, việc xem một video trên mạng gần như là điều không thể Ngày nay, cùng với sự bùng nổ của Internet, các ứng dụng đa phương
tiện trong đó có video streaming đã trở thành nhu cầu không thể thiếu của nhiều cư dân mạng Theo thống kê, riêng tại Mỹ đã có khoảng 33,5 tỉ video được xem trong tháng 12-2012 (nguồn comScore) Con số trên đủ cho ta thấy được sự lớn mạnh không ngừng của các ứng dụng video streaming Video là một loại dữ liệu đa phương tiện quan trọng phục vụ cho truyền thông hoặc cho nhu cầu giải trí của con người trong nhiều thập niên Trong thời kỳ đầu video được xử lý và truyền dưới
dạng tín hiệu tương tự (analog) Với sự phát triển không ngừng của mạch điện tử và máy tính dẫn đến số hóa video và mở ra một cuộc cách mạng về nén và truyền thông video Sự phát triển và phổ biến của Internet giữa những năm 90 đã định hướng truyền thông video qua mạng chuyển mạch gói best – effort Video qua
mạng Internet gặp phải rất nhiều yếu tố bất lợi về băng thông, độ trễ và mất gói tin, cùng với một số vấn đề như làm thế nào để chia sẽ tài nguyên mạng giữa các luồng hay làm thế nào có thể triển khai hiệu quả phương thức truyền thông một – nhiều
Từ đó đã có rất nhiều giải pháp được nghiên cứu và phát triển nhằm khắc phục
những vấn đề này
Video Streaming được định nghĩa là một “dòng chảy” video, nghĩa là dữ liệu video được truyền liên tục từ một nguồn đến một đích nào đó thông qua Internet Video Streaming thường được sử dụng trong lĩnh vực giải trí hoặc dạy học, dùng để lưu
trữ các tập tin Video hoặc các bài học, cung cấp cho người dùng các tiện ích như tìm kiếm, liệt kê và khả năng hiển thị hoặc hiển thị lại các dữ liệu Video theo yêu
Trang 10được tải về (download) toàn bộ, vì vậy đối với các tập tin Video chất lượng cao có dung lượng lớn thì công việc này sẽ tiêu tốn rất nhiều thời gian
Video Streaming tiết kiệm thời gian cho người dùng bằng cách sử dụng các công nghệ giải nén kết hợp với hiển thị dữ liệu đồng thời trong lúc vẫn tiếp tục tải video
về Quá trình này được gọi là kỹ thuật đệm (buffering):
+ Thay vì được gửi một lần duy nhất, dữ liệu video streaming sẽ được chia thành
từng gói nhỏ, sau đó liên tục truyền những phần được chia ra
+ Ban đầu bên nhận sẽ lấy về một phần chia nhỏ của dữ liệu Video và hiển thị
những phần video đã nhận được, đồng thời trong lúc hiển thị các gói dữ liệu còn lại
sẽ lần lượt được lấy về để kịp cho việc hiển thị tiếp theo
Video Streaming được thể hiện dưới hai dạng:
+ Video theo yêu cầu (on demand): là các dữ liệu Video được lưu trữ trên máy chủ
đa phương tiện và được truyền đến người dùng khi có yêu cầu, người dùng có toàn quyền để hiển thị cũng như thực hiện các thao tác (tua, dừng, quay lại…) với các đoạn dữ liệu này
+ Video thời gian thực (live event): là các dữ liệu Video được biến đổi trực tiếp từ các nguồn cung cấp dữ liệu theo thời gian thực (máy camera, microphone thiết bị phát dữ liệu Video…)
Việc đảm bảo chất lượng dịch vụ của các ứng dụng như vậy là bài toán vô cùng cấp thiết Chính vì vậy tôi lựa chọn đề tài “Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server” Đề tài này đề xuất nghiên cứu ứng dụng, cách tiếp cận sử
dụng đồng thời hai giao thức peer- to- peer và client – server thông qua local proxy cho ứng dụng streaming video
Luận văn này được chia các phần như sau:
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết
Trang 11Trong chương này trình bày về tổng quan về mô hình client server, mô hình peer to peer, vấn đề cần giải quyết, định hướnggiải pháp,làm cơ sở để thực hiện chương
tiếp theo
Chương 3: Thiết kế ứng dụng video streaming sử dụng local proxy
Qua nghiên cứu ưu nhược điểm của các mô hình client server, mô hình peer to peer cùng với giải pháp đưa ra, luận văn này đề xuất sử dụng mô hình local proxy - ứng
dụng ưu điểm của 2 mô hình client server và peer to peer Để thực hiện luận văn đưa ra giải pháp để triển khái ứng dụng video streaming sử dụng mô hình local proxy
Mặc dù đã cố gắng hết sức và sự giúp đỡ tận tình của Thầy giáo hướng dẫn, song trình độ còn hạn chế, phạm vi của đề tài rộng nên không thể tránh khỏi những thiếu sót Em rất mong sự chỉ dẫn và đóng góp của các Thầy cô để luận văn được hoàn thiện hơn
Trang 12CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Trong chương này, tôi xin trình bày các mô hình client server, mô hình peer to peer, các v ấn đề cần giải quyết,đưa ra mô hình giải pháp để lưa chọn cho chương tiếp theo
2.1 Mô hình client/server
Mô hình client/server rất phổ biến và được chấp nhận rộng rãi trong các hệ thống phân tán Trong mô hình này có một tập tiến trình, mỗi tiến trình đóng vai trò một trình quản lý tài nguyên cho một tập các tài nguyên cho trước và một tập hợp các
tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ xác định cần truy xuất
tới tài nguyên phần cứng hoặc phần mềm dùng chung Bản thân các trình quản lý tài nguyên cần phải truy xuất tới các tài nguyên dùng chung được quản lý bởi một tiến trình khác, vì vậy một số tiến trình vừa là tiến trình client vừa là tiến trình server Các tiến trình phát ra các yêu cầu tới các server bất kỳ khi nào chúng cần truy xuất
tới một trong các tài nguyên của các server Nếu yêu cầu là đúng đắn thì server sẽ
thực hiện hành động được yêu cầu và gửi một đáp ứng trả lời tới tiến trình client [2]
Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia sẻ tài nguyên trong các hệ thống phân tán Mô hình này có thể được cài đặt bằng trên nhiều môi trường phần cứng và phần mềm khác nhau Các máy tính được sử dụng để chạy các
tiến trình client/server có nhiều kiểu khác nhau và không cần thiết phải phân biệt
giữa chúng; tiến trình client và tiến trình server đều có thể chạy trên cùng một máy tính Một tiến trình server có thể sử dụng dịch vụ của một server khác
Trang 13Hình 2.1 Mô hình client server
Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ Quá trình trao đổi
dữ liệu bao gồm:
1 Truyền một yêu cầu từ tiến trình client tới tiến trình server
2 Yêu cầu được server xử lý
3 Truyền đáp ứng cho client
Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và một dạng đồng
bộ hóa cụ thể giữa client và server Tiến trình server phải nhận thức được thông điệp được yêu cầu ở bước một ngay khi nó đến và hành động phát ra yêu cầu trong client phải được tạm dừng (bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tới khi nó nhận được đáp ứng do server gửi về ở bước ba
Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send)
và nhận (receive)
Trang 14Hình 2.2 Quá trình g ửi một bản tin của mô hình client server
Quá trình giao tiếp client và server có thể diễn ra theo một t rong hai chế độ: bị phong tỏa (blocked) và không bị phong tỏa (non-blocked)
Ch ế độ bị phong tỏa (blocked):
Trong chế độ bị phong tỏa, khi tiến trình client hoặc server phát ra lệnh gửi dữ liệu (send), việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát ra
lệnh nhận dữ liệu (receive)
Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặc server) phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì việc thực thi của tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới
Chế độ không bị phong tỏa (non-blocked)
Tiếntrìnhđangphongtỏa
Tiếntrìnhđangxửlý Reply
Request
Provide service Wait
Server Client
Trang 15Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực sự, việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến trình nào phát ra lệnh nhận dữ liệu đó hay không
Tương tự cho trường hợp nhận dữliệu, khi tiến trình phát ra lệnh nhận dữ liệu, nó sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không
2.1.2 Các ki ến trúc Client/Server
2.1.2.1 Client/Server hai t ầng
Kiến trúc client/server đơn giản nhất là kiến trúc hai tầng Trong thực tế hầu hết các
kiến trúc client/server là kiến trúc hai tầng Một ứng dụng hai tầng cung cấp nhiều
trạm làm việc với một tầng trình diễn thống nhất, tầng này truyền tin với tầng lưu
trữ dữ liệu tập trung Tầng trình diễn thông thường là client và tầng lưu trữ dữ liệu
là server [9]
Hầu hết các ứng dụng Internet như là email, telnet, ftp thậm chí là cả Web là các ứng dụng hai tầng Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng client/server có xu thế sử dụng kiến trúc này
Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành cho phía client trong khi server chỉ đơn giản đóng vai trò như là chương trình kiểm soát luồng vào ra giữa ứng dụng và dữ liệu Kết quả là không chỉ hiệu năng của ứng dụng bị giảm đi do tài nguyên hạn chế của PC, mà khối lượng dữ liệu truyền đi trên mạng cũng tăng theo Khi toàn bộ ứng dụng được xử lý trên một PC, ứng dụng bắt buộc phải yêu cầu nhiều dữ liệu trước khi đưa ra bất kỳ kết quả xử lý nào cho người dùng Nhiều yêu cầu dữ liệu cũng làm giảm hiệu năng của mạng Một vấn đề thường gặp khác đối với ứng dụng hai tầng là vấn đề bảo trì Chỉ cần một thay đổi nhỏ đối với ứng dụng cũng cần phải thay đổi lại toàn bộ ứng dụng client và server
Trang 16Hình 2.3 Kiến trúc Client Server 2 tầng
2.1.2.2 Client/Server ba tầng
Ta có thể tránh được các vấn đề của kiến trúc Client/Server hai tầng bằng cách mở
rộng kiến trúc thành ba tầng Một kiến trúc ba tầng có thêm một tầng mới tách biệt
việc xử lý dữ liệu ở vị trí trung tâm
Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt nhau về mặt logic Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa Tầng
thứ hai, còn được gọi là tầng trung gian hay tầng tác nghiệp Tầng thứ ba chứa dữ
liệu cần cho ứng dụng Tầng thứ ba về cơ bản là chương trình thực hiện các lời gọi hàm để tìm kiếm dữ liệu cần thiết Tầng trình diễn nhận dữ liệu và định dạng nó để
hiển thị Sự tách biệt giữa chức năng xử lý với giao diện đã tạo nên sự linh hoạt cho
việc thiết kế ứng dụng Nhiều giao diện người dùng được xây dựng và triển khai mà không làm thay đổi logic ứng dụng
Trang 17Tầng thứ ba chứa dữ liệu cần thiết cho ứng dụng Dữ liệu này có thể bao gồm bất kỳ nguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracle, SQL Server hoặc tài liệu XML
2.1.2.3 Client/server n- tầng
Kiến trúc n-tầng được chia thành các tầng như sau:
- Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng
- Tầng logic trình diễn: xác định cách thức hiển thị giao diện người dùng
và các yêu cầu của người dùng được quản lý như thế nào
- Tầng logic tác nghiệp: mô hình hóa các quy tắc tác nghiệp
- Tầng các dịch vụ hạ tầng: cung cấp một chức năng bổ trợ cần thiết cho ứng dụng như các thành phần (truyền thông điệp, hỗ trợ giao tiếp)
Trang 18Một mạng máy tính ngang hàng (Peer – to – Peer hoặc P2P) chủ yếu dựa trên sức
mạnh tính toán và băng thông của các máy tham gia trong mạng hơn là tập trung vào một số lượng nhỏ các máy chủ (server) Mạng P2P được sử dụng điển hình cho
việc kết nối các nút thông qua những kết nối ad hoc(Ad hoc là công nghệ mới nhất trong công nghệ thông tin vô tuyến Công nghệ này cho phép các nút mạng truyền
trực tiếp với nhau sử dụng bộ thu phát không dây mà không cần bất cứ cơ sở hạ
tầng cố định nào) Những mạng như vậy có ích cho nhiều mục đích sử dụng Chia
sẻ file chứa audio, video, data hoặc mọi thứ ở định dạng số, các dữ liệu thời gian
thực, ví dụ như truyền tải giọng nói, video streaming đều có thể thực hiện với công nghệ P2P
Một mạng P2P thuần túy sẽ không có khái niệm về khách (client) và chủ (server),
mà chỉ có những nút ngang hàng thực hiện cả hai chức năng của máy chủ và máy khách đối với những nút khác trong mạng Mô hình mạng này khác với mô hình
mạng khách – chủ (server –client) mà việc giao tiếp thường là với các máy chủ trung tâm Một ví dụ điển hình cho việc truyền file theo mô hình khách – chủ là
giữa một FTP Client và một FTP Server, hai chương trình FTP Client và FTP Server có vai trò rất khác nhau, client khởi tạo việc download/upload file còn server thì tiếp nhận và phục vụ các yêu cầu đó
Mục đích quan trọng của mạng ngang hàng là trong mạng tất cả các máy tham gia đều đóng góp tài nguyên bao gồm băng thông, lưu trữ và khả năng tính toán Do đó khi càng có nhiều máy tham gia và mạng thì khả năng tổng thể của hệ thống mạng càng lớn Ngược lại, trong mô hình máy khách – chủ, nếu số lượng máy chủ là cố định thì khi số máy khách tăng lên thì khả năng chuyển dữ liệu từ các máy chủ cho
mỗi máy khách sẽ giảm xuống
Tính chất phân tán của mạng ngang hàng cũng giúp cho mạng hoạt động tốt khi một
số máy gặp sự cố Đối với cấu trúc tập trung, chỉ cần máy chủ gặp sự cố thì cả hệ
Trang 192.2.2 Phân lo ại mạng ngang hàng
Mạng ngang hàng P2P được chia làm hai loại chính: mạng ngang hàng thuần túy và
mạng ngang hàng lai ghép
2.2.2.1 M ạng ngang hàng thuần túy
Mạng ngang hàng thuần túy được chia làm 2 loại: Mạng ngang hàng có cấu trúc và
mạng ngang hàng không cấu trúc
M ạng ngang hàng không cấu trúc: là khi các liên kết giữa các nút mạng trong
mạng phủ được thiết lập ngẫu nhiên (tức là không theo quy luật nào) Những mạng như thế này dễ dàng được xây dựng vì các máy mới khi muốn tham gia mạng có thể
lấy các liên kết sẵn có có một máy khác đang ở trong mạng và sau đó dần dần tự
bản thân nó sẽ thêm vào các liên kết mới của riêng mình Khi một máy muốn tìm
một dữ liệu trong mạng đồng đẳng không cấu trúc, yêu cầu tìm kiếm sẽ được truyền trên cả mạng để tìm ra càng nhiều máy chia sẻ càng tốt Sự hiểu biết về mạng của các nút trong mạng không cấu trúc là rất ít, mỗi nút chỉ nắm bắt thông tin về những
Trang 20toàn thông qua Broadcast Chính vì vậy, với những ứng dụng cần có sự liên kết chặt
chẽ giữa các nút với nhau như multicast thì mạng ngang hàng không cấu trúc không
phải là sự lựa chọn tối ưu
M ạng ngang hàng có cấu trúc: Khắc phục nhược điểm của mạng không cấu trúc
bằng cách sử dụng hệ thống DHT (Distributed Hash Table – Bảng băm phân tán)
Hệ thống này định nghĩa liên kết giữa các nút mạng trong mạng phủ theo một thuật toán cụ thể, đồng thời xác định chặt chẽ mỗi nút mạng sẽ chịu trách nhiệm đối với
một phần dữ liệu chia s trong mạng Với cấu trúc này, khi một máy định tuyến thông báo, nó chỉ cần áp dụng một giao thức chung để xác định nút cần thông báo
và sau đó liên lạc trực tiếp đến nút mạng đó Bởi vậy việc tạo cây multicast sẽ diễn
ra rất dễ dàng và việc quản l cây cũng có nhiều thuận lợi khi các nút đều được liên
kết chặt chẽ với nhau Một số mạng ngang hàng có cấu trúc nổi tiếng bao gồm Chord, CAN, Kademlia, Pastry và Tapestry
2.2.2.2 M ạng ngang hàng lai ghép
Trong mô hình mạng ngang hàng lai ghép, tồn tại một server trung gian có trách nhiệm điều khiển hoạt động của mạng Server này lưu trữ các chỉ mục bao gồm thông tin về các nút mà nó quản lý và vị trí các cặp key – value trên mạng Các nút trong mạng phải tạo liên kết với server này Một nút muốn trao đổi thông tin với
một nút khác thì nó sẽ phải liên lạc trực tiếp với server, sau đó server sẽ tìm kiếm trong cơ sở dữ liệu và gửi lại địa chỉ nút đích Quá trình trao đổi thông tin sau đó được diễn ra trực tiếp giữa 2 nút Việc triển khai truyền tin multicast trên mạng ngang hàng lai ghép gần giống như mô hình proxy – base ALM Nhược điểm chính
của nó vẫn là chi phí cao cho các server trung gian Ứng dụng điển hình cho mô hình mạng này là Napster
Trang 212.3 So sánh mô hình P2P v ới mô hình Client/Server
- Một mạng ngang hàng cho phép
các node (PCs) đóng góp, chia sẻ
nguồn tài nguyên với nhau Tài
nguyên riêng rẽ của các node (ổ
cứng, CD-ROM, máy in … Các
nguồn tài nguyên này có thể được
truy cập từ bất cứ node nào trong
mạng
- Các node đóng vai trò như cả
Client (truy vấn thông tin) và Server
(cung cấp thông tin)
- Dữ liệu được lưu trữ ở một Server trung tâm, tốc độ cao (Tốc độ truy cập thường
lớn hơn so với mạng P2P)
- Khi một máy client yêu cầu lấy thông tin
về thời gian nó sẽ phải gửi một yêu cầu theo
một tiêu chuẩn do server định ra, nếu yêu
cầu được chấp nhận thì máy server sẽ trả về thông tin mà client yêu cầu
Trang 22Ưu,nhược điểmcủamạng P2P,Client/Server
+ Ưu điểm:
- Không cần server riêng, các client chia
sẻ tài nguyên Khi mạng càng được mở
rộng thì khả năng hoạt động của hệ
- Sử dụng được với các ứng dụng chia sẻ CSDL
- Đáng tin cậy hơn (có server riêng)
Trang 23client-rộng đã được đề xuất để tăng hiệu suất và giải quyết vấn đề trên Kỹ thuật cân bằng
tải (load balancing) và kỹ thuật sao chép (replication technique) trong hệ thống phân tán giúp giảm tải bằng việc phân phối tải trên nhiều máy chủ Ngoài ra bộ nhớ đệm cũng là một kỹ thuật sao chép bất đối xứng của dữ liệu từ phía máy chủ về phía máy khách hàng client hay được sử dụng Bộ nhớ đệm được sử dụng chọn lọc trong mô hình proxy, khi proxy được uỷ quyền nhận lệnh từ máy khách hàng đến máy chủ (proxy đóng vai trò trung gian), và thay vì trực tiếp lấy dữ liệu từ máy chủ thì proxy
có thể cung cấp dữ liệu từ bộ nhớ đệm của mình Ngoài ra proxy cũng đồng thời có
thể được sử dụng theo hướng ngược lại khi nhận uỷ quyền từ máy chủ Tuy nhiên,
những cách tiếp cận trên vẫn hoàn toàn nằm trong mô hình client-server , vì vậy nó không thể giải quyết dứt điểm vấn đề nút cổ chai của máy chủ
Khi thiết kế ứng dụng sử dụng kiến trúc client-server, các nhà thiết kế phải xem xét
sự tương tác giữa số lượng máy khách hàng và máy chủ, và trên thực tế rất nhiều khách hàng có thể truy cập đến máy chủ cùng một lúc Hơn nữa việc tập trung dữ
liệu trên hệ thống máy chủ khiến cho các hệ thống gặp rất nhiều khó khăn trong các
kỹ thuât: đồng bộ hóa , nhân rộng , an ninh, kiểm soát truy cập Mô hình P2P giải quyết những khó khăn trên bằng cách phân phối khối lượng công việc tính toán trên các máy ngang hàng (peers) Sử dụng mô hình này , sự tương tác của các thành
phần của hệ thống được thay đổi hoàn toàn, và vì vậy các giao thức và các ứng dụng thiết kế khá phức tạp Thay vì thiết kế một giao thức giữa máy khách và máy chủ, bây giờ phải tạo mối liên kết và tương tác rất phức tạp trên các máy ngang hàng
Thực chất kiến trúc P2P có khả năng giải quyết vấn đề thông tin liên lạc và tăng
hiệu suất xử lý nhưng hiện tại kiến trúc này không thực sự quan tâm và xử lý đến
vấn đề tương tác giữa các máy ngang hàng Điều này mở ra hướng kết hợp mô hình P2P và mô hình client-server trong đómô hình client server được xây dựng cho việc tương tác giữa các máy, còn mô hinh P2P được sử dụng cho phương thức lưu trữ, trao đổi dữ liệu, tính toán và các giao tiếp khác Hệ thống sẽ bao gồm cả thành phần
Trang 24Để xây dựng hệ thống trên những vấn đề tồn tại cần được giải quyết là:
- Sự tương tác giữa cấu trúc client-server và hệ thống phụ P2P
- Áp dụng hệ thống với yêu cầu ứng dụng cụ thể[5]
P2P AGENT
LOCAL PROXY LOCAL PROXY
LOCAL PROXY
USER’S HOST
Hình 2.7 Mô hình Local Proxy
- Module client: tương tự như client trong mô hình client-server